github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/cmd/version_test.go (about)

     1  // Copyright 2012, 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package cmd
     5  
     6  import (
     7  	"bytes"
     8  	"fmt"
     9  
    10  	gc "launchpad.net/gocheck"
    11  
    12  	"launchpad.net/juju-core/version"
    13  )
    14  
    15  type VersionSuite struct{}
    16  
    17  var _ = gc.Suite(&VersionSuite{})
    18  
    19  func (s *VersionSuite) TestVersion(c *gc.C) {
    20  	var stdout, stderr bytes.Buffer
    21  	ctx := &Context{
    22  		Stdout: &stdout,
    23  		Stderr: &stderr,
    24  	}
    25  	code := Main(&VersionCommand{}, ctx, nil)
    26  	c.Check(code, gc.Equals, 0)
    27  	c.Assert(stderr.String(), gc.Equals, "")
    28  	c.Assert(stdout.String(), gc.Equals, version.Current.String()+"\n")
    29  }
    30  
    31  func (s *VersionSuite) TestVersionExtraArgs(c *gc.C) {
    32  	var stdout, stderr bytes.Buffer
    33  	ctx := &Context{
    34  		Stdout: &stdout,
    35  		Stderr: &stderr,
    36  	}
    37  	code := Main(&VersionCommand{}, ctx, []string{"foo"})
    38  	c.Check(code, gc.Equals, 2)
    39  	c.Assert(stdout.String(), gc.Equals, "")
    40  	c.Assert(stderr.String(), gc.Matches, "error: unrecognized args.*\n")
    41  }
    42  
    43  func (s *VersionSuite) TestVersionJson(c *gc.C) {
    44  	var stdout, stderr bytes.Buffer
    45  	ctx := &Context{
    46  		Stdout: &stdout,
    47  		Stderr: &stderr,
    48  	}
    49  	code := Main(&VersionCommand{}, 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.Current.String()))
    53  }