github.com/dooferlad/cmd@v0.0.0-20150716022859-3edef806220b/version_test.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the LGPLv3, see LICENSE file for details. 3 4 package cmd 5 6 import ( 7 "bytes" 8 "fmt" 9 10 gc "gopkg.in/check.v1" 11 ) 12 13 type VersionSuite struct{} 14 15 var _ = gc.Suite(&VersionSuite{}) 16 17 func (s *VersionSuite) TestVersion(c *gc.C) { 18 var stdout, stderr bytes.Buffer 19 ctx := &Context{ 20 Stdout: &stdout, 21 Stderr: &stderr, 22 } 23 const version = "999.888.777" 24 code := Main(newVersionCommand(version), ctx, nil) 25 c.Check(code, gc.Equals, 0) 26 c.Assert(stderr.String(), gc.Equals, "") 27 c.Assert(stdout.String(), gc.Equals, version+"\n") 28 } 29 30 func (s *VersionSuite) TestVersionExtraArgs(c *gc.C) { 31 var stdout, stderr bytes.Buffer 32 ctx := &Context{ 33 Stdout: &stdout, 34 Stderr: &stderr, 35 } 36 code := Main(newVersionCommand("xxx"), ctx, []string{"foo"}) 37 c.Check(code, gc.Equals, 2) 38 c.Assert(stdout.String(), gc.Equals, "") 39 c.Assert(stderr.String(), gc.Matches, "error: unrecognized args.*\n") 40 } 41 42 func (s *VersionSuite) TestVersionJson(c *gc.C) { 43 var stdout, stderr bytes.Buffer 44 ctx := &Context{ 45 Stdout: &stdout, 46 Stderr: &stderr, 47 } 48 const version = "999.888.777" 49 code := Main(newVersionCommand(version), ctx, []string{"--format", "json"}) 50 c.Check(code, gc.Equals, 0) 51 c.Assert(stderr.String(), gc.Equals, "") 52 c.Assert(stdout.String(), gc.Equals, fmt.Sprintf("%q\n", version)) 53 }