~rogpeppe/juju-core/438-local-instance-Addresses

« back to all changes in this revision

Viewing changes to formula/config_test.go

  • Committer: Gustavo Niemeyer
  • Date: 2011-09-05 22:26:13 UTC
  • mto: This revision was merged to the branch mainline in revision 7.
  • Revision ID: gustavo@niemeyer.net-20110905222613-7im2u2s2dbxy1a3z
Implemented initial config parsing. No variable validation using the
parsed schema yet.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
package formula_test
2
2
 
3
3
import (
 
4
        "io/ioutil"
4
5
        . "launchpad.net/gocheck"
5
6
        "launchpad.net/ensemble/go/formula"
6
7
        "path/filepath"
7
8
)
8
9
 
 
10
var sampleConfig = `
 
11
options:
 
12
  title:
 
13
    default: My Title
 
14
    description: A descriptive title used for the service.
 
15
    type: string
 
16
  outlook:
 
17
    description: No default outlook.
 
18
    type: string
 
19
  username:
 
20
    default: admin001
 
21
    description: The name of the initial account (given admin permissions).
 
22
    type: string
 
23
  skill-level:
 
24
    description: A number indicating skill.
 
25
    type: int
 
26
`
 
27
 
9
28
func repoConfig(name string) (path string) {
10
29
        return filepath.Join("testrepo", name, "config.yaml")
11
30
}
12
31
 
 
32
func assertDummyConfig(c *C, config *formula.Config) {
 
33
        c.Assert(config.Options["title"], Equals,
 
34
                formula.Option{
 
35
                        Default:     "My Title",
 
36
                        Description: "A descriptive title used for the service.",
 
37
                        Type:        "string",
 
38
                },
 
39
        )
 
40
}
 
41
 
13
42
func (s *S) TestReadConfig(c *C) {
14
43
        config, err := formula.ReadConfig(repoConfig("dummy"))
15
44
        c.Assert(err, IsNil)
16
 
        c.Assert(config.Options["title"], Equals,
 
45
        assertDummyConfig(c, config)
 
46
}
 
47
 
 
48
func (s *S) TestParseConfig(c *C) {
 
49
        data, err := ioutil.ReadFile(repoConfig("dummy"))
 
50
        c.Assert(err, IsNil)
 
51
 
 
52
        config, err := formula.ParseConfig(data)
 
53
        c.Assert(err, IsNil)
 
54
        assertDummyConfig(c, config)
 
55
}
 
56
 
 
57
func (s *S) TestConfigErrorWithPath(c *C) {
 
58
        path := filepath.Join(c.MkDir(), "mymeta.yaml")
 
59
 
 
60
        _, err := formula.ReadConfig(path)
 
61
        c.Assert(err, Matches, `.*/.*/mymeta\.yaml.*no such file.*`)
 
62
 
 
63
        data := `options: {t: {type: foo}}`
 
64
        err = ioutil.WriteFile(path, []byte(data), 0644)
 
65
        c.Assert(err, IsNil)
 
66
 
 
67
        _, err = formula.ReadConfig(path)
 
68
        c.Assert(err, Matches, `/.*/mymeta\.yaml: options.t.type: unsupported value`)
 
69
}
 
70
 
 
71
func (s *S) TestParseSample(c *C) {
 
72
        config, err := formula.ParseConfig([]byte(sampleConfig))
 
73
        c.Assert(err, IsNil)
 
74
 
 
75
        opt := config.Options
 
76
        c.Assert(opt["title"], Equals,
17
77
                formula.Option{
18
78
                        Default:     "My Title",
19
79
                        Description: "A descriptive title used for the service.",
20
80
                        Type:        "string",
21
81
                },
22
82
        )
 
83
        c.Assert(opt["outlook"], Equals,
 
84
                formula.Option{
 
85
                        Description: "No default outlook.",
 
86
                        Type:        "string",
 
87
                },
 
88
        )
 
89
        c.Assert(opt["username"], Equals,
 
90
                formula.Option{
 
91
                        Default:     "admin001",
 
92
                        Description: "The name of the initial account (given admin permissions).",
 
93
                        Type:        "string",
 
94
                },
 
95
        )
 
96
        c.Assert(opt["skill-level"], Equals,
 
97
                formula.Option{
 
98
                        Description: "A number indicating skill.",
 
99
                        Type:        "int",
 
100
                },
 
101
        )
23
102
}