From 7bbf6a0d3a38c3b4f554e1fd656a64e14d3e4673 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 15 Sep 2014 15:49:07 -0700 Subject: [PATCH] config/module: NewTreeModule is easier to use --- config/module/tree.go | 21 +++++++++++++++------ config/module/tree_test.go | 21 +++++++++++---------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/config/module/tree.go b/config/module/tree.go index f37dba649f..558dcce9d5 100644 --- a/config/module/tree.go +++ b/config/module/tree.go @@ -42,8 +42,20 @@ const ( ) // NewTree returns a new Tree for the given config structure. -func NewTree(c *config.Config) *Tree { - return &Tree{config: c} +func NewTree(name string, c *config.Config) *Tree { + return &Tree{config: c, name: name} +} + +// NewTreeModule is like NewTree except it parses the configuration in +// the directory and gives it a specific name. Use a blank name "" to specify +// the root module. +func NewTreeModule(name, dir string) (*Tree, error) { + c, err := config.LoadDir(dir) + if err != nil { + return nil, err + } + + return NewTree(name, c), nil } // Children returns the children of this tree (the modules that are @@ -141,14 +153,11 @@ func (t *Tree) Load(s Storage, mode GetMode) error { } // Load the configuration - c, err := config.LoadDir(dir) + children[m.Name], err = NewTreeModule(m.Name, dir) if err != nil { return fmt.Errorf( "module %s: %s", m.Name, err) } - - children[m.Name] = NewTree(c) - children[m.Name].name = m.Name } // Go through all the children and load them. diff --git a/config/module/tree_test.go b/config/module/tree_test.go index d2fc41a5e9..95c481ddee 100644 --- a/config/module/tree_test.go +++ b/config/module/tree_test.go @@ -8,7 +8,7 @@ import ( func TestTreeLoad(t *testing.T) { storage := testStorage(t) - tree := NewTree(testConfig(t, "basic")) + tree := NewTree("", testConfig(t, "basic")) if tree.Loaded() { t.Fatal("should not be loaded") @@ -46,7 +46,7 @@ func TestTreeLoad(t *testing.T) { func TestTreeLoad_duplicate(t *testing.T) { storage := testStorage(t) - tree := NewTree(testConfig(t, "dup")) + tree := NewTree("", testConfig(t, "dup")) if tree.Loaded() { t.Fatal("should not be loaded") @@ -59,7 +59,7 @@ func TestTreeLoad_duplicate(t *testing.T) { } func TestTreeModules(t *testing.T) { - tree := NewTree(testConfig(t, "basic")) + tree := NewTree("", testConfig(t, "basic")) actual := tree.Modules() expected := []*Module{ @@ -72,7 +72,7 @@ func TestTreeModules(t *testing.T) { } func TestTreeName(t *testing.T) { - tree := NewTree(testConfig(t, "basic")) + tree := NewTree("", testConfig(t, "basic")) actual := tree.Name() if actual != "" { @@ -81,7 +81,7 @@ func TestTreeName(t *testing.T) { } func TestTreeValidate_badChild(t *testing.T) { - tree := NewTree(testConfig(t, "validate-child-bad")) + tree := NewTree("", testConfig(t, "validate-child-bad")) if err := tree.Load(testStorage(t), GetModeGet); err != nil { t.Fatalf("err: %s", err) @@ -93,7 +93,7 @@ func TestTreeValidate_badChild(t *testing.T) { } func TestTreeValidate_badChildOutput(t *testing.T) { - tree := NewTree(testConfig(t, "validate-bad-output")) + tree := NewTree("", testConfig(t, "validate-bad-output")) if err := tree.Load(testStorage(t), GetModeGet); err != nil { t.Fatalf("err: %s", err) @@ -105,7 +105,7 @@ func TestTreeValidate_badChildOutput(t *testing.T) { } func TestTreeValidate_badChildVar(t *testing.T) { - tree := NewTree(testConfig(t, "validate-bad-var")) + tree := NewTree("", testConfig(t, "validate-bad-var")) if err := tree.Load(testStorage(t), GetModeGet); err != nil { t.Fatalf("err: %s", err) @@ -117,7 +117,7 @@ func TestTreeValidate_badChildVar(t *testing.T) { } func TestTreeValidate_badRoot(t *testing.T) { - tree := NewTree(testConfig(t, "validate-root-bad")) + tree := NewTree("", testConfig(t, "validate-root-bad")) if err := tree.Load(testStorage(t), GetModeGet); err != nil { t.Fatalf("err: %s", err) @@ -129,7 +129,7 @@ func TestTreeValidate_badRoot(t *testing.T) { } func TestTreeValidate_good(t *testing.T) { - tree := NewTree(testConfig(t, "validate-child-good")) + tree := NewTree("", testConfig(t, "validate-child-good")) if err := tree.Load(testStorage(t), GetModeGet); err != nil { t.Fatalf("err: %s", err) @@ -141,13 +141,14 @@ func TestTreeValidate_good(t *testing.T) { } func TestTreeValidate_notLoaded(t *testing.T) { - tree := NewTree(testConfig(t, "basic")) + tree := NewTree("", testConfig(t, "basic")) if err := tree.Validate(); err == nil { t.Fatal("should error") } } + const treeLoadStr = ` foo