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  }