5
"launchpad.net/gnuflag"
6
. "launchpad.net/gocheck"
7
"launchpad.net/juju-core/cmd"
12
type FileVarSuite struct {
14
InvalidPath string // invalid path refers to a file which is not readable
17
var _ = Suite(&FileVarSuite{})
19
func (s *FileVarSuite) SetUpTest(c *C) {
21
s.ValidPath = filepath.Join(dir, "valid.yaml")
22
s.InvalidPath = filepath.Join(dir, "invalid.yaml")
23
f, err := os.Create(s.ValidPath)
26
f, err = os.Create(s.InvalidPath)
29
err = os.Chmod(s.InvalidPath, 0) // make unreadable
33
func (s *FileVarSuite) TestValidFileVar(c *C) {
35
err := fs.Parse(false, []string{"--config", s.ValidPath})
37
defer config.ReadCloser.Close()
38
c.Assert(config.Path, Equals, s.ValidPath)
39
c.Assert(config.ReadCloser, NotNil)
42
func (s *FileVarSuite) TestInvalidFileVar(c *C) {
44
err := fs.Parse(false, []string{"--config", s.InvalidPath})
45
c.Assert(err, ErrorMatches, ".*permission denied")
46
c.Assert(config.Path, Equals, "")
47
c.Assert(config.ReadCloser, IsNil)
50
func fs() (*gnuflag.FlagSet, *cmd.FileVar) {
51
var config cmd.FileVar
52
fs := gnuflag.NewFlagSet("", gnuflag.ContinueOnError)
53
fs.SetOutput(ioutil.Discard)
54
fs.Var(&config, "config", "the config")