http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/NodePrime/jsonpath/path_states_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/NodePrime/jsonpath/path_states_test.go 
b/cli/vendor/github.com/NodePrime/jsonpath/path_states_test.go
deleted file mode 100644
index 42d5b41..0000000
--- a/cli/vendor/github.com/NodePrime/jsonpath/path_states_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package jsonpath
-
-import (
-       "testing"
-
-       "github.com/stretchr/testify/assert"
-)
-
-var pathTests = []lexTest{
-       {"simple root node", `$.akey`, []int{pathRoot, pathPeriod, pathKey, 
pathEOF}},
-       {"simple current node", `@.akey`, []int{pathCurrent, pathPeriod, 
pathKey, pathEOF}},
-       {"simple root node w/ value", `$.akey+`, []int{pathRoot, pathPeriod, 
pathKey, pathValue, pathEOF}},
-       {"nested object", `$.akey.akey2`, []int{pathRoot, pathPeriod, pathKey, 
pathPeriod, pathKey, pathEOF}},
-       {"nested objects", `$.akey.akey2.akey3`, []int{pathRoot, pathPeriod, 
pathKey, pathPeriod, pathKey, pathPeriod, pathKey, pathEOF}},
-       {"quoted keys", `$.akey["akey2"].akey3`, []int{pathRoot, pathPeriod, 
pathKey, pathBracketLeft, pathKey, pathBracketRight, pathPeriod, pathKey, 
pathEOF}},
-       {"wildcard key", `$.akey.*.akey3`, []int{pathRoot, pathPeriod, pathKey, 
pathPeriod, pathWildcard, pathPeriod, pathKey, pathEOF}},
-       {"wildcard index", `$.akey[*]`, []int{pathRoot, pathPeriod, pathKey, 
pathBracketLeft, pathWildcard, pathBracketRight, pathEOF}},
-       {"key with where expression", `$.akey?(@.ten = 5)`, []int{pathRoot, 
pathPeriod, pathKey, pathWhere, pathExpression, pathEOF}},
-       {"bracket notation", `$["aKey"][*][32][23:42]`, []int{pathRoot, 
pathBracketLeft, pathKey, pathBracketRight, pathBracketLeft, pathWildcard, 
pathBracketRight, pathBracketLeft, pathIndex, pathBracketRight, 
pathBracketLeft, pathIndex, pathIndexRange, pathIndex, pathBracketRight, 
pathEOF}},
-}
-
-func TestValidPaths(t *testing.T) {
-       as := assert.New(t)
-       for _, test := range pathTests {
-               lexer := NewSliceLexer([]byte(test.input), PATH)
-               types := itemsToTypes(readerToArray(lexer))
-
-               as.EqualValues(types, test.tokenTypes, "Testing of %s: 
\nactual\n\t%+v\nexpected\n\t%v", test.name, typesDescription(types, 
pathTokenNames), typesDescription(test.tokenTypes, pathTokenNames))
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/NodePrime/jsonpath/path_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/NodePrime/jsonpath/path_test.go 
b/cli/vendor/github.com/NodePrime/jsonpath/path_test.go
deleted file mode 100644
index ab7f2a2..0000000
--- a/cli/vendor/github.com/NodePrime/jsonpath/path_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package jsonpath
-
-import (
-       "testing"
-
-       "github.com/stretchr/testify/assert"
-)
-
-type optest struct {
-       name     string
-       path     string
-       expected []int
-}
-
-var optests = []optest{
-       optest{"single key (period) ", `$.aKey`, []int{opTypeName}},
-       optest{"single key (bracket)", `$["aKey"]`, []int{opTypeName}},
-       optest{"single key (period) ", `$.*`, []int{opTypeNameWild}},
-       optest{"single index", `$[12]`, []int{opTypeIndex}},
-       optest{"single key", `$[23:45]`, []int{opTypeIndexRange}},
-       optest{"single key", `$[*]`, []int{opTypeIndexWild}},
-
-       optest{"double key", `$["aKey"]["bKey"]`, []int{opTypeName, 
opTypeName}},
-       optest{"double key", `$["aKey"].bKey`, []int{opTypeName, opTypeName}},
-}
-
-func TestQueryOperators(t *testing.T) {
-       as := assert.New(t)
-
-       for _, t := range optests {
-               path, err := parsePath(t.path)
-               as.NoError(err)
-
-               as.EqualValues(len(t.expected), len(path.operators))
-
-               for x, op := range t.expected {
-                       as.EqualValues(pathTokenNames[op], 
pathTokenNames[path.operators[x].typ])
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/NodePrime/jsonpath/stack_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/NodePrime/jsonpath/stack_test.go 
b/cli/vendor/github.com/NodePrime/jsonpath/stack_test.go
deleted file mode 100644
index d1b1d2f..0000000
--- a/cli/vendor/github.com/NodePrime/jsonpath/stack_test.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package jsonpath
-
-import (
-       "testing"
-
-       "github.com/stretchr/testify/assert"
-)
-
-func TestStackPush(t *testing.T) {
-       as := assert.New(t)
-       s := newIntStack()
-
-       s.push(5)
-       as.EqualValues(s.len(), 1)
-
-       s.push(12)
-       as.EqualValues(s.len(), 2)
-}
-
-func TestStackPop(t *testing.T) {
-       as := assert.New(t)
-       s := newIntStack()
-
-       s.push(99)
-       as.EqualValues(s.len(), 1)
-
-       v, ok := s.pop()
-       as.True(ok)
-       as.EqualValues(99, v)
-
-       as.EqualValues(s.len(), 0)
-}
-
-func TestStackPeek(t *testing.T) {
-       as := assert.New(t)
-       s := newIntStack()
-
-       s.push(99)
-       v, ok := s.peek()
-       as.True(ok)
-       as.EqualValues(99, v)
-
-       s.push(54)
-       v, ok = s.peek()
-       as.True(ok)
-       as.EqualValues(54, v)
-
-       s.pop()
-       v, ok = s.peek()
-       as.True(ok)
-       as.EqualValues(99, v)
-
-       s.pop()
-       _, ok = s.peek()
-       as.False(ok)
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/app_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/app_test.go 
b/cli/vendor/github.com/urfave/cli/app_test.go
deleted file mode 100644
index 7feaf1f..0000000
--- a/cli/vendor/github.com/urfave/cli/app_test.go
+++ /dev/null
@@ -1,1047 +0,0 @@
-package cli
-
-import (
-       "bytes"
-       "errors"
-       "flag"
-       "fmt"
-       "io"
-       "io/ioutil"
-       "os"
-       "strings"
-       "testing"
-)
-
-func ExampleApp_Run() {
-       // set args for examples sake
-       os.Args = []string{"greet", "--name", "Jeremy"}
-
-       app := NewApp()
-       app.Name = "greet"
-       app.Flags = []Flag{
-               StringFlag{Name: "name", Value: "bob", Usage: "a name to say"},
-       }
-       app.Action = func(c *Context) {
-               fmt.Printf("Hello %v\n", c.String("name"))
-       }
-       app.UsageText = "app [first_arg] [second_arg]"
-       app.Author = "Harrison"
-       app.Email = "harri...@lolwut.com"
-       app.Authors = []Author{Author{Name: "Oliver Allen", Email: 
"oli...@toyshop.com"}}
-       app.Run(os.Args)
-       // Output:
-       // Hello Jeremy
-}
-
-func ExampleApp_Run_subcommand() {
-       // set args for examples sake
-       os.Args = []string{"say", "hi", "english", "--name", "Jeremy"}
-       app := NewApp()
-       app.Name = "say"
-       app.Commands = []Command{
-               {
-                       Name:        "hello",
-                       Aliases:     []string{"hi"},
-                       Usage:       "use it to see a description",
-                       Description: "This is how we describe hello the 
function",
-                       Subcommands: []Command{
-                               {
-                                       Name:        "english",
-                                       Aliases:     []string{"en"},
-                                       Usage:       "sends a greeting in 
english",
-                                       Description: "greets someone in 
english",
-                                       Flags: []Flag{
-                                               StringFlag{
-                                                       Name:  "name",
-                                                       Value: "Bob",
-                                                       Usage: "Name of the 
person to greet",
-                                               },
-                                       },
-                                       Action: func(c *Context) {
-                                               fmt.Println("Hello,", 
c.String("name"))
-                                       },
-                               },
-                       },
-               },
-       }
-
-       app.Run(os.Args)
-       // Output:
-       // Hello, Jeremy
-}
-
-func ExampleApp_Run_help() {
-       // set args for examples sake
-       os.Args = []string{"greet", "h", "describeit"}
-
-       app := NewApp()
-       app.Name = "greet"
-       app.Flags = []Flag{
-               StringFlag{Name: "name", Value: "bob", Usage: "a name to say"},
-       }
-       app.Commands = []Command{
-               {
-                       Name:        "describeit",
-                       Aliases:     []string{"d"},
-                       Usage:       "use it to see a description",
-                       Description: "This is how we describe describeit the 
function",
-                       Action: func(c *Context) {
-                               fmt.Printf("i like to describe things")
-                       },
-               },
-       }
-       app.Run(os.Args)
-       // Output:
-       // NAME:
-       //    greet describeit - use it to see a description
-       //
-       // USAGE:
-       //    greet describeit [arguments...]
-       //
-       // DESCRIPTION:
-       //    This is how we describe describeit the function
-}
-
-func ExampleApp_Run_bashComplete() {
-       // set args for examples sake
-       os.Args = []string{"greet", "--generate-bash-completion"}
-
-       app := NewApp()
-       app.Name = "greet"
-       app.EnableBashCompletion = true
-       app.Commands = []Command{
-               {
-                       Name:        "describeit",
-                       Aliases:     []string{"d"},
-                       Usage:       "use it to see a description",
-                       Description: "This is how we describe describeit the 
function",
-                       Action: func(c *Context) {
-                               fmt.Printf("i like to describe things")
-                       },
-               }, {
-                       Name:        "next",
-                       Usage:       "next example",
-                       Description: "more stuff to see when generating bash 
completion",
-                       Action: func(c *Context) {
-                               fmt.Printf("the next example")
-                       },
-               },
-       }
-
-       app.Run(os.Args)
-       // Output:
-       // describeit
-       // d
-       // next
-       // help
-       // h
-}
-
-func TestApp_Run(t *testing.T) {
-       s := ""
-
-       app := NewApp()
-       app.Action = func(c *Context) {
-               s = s + c.Args().First()
-       }
-
-       err := app.Run([]string{"command", "foo"})
-       expect(t, err, nil)
-       err = app.Run([]string{"command", "bar"})
-       expect(t, err, nil)
-       expect(t, s, "foobar")
-}
-
-var commandAppTests = []struct {
-       name     string
-       expected bool
-}{
-       {"foobar", true},
-       {"batbaz", true},
-       {"b", true},
-       {"f", true},
-       {"bat", false},
-       {"nothing", false},
-}
-
-func TestApp_Command(t *testing.T) {
-       app := NewApp()
-       fooCommand := Command{Name: "foobar", Aliases: []string{"f"}}
-       batCommand := Command{Name: "batbaz", Aliases: []string{"b"}}
-       app.Commands = []Command{
-               fooCommand,
-               batCommand,
-       }
-
-       for _, test := range commandAppTests {
-               expect(t, app.Command(test.name) != nil, test.expected)
-       }
-}
-
-func TestApp_CommandWithArgBeforeFlags(t *testing.T) {
-       var parsedOption, firstArg string
-
-       app := NewApp()
-       command := Command{
-               Name: "cmd",
-               Flags: []Flag{
-                       StringFlag{Name: "option", Value: "", Usage: "some 
option"},
-               },
-               Action: func(c *Context) {
-                       parsedOption = c.String("option")
-                       firstArg = c.Args().First()
-               },
-       }
-       app.Commands = []Command{command}
-
-       app.Run([]string{"", "cmd", "my-arg", "--option", "my-option"})
-
-       expect(t, parsedOption, "my-option")
-       expect(t, firstArg, "my-arg")
-}
-
-func TestApp_RunAsSubcommandParseFlags(t *testing.T) {
-       var context *Context
-
-       a := NewApp()
-       a.Commands = []Command{
-               {
-                       Name: "foo",
-                       Action: func(c *Context) {
-                               context = c
-                       },
-                       Flags: []Flag{
-                               StringFlag{
-                                       Name:  "lang",
-                                       Value: "english",
-                                       Usage: "language for the greeting",
-                               },
-                       },
-                       Before: func(_ *Context) error { return nil },
-               },
-       }
-       a.Run([]string{"", "foo", "--lang", "spanish", "abcd"})
-
-       expect(t, context.Args().Get(0), "abcd")
-       expect(t, context.String("lang"), "spanish")
-}
-
-func TestApp_CommandWithFlagBeforeTerminator(t *testing.T) {
-       var parsedOption string
-       var args []string
-
-       app := NewApp()
-       command := Command{
-               Name: "cmd",
-               Flags: []Flag{
-                       StringFlag{Name: "option", Value: "", Usage: "some 
option"},
-               },
-               Action: func(c *Context) {
-                       parsedOption = c.String("option")
-                       args = c.Args()
-               },
-       }
-       app.Commands = []Command{command}
-
-       app.Run([]string{"", "cmd", "my-arg", "--option", "my-option", "--", 
"--notARealFlag"})
-
-       expect(t, parsedOption, "my-option")
-       expect(t, args[0], "my-arg")
-       expect(t, args[1], "--")
-       expect(t, args[2], "--notARealFlag")
-}
-
-func TestApp_CommandWithDash(t *testing.T) {
-       var args []string
-
-       app := NewApp()
-       command := Command{
-               Name: "cmd",
-               Action: func(c *Context) {
-                       args = c.Args()
-               },
-       }
-       app.Commands = []Command{command}
-
-       app.Run([]string{"", "cmd", "my-arg", "-"})
-
-       expect(t, args[0], "my-arg")
-       expect(t, args[1], "-")
-}
-
-func TestApp_CommandWithNoFlagBeforeTerminator(t *testing.T) {
-       var args []string
-
-       app := NewApp()
-       command := Command{
-               Name: "cmd",
-               Action: func(c *Context) {
-                       args = c.Args()
-               },
-       }
-       app.Commands = []Command{command}
-
-       app.Run([]string{"", "cmd", "my-arg", "--", "notAFlagAtAll"})
-
-       expect(t, args[0], "my-arg")
-       expect(t, args[1], "--")
-       expect(t, args[2], "notAFlagAtAll")
-}
-
-func TestApp_Float64Flag(t *testing.T) {
-       var meters float64
-
-       app := NewApp()
-       app.Flags = []Flag{
-               Float64Flag{Name: "height", Value: 1.5, Usage: "Set the height, 
in meters"},
-       }
-       app.Action = func(c *Context) {
-               meters = c.Float64("height")
-       }
-
-       app.Run([]string{"", "--height", "1.93"})
-       expect(t, meters, 1.93)
-}
-
-func TestApp_ParseSliceFlags(t *testing.T) {
-       var parsedOption, firstArg string
-       var parsedIntSlice []int
-       var parsedStringSlice []string
-
-       app := NewApp()
-       command := Command{
-               Name: "cmd",
-               Flags: []Flag{
-                       IntSliceFlag{Name: "p", Value: &IntSlice{}, Usage: "set 
one or more ip addr"},
-                       StringSliceFlag{Name: "ip", Value: &StringSlice{}, 
Usage: "set one or more ports to open"},
-               },
-               Action: func(c *Context) {
-                       parsedIntSlice = c.IntSlice("p")
-                       parsedStringSlice = c.StringSlice("ip")
-                       parsedOption = c.String("option")
-                       firstArg = c.Args().First()
-               },
-       }
-       app.Commands = []Command{command}
-
-       app.Run([]string{"", "cmd", "my-arg", "-p", "22", "-p", "80", "-ip", 
"8.8.8.8", "-ip", "8.8.4.4"})
-
-       IntsEquals := func(a, b []int) bool {
-               if len(a) != len(b) {
-                       return false
-               }
-               for i, v := range a {
-                       if v != b[i] {
-                               return false
-                       }
-               }
-               return true
-       }
-
-       StrsEquals := func(a, b []string) bool {
-               if len(a) != len(b) {
-                       return false
-               }
-               for i, v := range a {
-                       if v != b[i] {
-                               return false
-                       }
-               }
-               return true
-       }
-       var expectedIntSlice = []int{22, 80}
-       var expectedStringSlice = []string{"8.8.8.8", "8.8.4.4"}
-
-       if !IntsEquals(parsedIntSlice, expectedIntSlice) {
-               t.Errorf("%v does not match %v", parsedIntSlice, 
expectedIntSlice)
-       }
-
-       if !StrsEquals(parsedStringSlice, expectedStringSlice) {
-               t.Errorf("%v does not match %v", parsedStringSlice, 
expectedStringSlice)
-       }
-}
-
-func TestApp_ParseSliceFlagsWithMissingValue(t *testing.T) {
-       var parsedIntSlice []int
-       var parsedStringSlice []string
-
-       app := NewApp()
-       command := Command{
-               Name: "cmd",
-               Flags: []Flag{
-                       IntSliceFlag{Name: "a", Usage: "set numbers"},
-                       StringSliceFlag{Name: "str", Usage: "set strings"},
-               },
-               Action: func(c *Context) {
-                       parsedIntSlice = c.IntSlice("a")
-                       parsedStringSlice = c.StringSlice("str")
-               },
-       }
-       app.Commands = []Command{command}
-
-       app.Run([]string{"", "cmd", "my-arg", "-a", "2", "-str", "A"})
-
-       var expectedIntSlice = []int{2}
-       var expectedStringSlice = []string{"A"}
-
-       if parsedIntSlice[0] != expectedIntSlice[0] {
-               t.Errorf("%v does not match %v", parsedIntSlice[0], 
expectedIntSlice[0])
-       }
-
-       if parsedStringSlice[0] != expectedStringSlice[0] {
-               t.Errorf("%v does not match %v", parsedIntSlice[0], 
expectedIntSlice[0])
-       }
-}
-
-func TestApp_DefaultStdout(t *testing.T) {
-       app := NewApp()
-
-       if app.Writer != os.Stdout {
-               t.Error("Default output writer not set.")
-       }
-}
-
-type mockWriter struct {
-       written []byte
-}
-
-func (fw *mockWriter) Write(p []byte) (n int, err error) {
-       if fw.written == nil {
-               fw.written = p
-       } else {
-               fw.written = append(fw.written, p...)
-       }
-
-       return len(p), nil
-}
-
-func (fw *mockWriter) GetWritten() (b []byte) {
-       return fw.written
-}
-
-func TestApp_SetStdout(t *testing.T) {
-       w := &mockWriter{}
-
-       app := NewApp()
-       app.Name = "test"
-       app.Writer = w
-
-       err := app.Run([]string{"help"})
-
-       if err != nil {
-               t.Fatalf("Run error: %s", err)
-       }
-
-       if len(w.written) == 0 {
-               t.Error("App did not write output to desired writer.")
-       }
-}
-
-func TestApp_BeforeFunc(t *testing.T) {
-       beforeRun, subcommandRun := false, false
-       beforeError := fmt.Errorf("fail")
-       var err error
-
-       app := NewApp()
-
-       app.Before = func(c *Context) error {
-               beforeRun = true
-               s := c.String("opt")
-               if s == "fail" {
-                       return beforeError
-               }
-
-               return nil
-       }
-
-       app.Commands = []Command{
-               Command{
-                       Name: "sub",
-                       Action: func(c *Context) {
-                               subcommandRun = true
-                       },
-               },
-       }
-
-       app.Flags = []Flag{
-               StringFlag{Name: "opt"},
-       }
-
-       // run with the Before() func succeeding
-       err = app.Run([]string{"command", "--opt", "succeed", "sub"})
-
-       if err != nil {
-               t.Fatalf("Run error: %s", err)
-       }
-
-       if beforeRun == false {
-               t.Errorf("Before() not executed when expected")
-       }
-
-       if subcommandRun == false {
-               t.Errorf("Subcommand not executed when expected")
-       }
-
-       // reset
-       beforeRun, subcommandRun = false, false
-
-       // run with the Before() func failing
-       err = app.Run([]string{"command", "--opt", "fail", "sub"})
-
-       // should be the same error produced by the Before func
-       if err != beforeError {
-               t.Errorf("Run error expected, but not received")
-       }
-
-       if beforeRun == false {
-               t.Errorf("Before() not executed when expected")
-       }
-
-       if subcommandRun == true {
-               t.Errorf("Subcommand executed when NOT expected")
-       }
-
-}
-
-func TestApp_AfterFunc(t *testing.T) {
-       afterRun, subcommandRun := false, false
-       afterError := fmt.Errorf("fail")
-       var err error
-
-       app := NewApp()
-
-       app.After = func(c *Context) error {
-               afterRun = true
-               s := c.String("opt")
-               if s == "fail" {
-                       return afterError
-               }
-
-               return nil
-       }
-
-       app.Commands = []Command{
-               Command{
-                       Name: "sub",
-                       Action: func(c *Context) {
-                               subcommandRun = true
-                       },
-               },
-       }
-
-       app.Flags = []Flag{
-               StringFlag{Name: "opt"},
-       }
-
-       // run with the After() func succeeding
-       err = app.Run([]string{"command", "--opt", "succeed", "sub"})
-
-       if err != nil {
-               t.Fatalf("Run error: %s", err)
-       }
-
-       if afterRun == false {
-               t.Errorf("After() not executed when expected")
-       }
-
-       if subcommandRun == false {
-               t.Errorf("Subcommand not executed when expected")
-       }
-
-       // reset
-       afterRun, subcommandRun = false, false
-
-       // run with the Before() func failing
-       err = app.Run([]string{"command", "--opt", "fail", "sub"})
-
-       // should be the same error produced by the Before func
-       if err != afterError {
-               t.Errorf("Run error expected, but not received")
-       }
-
-       if afterRun == false {
-               t.Errorf("After() not executed when expected")
-       }
-
-       if subcommandRun == false {
-               t.Errorf("Subcommand not executed when expected")
-       }
-}
-
-func TestAppNoHelpFlag(t *testing.T) {
-       oldFlag := HelpFlag
-       defer func() {
-               HelpFlag = oldFlag
-       }()
-
-       HelpFlag = BoolFlag{}
-
-       app := NewApp()
-       app.Writer = ioutil.Discard
-       err := app.Run([]string{"test", "-h"})
-
-       if err != flag.ErrHelp {
-               t.Errorf("expected error about missing help flag, but got: %s 
(%T)", err, err)
-       }
-}
-
-func TestAppHelpPrinter(t *testing.T) {
-       oldPrinter := HelpPrinter
-       defer func() {
-               HelpPrinter = oldPrinter
-       }()
-
-       var wasCalled = false
-       HelpPrinter = func(w io.Writer, template string, data interface{}) {
-               wasCalled = true
-       }
-
-       app := NewApp()
-       app.Run([]string{"-h"})
-
-       if wasCalled == false {
-               t.Errorf("Help printer expected to be called, but was not")
-       }
-}
-
-func TestAppVersionPrinter(t *testing.T) {
-       oldPrinter := VersionPrinter
-       defer func() {
-               VersionPrinter = oldPrinter
-       }()
-
-       var wasCalled = false
-       VersionPrinter = func(c *Context) {
-               wasCalled = true
-       }
-
-       app := NewApp()
-       ctx := NewContext(app, nil, nil)
-       ShowVersion(ctx)
-
-       if wasCalled == false {
-               t.Errorf("Version printer expected to be called, but was not")
-       }
-}
-
-func TestAppCommandNotFound(t *testing.T) {
-       beforeRun, subcommandRun := false, false
-       app := NewApp()
-
-       app.CommandNotFound = func(c *Context, command string) {
-               beforeRun = true
-       }
-
-       app.Commands = []Command{
-               Command{
-                       Name: "bar",
-                       Action: func(c *Context) {
-                               subcommandRun = true
-                       },
-               },
-       }
-
-       app.Run([]string{"command", "foo"})
-
-       expect(t, beforeRun, true)
-       expect(t, subcommandRun, false)
-}
-
-func TestGlobalFlag(t *testing.T) {
-       var globalFlag string
-       var globalFlagSet bool
-       app := NewApp()
-       app.Flags = []Flag{
-               StringFlag{Name: "global, g", Usage: "global"},
-       }
-       app.Action = func(c *Context) {
-               globalFlag = c.GlobalString("global")
-               globalFlagSet = c.GlobalIsSet("global")
-       }
-       app.Run([]string{"command", "-g", "foo"})
-       expect(t, globalFlag, "foo")
-       expect(t, globalFlagSet, true)
-
-}
-
-func TestGlobalFlagsInSubcommands(t *testing.T) {
-       subcommandRun := false
-       parentFlag := false
-       app := NewApp()
-
-       app.Flags = []Flag{
-               BoolFlag{Name: "debug, d", Usage: "Enable debugging"},
-       }
-
-       app.Commands = []Command{
-               Command{
-                       Name: "foo",
-                       Flags: []Flag{
-                               BoolFlag{Name: "parent, p", Usage: "Parent 
flag"},
-                       },
-                       Subcommands: []Command{
-                               {
-                                       Name: "bar",
-                                       Action: func(c *Context) {
-                                               if c.GlobalBool("debug") {
-                                                       subcommandRun = true
-                                               }
-                                               if c.GlobalBool("parent") {
-                                                       parentFlag = true
-                                               }
-                                       },
-                               },
-                       },
-               },
-       }
-
-       app.Run([]string{"command", "-d", "foo", "-p", "bar"})
-
-       expect(t, subcommandRun, true)
-       expect(t, parentFlag, true)
-}
-
-func TestApp_Run_CommandWithSubcommandHasHelpTopic(t *testing.T) {
-       var subcommandHelpTopics = [][]string{
-               {"command", "foo", "--help"},
-               {"command", "foo", "-h"},
-               {"command", "foo", "help"},
-       }
-
-       for _, flagSet := range subcommandHelpTopics {
-               t.Logf("==> checking with flags %v", flagSet)
-
-               app := NewApp()
-               buf := new(bytes.Buffer)
-               app.Writer = buf
-
-               subCmdBar := Command{
-                       Name:  "bar",
-                       Usage: "does bar things",
-               }
-               subCmdBaz := Command{
-                       Name:  "baz",
-                       Usage: "does baz things",
-               }
-               cmd := Command{
-                       Name:        "foo",
-                       Description: "descriptive wall of text about how it 
does foo things",
-                       Subcommands: []Command{subCmdBar, subCmdBaz},
-               }
-
-               app.Commands = []Command{cmd}
-               err := app.Run(flagSet)
-
-               if err != nil {
-                       t.Error(err)
-               }
-
-               output := buf.String()
-               t.Logf("output: %q\n", buf.Bytes())
-
-               if strings.Contains(output, "No help topic for") {
-                       t.Errorf("expect a help topic, got none: \n%q", output)
-               }
-
-               for _, shouldContain := range []string{
-                       cmd.Name, cmd.Description,
-                       subCmdBar.Name, subCmdBar.Usage,
-                       subCmdBaz.Name, subCmdBaz.Usage,
-               } {
-                       if !strings.Contains(output, shouldContain) {
-                               t.Errorf("want help to contain %q, did not: 
\n%q", shouldContain, output)
-                       }
-               }
-       }
-}
-
-func TestApp_Run_SubcommandFullPath(t *testing.T) {
-       app := NewApp()
-       buf := new(bytes.Buffer)
-       app.Writer = buf
-       app.Name = "command"
-       subCmd := Command{
-               Name:  "bar",
-               Usage: "does bar things",
-       }
-       cmd := Command{
-               Name:        "foo",
-               Description: "foo commands",
-               Subcommands: []Command{subCmd},
-       }
-       app.Commands = []Command{cmd}
-
-       err := app.Run([]string{"command", "foo", "bar", "--help"})
-       if err != nil {
-               t.Error(err)
-       }
-
-       output := buf.String()
-       if !strings.Contains(output, "command foo bar - does bar things") {
-               t.Errorf("expected full path to subcommand: %s", output)
-       }
-       if !strings.Contains(output, "command foo bar [arguments...]") {
-               t.Errorf("expected full path to subcommand: %s", output)
-       }
-}
-
-func TestApp_Run_SubcommandHelpName(t *testing.T) {
-       app := NewApp()
-       buf := new(bytes.Buffer)
-       app.Writer = buf
-       app.Name = "command"
-       subCmd := Command{
-               Name:     "bar",
-               HelpName: "custom",
-               Usage:    "does bar things",
-       }
-       cmd := Command{
-               Name:        "foo",
-               Description: "foo commands",
-               Subcommands: []Command{subCmd},
-       }
-       app.Commands = []Command{cmd}
-
-       err := app.Run([]string{"command", "foo", "bar", "--help"})
-       if err != nil {
-               t.Error(err)
-       }
-
-       output := buf.String()
-       if !strings.Contains(output, "custom - does bar things") {
-               t.Errorf("expected HelpName for subcommand: %s", output)
-       }
-       if !strings.Contains(output, "custom [arguments...]") {
-               t.Errorf("expected HelpName to subcommand: %s", output)
-       }
-}
-
-func TestApp_Run_CommandHelpName(t *testing.T) {
-       app := NewApp()
-       buf := new(bytes.Buffer)
-       app.Writer = buf
-       app.Name = "command"
-       subCmd := Command{
-               Name:  "bar",
-               Usage: "does bar things",
-       }
-       cmd := Command{
-               Name:        "foo",
-               HelpName:    "custom",
-               Description: "foo commands",
-               Subcommands: []Command{subCmd},
-       }
-       app.Commands = []Command{cmd}
-
-       err := app.Run([]string{"command", "foo", "bar", "--help"})
-       if err != nil {
-               t.Error(err)
-       }
-
-       output := buf.String()
-       if !strings.Contains(output, "command foo bar - does bar things") {
-               t.Errorf("expected full path to subcommand: %s", output)
-       }
-       if !strings.Contains(output, "command foo bar [arguments...]") {
-               t.Errorf("expected full path to subcommand: %s", output)
-       }
-}
-
-func TestApp_Run_CommandSubcommandHelpName(t *testing.T) {
-       app := NewApp()
-       buf := new(bytes.Buffer)
-       app.Writer = buf
-       app.Name = "base"
-       subCmd := Command{
-               Name:     "bar",
-               HelpName: "custom",
-               Usage:    "does bar things",
-       }
-       cmd := Command{
-               Name:        "foo",
-               Description: "foo commands",
-               Subcommands: []Command{subCmd},
-       }
-       app.Commands = []Command{cmd}
-
-       err := app.Run([]string{"command", "foo", "--help"})
-       if err != nil {
-               t.Error(err)
-       }
-
-       output := buf.String()
-       if !strings.Contains(output, "base foo - foo commands") {
-               t.Errorf("expected full path to subcommand: %s", output)
-       }
-       if !strings.Contains(output, "base foo command [command options] 
[arguments...]") {
-               t.Errorf("expected full path to subcommand: %s", output)
-       }
-}
-
-func TestApp_Run_Help(t *testing.T) {
-       var helpArguments = [][]string{{"boom", "--help"}, {"boom", "-h"}, 
{"boom", "help"}}
-
-       for _, args := range helpArguments {
-               buf := new(bytes.Buffer)
-
-               t.Logf("==> checking with arguments %v", args)
-
-               app := NewApp()
-               app.Name = "boom"
-               app.Usage = "make an explosive entrance"
-               app.Writer = buf
-               app.Action = func(c *Context) {
-                       buf.WriteString("boom I say!")
-               }
-
-               err := app.Run(args)
-               if err != nil {
-                       t.Error(err)
-               }
-
-               output := buf.String()
-               t.Logf("output: %q\n", buf.Bytes())
-
-               if !strings.Contains(output, "boom - make an explosive 
entrance") {
-                       t.Errorf("want help to contain %q, did not: \n%q", 
"boom - make an explosive entrance", output)
-               }
-       }
-}
-
-func TestApp_Run_Version(t *testing.T) {
-       var versionArguments = [][]string{{"boom", "--version"}, {"boom", "-v"}}
-
-       for _, args := range versionArguments {
-               buf := new(bytes.Buffer)
-
-               t.Logf("==> checking with arguments %v", args)
-
-               app := NewApp()
-               app.Name = "boom"
-               app.Usage = "make an explosive entrance"
-               app.Version = "0.1.0"
-               app.Writer = buf
-               app.Action = func(c *Context) {
-                       buf.WriteString("boom I say!")
-               }
-
-               err := app.Run(args)
-               if err != nil {
-                       t.Error(err)
-               }
-
-               output := buf.String()
-               t.Logf("output: %q\n", buf.Bytes())
-
-               if !strings.Contains(output, "0.1.0") {
-                       t.Errorf("want version to contain %q, did not: \n%q", 
"0.1.0", output)
-               }
-       }
-}
-
-func TestApp_Run_DoesNotOverwriteErrorFromBefore(t *testing.T) {
-       app := NewApp()
-       app.Action = func(c *Context) {}
-       app.Before = func(c *Context) error { return fmt.Errorf("before error") 
}
-       app.After = func(c *Context) error { return fmt.Errorf("after error") }
-
-       err := app.Run([]string{"foo"})
-       if err == nil {
-               t.Fatalf("expected to receive error from Run, got none")
-       }
-
-       if !strings.Contains(err.Error(), "before error") {
-               t.Errorf("expected text of error from Before method, but got 
none in \"%v\"", err)
-       }
-       if !strings.Contains(err.Error(), "after error") {
-               t.Errorf("expected text of error from After method, but got 
none in \"%v\"", err)
-       }
-}
-
-func TestApp_Run_SubcommandDoesNotOverwriteErrorFromBefore(t *testing.T) {
-       app := NewApp()
-       app.Commands = []Command{
-               Command{
-                       Subcommands: []Command{
-                               Command{
-                                       Name: "sub",
-                               },
-                       },
-                       Name:   "bar",
-                       Before: func(c *Context) error { return 
fmt.Errorf("before error") },
-                       After:  func(c *Context) error { return 
fmt.Errorf("after error") },
-               },
-       }
-
-       err := app.Run([]string{"foo", "bar"})
-       if err == nil {
-               t.Fatalf("expected to receive error from Run, got none")
-       }
-
-       if !strings.Contains(err.Error(), "before error") {
-               t.Errorf("expected text of error from Before method, but got 
none in \"%v\"", err)
-       }
-       if !strings.Contains(err.Error(), "after error") {
-               t.Errorf("expected text of error from After method, but got 
none in \"%v\"", err)
-       }
-}
-
-func TestApp_OnUsageError_WithWrongFlagValue(t *testing.T) {
-       app := NewApp()
-       app.Flags = []Flag{
-               IntFlag{Name: "flag"},
-       }
-       app.OnUsageError = func(c *Context, err error, isSubcommand bool) error 
{
-               if isSubcommand {
-                       t.Errorf("Expect no subcommand")
-               }
-               if !strings.HasPrefix(err.Error(), "invalid value \"wrong\"") {
-                       t.Errorf("Expect an invalid value error, but got 
\"%v\"", err)
-               }
-               return errors.New("intercepted: " + err.Error())
-       }
-       app.Commands = []Command{
-               Command{
-                       Name: "bar",
-               },
-       }
-
-       err := app.Run([]string{"foo", "--flag=wrong"})
-       if err == nil {
-               t.Fatalf("expected to receive error from Run, got none")
-       }
-
-       if !strings.HasPrefix(err.Error(), "intercepted: invalid value") {
-               t.Errorf("Expect an intercepted error, but got \"%v\"", err)
-       }
-}
-
-func TestApp_OnUsageError_WithWrongFlagValue_ForSubcommand(t *testing.T) {
-       app := NewApp()
-       app.Flags = []Flag{
-               IntFlag{Name: "flag"},
-       }
-       app.OnUsageError = func(c *Context, err error, isSubcommand bool) error 
{
-               if isSubcommand {
-                       t.Errorf("Expect subcommand")
-               }
-               if !strings.HasPrefix(err.Error(), "invalid value \"wrong\"") {
-                       t.Errorf("Expect an invalid value error, but got 
\"%v\"", err)
-               }
-               return errors.New("intercepted: " + err.Error())
-       }
-       app.Commands = []Command{
-               Command{
-                       Name: "bar",
-               },
-       }
-
-       err := app.Run([]string{"foo", "--flag=wrong", "bar"})
-       if err == nil {
-               t.Fatalf("expected to receive error from Run, got none")
-       }
-
-       if !strings.HasPrefix(err.Error(), "intercepted: invalid value") {
-               t.Errorf("Expect an intercepted error, but got \"%v\"", err)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/autocomplete/bash_autocomplete
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/autocomplete/bash_autocomplete 
b/cli/vendor/github.com/urfave/cli/autocomplete/bash_autocomplete
deleted file mode 100644
index 21a232f..0000000
--- a/cli/vendor/github.com/urfave/cli/autocomplete/bash_autocomplete
+++ /dev/null
@@ -1,14 +0,0 @@
-#! /bin/bash
-
-: ${PROG:=$(basename ${BASH_SOURCE})}
-
-_cli_bash_autocomplete() {
-     local cur opts base
-     COMPREPLY=()
-     cur="${COMP_WORDS[COMP_CWORD]}"
-     opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion )
-     COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
-     return 0
- }
-  
- complete -F _cli_bash_autocomplete $PROG

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/autocomplete/zsh_autocomplete
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/autocomplete/zsh_autocomplete 
b/cli/vendor/github.com/urfave/cli/autocomplete/zsh_autocomplete
deleted file mode 100644
index 5430a18..0000000
--- a/cli/vendor/github.com/urfave/cli/autocomplete/zsh_autocomplete
+++ /dev/null
@@ -1,5 +0,0 @@
-autoload -U compinit && compinit
-autoload -U bashcompinit && bashcompinit
-
-script_dir=$(dirname $0)
-source ${script_dir}/bash_autocomplete

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/command_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/command_test.go 
b/cli/vendor/github.com/urfave/cli/command_test.go
deleted file mode 100644
index 827da1d..0000000
--- a/cli/vendor/github.com/urfave/cli/command_test.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package cli
-
-import (
-       "errors"
-       "flag"
-       "fmt"
-       "io/ioutil"
-       "strings"
-       "testing"
-)
-
-func TestCommandFlagParsing(t *testing.T) {
-       cases := []struct {
-               testArgs        []string
-               skipFlagParsing bool
-               expectedErr     error
-       }{
-               {[]string{"blah", "blah", "-break"}, false, errors.New("flag 
provided but not defined: -break")}, // Test normal "not ignoring flags" flow
-               {[]string{"blah", "blah"}, true, nil},                          
                                  // Test SkipFlagParsing without any args that 
look like flags
-               {[]string{"blah", "-break"}, true, nil},                        
                                  // Test SkipFlagParsing with random flag arg
-               {[]string{"blah", "-help"}, true, nil},                         
                                  // Test SkipFlagParsing with "special" help 
flag arg
-       }
-
-       for _, c := range cases {
-               app := NewApp()
-               app.Writer = ioutil.Discard
-               set := flag.NewFlagSet("test", 0)
-               set.Parse(c.testArgs)
-
-               context := NewContext(app, set, nil)
-
-               command := Command{
-                       Name:        "test-cmd",
-                       Aliases:     []string{"tc"},
-                       Usage:       "this is for testing",
-                       Description: "testing",
-                       Action:      func(_ *Context) {},
-               }
-
-               command.SkipFlagParsing = c.skipFlagParsing
-
-               err := command.Run(context)
-
-               expect(t, err, c.expectedErr)
-               expect(t, []string(context.Args()), c.testArgs)
-       }
-}
-
-func TestCommand_Run_DoesNotOverwriteErrorFromBefore(t *testing.T) {
-       app := NewApp()
-       app.Commands = []Command{
-               Command{
-                       Name:   "bar",
-                       Before: func(c *Context) error { return 
fmt.Errorf("before error") },
-                       After:  func(c *Context) error { return 
fmt.Errorf("after error") },
-               },
-       }
-
-       err := app.Run([]string{"foo", "bar"})
-       if err == nil {
-               t.Fatalf("expected to receive error from Run, got none")
-       }
-
-       if !strings.Contains(err.Error(), "before error") {
-               t.Errorf("expected text of error from Before method, but got 
none in \"%v\"", err)
-       }
-       if !strings.Contains(err.Error(), "after error") {
-               t.Errorf("expected text of error from After method, but got 
none in \"%v\"", err)
-       }
-}
-
-func TestCommand_OnUsageError_WithWrongFlagValue(t *testing.T) {
-       app := NewApp()
-       app.Commands = []Command{
-               Command{
-                       Name:   "bar",
-                       Flags: []Flag{
-                               IntFlag{Name: "flag"},
-                       },
-                       OnUsageError: func(c *Context, err error) error {
-                               if !strings.HasPrefix(err.Error(), "invalid 
value \"wrong\"") {
-                                       t.Errorf("Expect an invalid value 
error, but got \"%v\"", err)
-                               }
-                               return errors.New("intercepted: " + err.Error())
-                       },
-               },
-       }
-
-       err := app.Run([]string{"foo", "bar", "--flag=wrong"})
-       if err == nil {
-               t.Fatalf("expected to receive error from Run, got none")
-       }
-
-       if !strings.HasPrefix(err.Error(), "intercepted: invalid value") {
-               t.Errorf("Expect an intercepted error, but got \"%v\"", err)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/context_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/context_test.go 
b/cli/vendor/github.com/urfave/cli/context_test.go
deleted file mode 100644
index 7f8e928..0000000
--- a/cli/vendor/github.com/urfave/cli/context_test.go
+++ /dev/null
@@ -1,113 +0,0 @@
-package cli
-
-import (
-       "flag"
-       "testing"
-       "time"
-)
-
-func TestNewContext(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Int("myflag", 12, "doc")
-       globalSet := flag.NewFlagSet("test", 0)
-       globalSet.Int("myflag", 42, "doc")
-       globalCtx := NewContext(nil, globalSet, nil)
-       command := Command{Name: "mycommand"}
-       c := NewContext(nil, set, globalCtx)
-       c.Command = command
-       expect(t, c.Int("myflag"), 12)
-       expect(t, c.GlobalInt("myflag"), 42)
-       expect(t, c.Command.Name, "mycommand")
-}
-
-func TestContext_Int(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Int("myflag", 12, "doc")
-       c := NewContext(nil, set, nil)
-       expect(t, c.Int("myflag"), 12)
-}
-
-func TestContext_Duration(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Duration("myflag", time.Duration(12*time.Second), "doc")
-       c := NewContext(nil, set, nil)
-       expect(t, c.Duration("myflag"), time.Duration(12*time.Second))
-}
-
-func TestContext_String(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.String("myflag", "hello world", "doc")
-       c := NewContext(nil, set, nil)
-       expect(t, c.String("myflag"), "hello world")
-}
-
-func TestContext_Bool(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Bool("myflag", false, "doc")
-       c := NewContext(nil, set, nil)
-       expect(t, c.Bool("myflag"), false)
-}
-
-func TestContext_BoolT(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Bool("myflag", true, "doc")
-       c := NewContext(nil, set, nil)
-       expect(t, c.BoolT("myflag"), true)
-}
-
-func TestContext_Args(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Bool("myflag", false, "doc")
-       c := NewContext(nil, set, nil)
-       set.Parse([]string{"--myflag", "bat", "baz"})
-       expect(t, len(c.Args()), 2)
-       expect(t, c.Bool("myflag"), true)
-}
-
-func TestContext_IsSet(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Bool("myflag", false, "doc")
-       set.String("otherflag", "hello world", "doc")
-       globalSet := flag.NewFlagSet("test", 0)
-       globalSet.Bool("myflagGlobal", true, "doc")
-       globalCtx := NewContext(nil, globalSet, nil)
-       c := NewContext(nil, set, globalCtx)
-       set.Parse([]string{"--myflag", "bat", "baz"})
-       globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"})
-       expect(t, c.IsSet("myflag"), true)
-       expect(t, c.IsSet("otherflag"), false)
-       expect(t, c.IsSet("bogusflag"), false)
-       expect(t, c.IsSet("myflagGlobal"), false)
-}
-
-func TestContext_GlobalIsSet(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Bool("myflag", false, "doc")
-       set.String("otherflag", "hello world", "doc")
-       globalSet := flag.NewFlagSet("test", 0)
-       globalSet.Bool("myflagGlobal", true, "doc")
-       globalSet.Bool("myflagGlobalUnset", true, "doc")
-       globalCtx := NewContext(nil, globalSet, nil)
-       c := NewContext(nil, set, globalCtx)
-       set.Parse([]string{"--myflag", "bat", "baz"})
-       globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"})
-       expect(t, c.GlobalIsSet("myflag"), false)
-       expect(t, c.GlobalIsSet("otherflag"), false)
-       expect(t, c.GlobalIsSet("bogusflag"), false)
-       expect(t, c.GlobalIsSet("myflagGlobal"), true)
-       expect(t, c.GlobalIsSet("myflagGlobalUnset"), false)
-       expect(t, c.GlobalIsSet("bogusGlobal"), false)
-}
-
-func TestContext_NumFlags(t *testing.T) {
-       set := flag.NewFlagSet("test", 0)
-       set.Bool("myflag", false, "doc")
-       set.String("otherflag", "hello world", "doc")
-       globalSet := flag.NewFlagSet("test", 0)
-       globalSet.Bool("myflagGlobal", true, "doc")
-       globalCtx := NewContext(nil, globalSet, nil)
-       c := NewContext(nil, set, globalCtx)
-       set.Parse([]string{"--myflag", "--otherflag=foo"})
-       globalSet.Parse([]string{"--myflagGlobal"})
-       expect(t, c.NumFlags(), 2)
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/flag_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/flag_test.go 
b/cli/vendor/github.com/urfave/cli/flag_test.go
deleted file mode 100644
index 3caa70a..0000000
--- a/cli/vendor/github.com/urfave/cli/flag_test.go
+++ /dev/null
@@ -1,859 +0,0 @@
-package cli
-
-import (
-       "fmt"
-       "os"
-       "reflect"
-       "strings"
-       "testing"
-       "runtime"
-)
-
-var boolFlagTests = []struct {
-       name     string
-       expected string
-}{
-       {"help", "--help\t"},
-       {"h", "-h\t"},
-}
-
-func TestBoolFlagHelpOutput(t *testing.T) {
-
-       for _, test := range boolFlagTests {
-               flag := BoolFlag{Name: test.name}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%s does not match %s", output, test.expected)
-               }
-       }
-}
-
-var stringFlagTests = []struct {
-       name     string
-       value    string
-       expected string
-}{
-       {"help", "", "--help \t"},
-       {"h", "", "-h \t"},
-       {"h", "", "-h \t"},
-       {"test", "Something", "--test \"Something\"\t"},
-}
-
-func TestStringFlagHelpOutput(t *testing.T) {
-
-       for _, test := range stringFlagTests {
-               flag := StringFlag{Name: test.name, Value: test.value}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%s does not match %s", output, test.expected)
-               }
-       }
-}
-
-func TestStringFlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_FOO", "derp")
-       for _, test := range stringFlagTests {
-               flag := StringFlag{Name: test.name, Value: test.value, EnvVar: 
"APP_FOO"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_FOO]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_FOO%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%s does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-var stringSliceFlagTests = []struct {
-       name     string
-       value    *StringSlice
-       expected string
-}{
-       {"help", func() *StringSlice {
-               s := &StringSlice{}
-               s.Set("")
-               return s
-       }(), "--help [--help option --help option]\t"},
-       {"h", func() *StringSlice {
-               s := &StringSlice{}
-               s.Set("")
-               return s
-       }(), "-h [-h option -h option]\t"},
-       {"h", func() *StringSlice {
-               s := &StringSlice{}
-               s.Set("")
-               return s
-       }(), "-h [-h option -h option]\t"},
-       {"test", func() *StringSlice {
-               s := &StringSlice{}
-               s.Set("Something")
-               return s
-       }(), "--test [--test option --test option]\t"},
-}
-
-func TestStringSliceFlagHelpOutput(t *testing.T) {
-
-       for _, test := range stringSliceFlagTests {
-               flag := StringSliceFlag{Name: test.name, Value: test.value}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%q does not match %q", output, test.expected)
-               }
-       }
-}
-
-func TestStringSliceFlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_QWWX", "11,4")
-       for _, test := range stringSliceFlagTests {
-               flag := StringSliceFlag{Name: test.name, Value: test.value, 
EnvVar: "APP_QWWX"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_QWWX]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_QWWX%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%q does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-var intFlagTests = []struct {
-       name     string
-       expected string
-}{
-       {"help", "--help \"0\"\t"},
-       {"h", "-h \"0\"\t"},
-}
-
-func TestIntFlagHelpOutput(t *testing.T) {
-
-       for _, test := range intFlagTests {
-               flag := IntFlag{Name: test.name}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%s does not match %s", output, test.expected)
-               }
-       }
-}
-
-func TestIntFlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_BAR", "2")
-       for _, test := range intFlagTests {
-               flag := IntFlag{Name: test.name, EnvVar: "APP_BAR"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_BAR]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_BAR%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%s does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-var durationFlagTests = []struct {
-       name     string
-       expected string
-}{
-       {"help", "--help \"0\"\t"},
-       {"h", "-h \"0\"\t"},
-}
-
-func TestDurationFlagHelpOutput(t *testing.T) {
-
-       for _, test := range durationFlagTests {
-               flag := DurationFlag{Name: test.name}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%s does not match %s", output, test.expected)
-               }
-       }
-}
-
-func TestDurationFlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_BAR", "2h3m6s")
-       for _, test := range durationFlagTests {
-               flag := DurationFlag{Name: test.name, EnvVar: "APP_BAR"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_BAR]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_BAR%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%s does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-var intSliceFlagTests = []struct {
-       name     string
-       value    *IntSlice
-       expected string
-}{
-       {"help", &IntSlice{}, "--help [--help option --help option]\t"},
-       {"h", &IntSlice{}, "-h [-h option -h option]\t"},
-       {"h", &IntSlice{}, "-h [-h option -h option]\t"},
-       {"test", func() *IntSlice {
-               i := &IntSlice{}
-               i.Set("9")
-               return i
-       }(), "--test [--test option --test option]\t"},
-}
-
-func TestIntSliceFlagHelpOutput(t *testing.T) {
-
-       for _, test := range intSliceFlagTests {
-               flag := IntSliceFlag{Name: test.name, Value: test.value}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%q does not match %q", output, test.expected)
-               }
-       }
-}
-
-func TestIntSliceFlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_SMURF", "42,3")
-       for _, test := range intSliceFlagTests {
-               flag := IntSliceFlag{Name: test.name, Value: test.value, 
EnvVar: "APP_SMURF"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_SMURF]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_SMURF%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%q does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-var float64FlagTests = []struct {
-       name     string
-       expected string
-}{
-       {"help", "--help \"0\"\t"},
-       {"h", "-h \"0\"\t"},
-}
-
-func TestFloat64FlagHelpOutput(t *testing.T) {
-
-       for _, test := range float64FlagTests {
-               flag := Float64Flag{Name: test.name}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%s does not match %s", output, test.expected)
-               }
-       }
-}
-
-func TestFloat64FlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_BAZ", "99.4")
-       for _, test := range float64FlagTests {
-               flag := Float64Flag{Name: test.name, EnvVar: "APP_BAZ"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_BAZ]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_BAZ%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%s does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-var genericFlagTests = []struct {
-       name     string
-       value    Generic
-       expected string
-}{
-       {"test", &Parser{"abc", "def"}, "--test \"abc,def\"\ttest flag"},
-       {"t", &Parser{"abc", "def"}, "-t \"abc,def\"\ttest flag"},
-}
-
-func TestGenericFlagHelpOutput(t *testing.T) {
-
-       for _, test := range genericFlagTests {
-               flag := GenericFlag{Name: test.name, Value: test.value, Usage: 
"test flag"}
-               output := flag.String()
-
-               if output != test.expected {
-                       t.Errorf("%q does not match %q", output, test.expected)
-               }
-       }
-}
-
-func TestGenericFlagWithEnvVarHelpOutput(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_ZAP", "3")
-       for _, test := range genericFlagTests {
-               flag := GenericFlag{Name: test.name, EnvVar: "APP_ZAP"}
-               output := flag.String()
-
-               expectedSuffix := " [$APP_ZAP]"
-               if runtime.GOOS == "windows" {
-                       expectedSuffix = " [%APP_ZAP%]"
-               }
-               if !strings.HasSuffix(output, expectedSuffix) {
-                       t.Errorf("%s does not end with" + expectedSuffix, 
output)
-               }
-       }
-}
-
-func TestParseMultiString(t *testing.T) {
-       (&App{
-               Flags: []Flag{
-                       StringFlag{Name: "serve, s"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.String("serve") != "10" {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.String("s") != "10" {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }).Run([]string{"run", "-s", "10"})
-}
-
-func TestParseDestinationString(t *testing.T) {
-       var dest string
-       a := App{
-               Flags: []Flag{
-                       StringFlag{
-                               Name:        "dest",
-                               Destination: &dest,
-                       },
-               },
-               Action: func(ctx *Context) {
-                       if dest != "10" {
-                               t.Errorf("expected destination String 10")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--dest", "10"})
-}
-
-func TestParseMultiStringFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_COUNT", "20")
-       (&App{
-               Flags: []Flag{
-                       StringFlag{Name: "count, c", EnvVar: "APP_COUNT"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.String("count") != "20" {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.String("c") != "20" {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }).Run([]string{"run"})
-}
-
-func TestParseMultiStringFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_COUNT", "20")
-       (&App{
-               Flags: []Flag{
-                       StringFlag{Name: "count, c", EnvVar: 
"COMPAT_COUNT,APP_COUNT"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.String("count") != "20" {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.String("c") != "20" {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }).Run([]string{"run"})
-}
-
-func TestParseMultiStringSlice(t *testing.T) {
-       (&App{
-               Flags: []Flag{
-                       StringSliceFlag{Name: "serve, s", Value: 
&StringSlice{}},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.StringSlice("serve"), 
[]string{"10", "20"}) {
-                               t.Errorf("main name not set")
-                       }
-                       if !reflect.DeepEqual(ctx.StringSlice("s"), 
[]string{"10", "20"}) {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }).Run([]string{"run", "-s", "10", "-s", "20"})
-}
-
-func TestParseMultiStringSliceFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_INTERVALS", "20,30,40")
-
-       (&App{
-               Flags: []Flag{
-                       StringSliceFlag{Name: "intervals, i", Value: 
&StringSlice{}, EnvVar: "APP_INTERVALS"},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.StringSlice("intervals"), 
[]string{"20", "30", "40"}) {
-                               t.Errorf("main name not set from env")
-                       }
-                       if !reflect.DeepEqual(ctx.StringSlice("i"), 
[]string{"20", "30", "40"}) {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }).Run([]string{"run"})
-}
-
-func TestParseMultiStringSliceFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_INTERVALS", "20,30,40")
-
-       (&App{
-               Flags: []Flag{
-                       StringSliceFlag{Name: "intervals, i", Value: 
&StringSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.StringSlice("intervals"), 
[]string{"20", "30", "40"}) {
-                               t.Errorf("main name not set from env")
-                       }
-                       if !reflect.DeepEqual(ctx.StringSlice("i"), 
[]string{"20", "30", "40"}) {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }).Run([]string{"run"})
-}
-
-func TestParseMultiInt(t *testing.T) {
-       a := App{
-               Flags: []Flag{
-                       IntFlag{Name: "serve, s"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Int("serve") != 10 {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Int("s") != 10 {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run", "-s", "10"})
-}
-
-func TestParseDestinationInt(t *testing.T) {
-       var dest int
-       a := App{
-               Flags: []Flag{
-                       IntFlag{
-                               Name:        "dest",
-                               Destination: &dest,
-                       },
-               },
-               Action: func(ctx *Context) {
-                       if dest != 10 {
-                               t.Errorf("expected destination Int 10")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--dest", "10"})
-}
-
-func TestParseMultiIntFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_TIMEOUT_SECONDS", "10")
-       a := App{
-               Flags: []Flag{
-                       IntFlag{Name: "timeout, t", EnvVar: 
"APP_TIMEOUT_SECONDS"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Int("timeout") != 10 {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Int("t") != 10 {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiIntFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_TIMEOUT_SECONDS", "10")
-       a := App{
-               Flags: []Flag{
-                       IntFlag{Name: "timeout, t", EnvVar: 
"COMPAT_TIMEOUT_SECONDS,APP_TIMEOUT_SECONDS"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Int("timeout") != 10 {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Int("t") != 10 {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiIntSlice(t *testing.T) {
-       (&App{
-               Flags: []Flag{
-                       IntSliceFlag{Name: "serve, s", Value: &IntSlice{}},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.IntSlice("serve"), []int{10, 
20}) {
-                               t.Errorf("main name not set")
-                       }
-                       if !reflect.DeepEqual(ctx.IntSlice("s"), []int{10, 20}) 
{
-                               t.Errorf("short name not set")
-                       }
-               },
-       }).Run([]string{"run", "-s", "10", "-s", "20"})
-}
-
-func TestParseMultiIntSliceFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_INTERVALS", "20,30,40")
-
-       (&App{
-               Flags: []Flag{
-                       IntSliceFlag{Name: "intervals, i", Value: &IntSlice{}, 
EnvVar: "APP_INTERVALS"},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.IntSlice("intervals"), 
[]int{20, 30, 40}) {
-                               t.Errorf("main name not set from env")
-                       }
-                       if !reflect.DeepEqual(ctx.IntSlice("i"), []int{20, 30, 
40}) {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }).Run([]string{"run"})
-}
-
-func TestParseMultiIntSliceFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_INTERVALS", "20,30,40")
-
-       (&App{
-               Flags: []Flag{
-                       IntSliceFlag{Name: "intervals, i", Value: &IntSlice{}, 
EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.IntSlice("intervals"), 
[]int{20, 30, 40}) {
-                               t.Errorf("main name not set from env")
-                       }
-                       if !reflect.DeepEqual(ctx.IntSlice("i"), []int{20, 30, 
40}) {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }).Run([]string{"run"})
-}
-
-func TestParseMultiFloat64(t *testing.T) {
-       a := App{
-               Flags: []Flag{
-                       Float64Flag{Name: "serve, s"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Float64("serve") != 10.2 {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Float64("s") != 10.2 {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run", "-s", "10.2"})
-}
-
-func TestParseDestinationFloat64(t *testing.T) {
-       var dest float64
-       a := App{
-               Flags: []Flag{
-                       Float64Flag{
-                               Name:        "dest",
-                               Destination: &dest,
-                       },
-               },
-               Action: func(ctx *Context) {
-                       if dest != 10.2 {
-                               t.Errorf("expected destination Float64 10.2")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--dest", "10.2"})
-}
-
-func TestParseMultiFloat64FromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_TIMEOUT_SECONDS", "15.5")
-       a := App{
-               Flags: []Flag{
-                       Float64Flag{Name: "timeout, t", EnvVar: 
"APP_TIMEOUT_SECONDS"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Float64("timeout") != 15.5 {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Float64("t") != 15.5 {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiFloat64FromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_TIMEOUT_SECONDS", "15.5")
-       a := App{
-               Flags: []Flag{
-                       Float64Flag{Name: "timeout, t", EnvVar: 
"COMPAT_TIMEOUT_SECONDS,APP_TIMEOUT_SECONDS"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Float64("timeout") != 15.5 {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Float64("t") != 15.5 {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiBool(t *testing.T) {
-       a := App{
-               Flags: []Flag{
-                       BoolFlag{Name: "serve, s"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Bool("serve") != true {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.Bool("s") != true {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--serve"})
-}
-
-func TestParseDestinationBool(t *testing.T) {
-       var dest bool
-       a := App{
-               Flags: []Flag{
-                       BoolFlag{
-                               Name:        "dest",
-                               Destination: &dest,
-                       },
-               },
-               Action: func(ctx *Context) {
-                       if dest != true {
-                               t.Errorf("expected destination Bool true")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--dest"})
-}
-
-func TestParseMultiBoolFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_DEBUG", "1")
-       a := App{
-               Flags: []Flag{
-                       BoolFlag{Name: "debug, d", EnvVar: "APP_DEBUG"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Bool("debug") != true {
-                               t.Errorf("main name not set from env")
-                       }
-                       if ctx.Bool("d") != true {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiBoolFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_DEBUG", "1")
-       a := App{
-               Flags: []Flag{
-                       BoolFlag{Name: "debug, d", EnvVar: 
"COMPAT_DEBUG,APP_DEBUG"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Bool("debug") != true {
-                               t.Errorf("main name not set from env")
-                       }
-                       if ctx.Bool("d") != true {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiBoolT(t *testing.T) {
-       a := App{
-               Flags: []Flag{
-                       BoolTFlag{Name: "serve, s"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.BoolT("serve") != true {
-                               t.Errorf("main name not set")
-                       }
-                       if ctx.BoolT("s") != true {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--serve"})
-}
-
-func TestParseDestinationBoolT(t *testing.T) {
-       var dest bool
-       a := App{
-               Flags: []Flag{
-                       BoolTFlag{
-                               Name:        "dest",
-                               Destination: &dest,
-                       },
-               },
-               Action: func(ctx *Context) {
-                       if dest != true {
-                               t.Errorf("expected destination BoolT true")
-                       }
-               },
-       }
-       a.Run([]string{"run", "--dest"})
-}
-
-func TestParseMultiBoolTFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_DEBUG", "0")
-       a := App{
-               Flags: []Flag{
-                       BoolTFlag{Name: "debug, d", EnvVar: "APP_DEBUG"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.BoolT("debug") != false {
-                               t.Errorf("main name not set from env")
-                       }
-                       if ctx.BoolT("d") != false {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseMultiBoolTFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_DEBUG", "0")
-       a := App{
-               Flags: []Flag{
-                       BoolTFlag{Name: "debug, d", EnvVar: 
"COMPAT_DEBUG,APP_DEBUG"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.BoolT("debug") != false {
-                               t.Errorf("main name not set from env")
-                       }
-                       if ctx.BoolT("d") != false {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-type Parser [2]string
-
-func (p *Parser) Set(value string) error {
-       parts := strings.Split(value, ",")
-       if len(parts) != 2 {
-               return fmt.Errorf("invalid format")
-       }
-
-       (*p)[0] = parts[0]
-       (*p)[1] = parts[1]
-
-       return nil
-}
-
-func (p *Parser) String() string {
-       return fmt.Sprintf("%s,%s", p[0], p[1])
-}
-
-func TestParseGeneric(t *testing.T) {
-       a := App{
-               Flags: []Flag{
-                       GenericFlag{Name: "serve, s", Value: &Parser{}},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.Generic("serve"), 
&Parser{"10", "20"}) {
-                               t.Errorf("main name not set")
-                       }
-                       if !reflect.DeepEqual(ctx.Generic("s"), &Parser{"10", 
"20"}) {
-                               t.Errorf("short name not set")
-                       }
-               },
-       }
-       a.Run([]string{"run", "-s", "10,20"})
-}
-
-func TestParseGenericFromEnv(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_SERVE", "20,30")
-       a := App{
-               Flags: []Flag{
-                       GenericFlag{Name: "serve, s", Value: &Parser{}, EnvVar: 
"APP_SERVE"},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.Generic("serve"), 
&Parser{"20", "30"}) {
-                               t.Errorf("main name not set from env")
-                       }
-                       if !reflect.DeepEqual(ctx.Generic("s"), &Parser{"20", 
"30"}) {
-                               t.Errorf("short name not set from env")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}
-
-func TestParseGenericFromEnvCascade(t *testing.T) {
-       os.Clearenv()
-       os.Setenv("APP_FOO", "99,2000")
-       a := App{
-               Flags: []Flag{
-                       GenericFlag{Name: "foos", Value: &Parser{}, EnvVar: 
"COMPAT_FOO,APP_FOO"},
-               },
-               Action: func(ctx *Context) {
-                       if !reflect.DeepEqual(ctx.Generic("foos"), 
&Parser{"99", "2000"}) {
-                               t.Errorf("value not set from env")
-                       }
-               },
-       }
-       a.Run([]string{"run"})
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/help_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/help_test.go 
b/cli/vendor/github.com/urfave/cli/help_test.go
deleted file mode 100644
index 350e263..0000000
--- a/cli/vendor/github.com/urfave/cli/help_test.go
+++ /dev/null
@@ -1,94 +0,0 @@
-package cli
-
-import (
-       "bytes"
-       "testing"
-)
-
-func Test_ShowAppHelp_NoAuthor(t *testing.T) {
-       output := new(bytes.Buffer)
-       app := NewApp()
-       app.Writer = output
-
-       c := NewContext(app, nil, nil)
-
-       ShowAppHelp(c)
-
-       if bytes.Index(output.Bytes(), []byte("AUTHOR(S):")) != -1 {
-               t.Errorf("expected\n%snot to include %s", output.String(), 
"AUTHOR(S):")
-       }
-}
-
-func Test_ShowAppHelp_NoVersion(t *testing.T) {
-       output := new(bytes.Buffer)
-       app := NewApp()
-       app.Writer = output
-
-       app.Version = ""
-
-       c := NewContext(app, nil, nil)
-
-       ShowAppHelp(c)
-
-       if bytes.Index(output.Bytes(), []byte("VERSION:")) != -1 {
-               t.Errorf("expected\n%snot to include %s", output.String(), 
"VERSION:")
-       }
-}
-
-func Test_Help_Custom_Flags(t *testing.T) {
-       oldFlag := HelpFlag
-       defer func() {
-               HelpFlag = oldFlag
-       }()
-
-       HelpFlag = BoolFlag{
-               Name:  "help, x",
-               Usage: "show help",
-       }
-
-       app := App{
-               Flags: []Flag{
-                       BoolFlag{Name: "foo, h"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Bool("h") != true {
-                               t.Errorf("custom help flag not set")
-                       }
-               },
-       }
-       output := new(bytes.Buffer)
-       app.Writer = output
-       app.Run([]string{"test", "-h"})
-       if output.Len() > 0 {
-               t.Errorf("unexpected output: %s", output.String())
-       }
-}
-
-func Test_Version_Custom_Flags(t *testing.T) {
-       oldFlag := VersionFlag
-       defer func() {
-               VersionFlag = oldFlag
-       }()
-
-       VersionFlag = BoolFlag{
-               Name:  "version, V",
-               Usage: "show version",
-       }
-
-       app := App{
-               Flags: []Flag{
-                       BoolFlag{Name: "foo, v"},
-               },
-               Action: func(ctx *Context) {
-                       if ctx.Bool("v") != true {
-                               t.Errorf("custom version flag not set")
-                       }
-               },
-       }
-       output := new(bytes.Buffer)
-       app.Writer = output
-       app.Run([]string{"test", "-v"})
-       if output.Len() > 0 {
-               t.Errorf("unexpected output: %s", output.String())
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/github.com/urfave/cli/helpers_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/github.com/urfave/cli/helpers_test.go 
b/cli/vendor/github.com/urfave/cli/helpers_test.go
deleted file mode 100644
index b1b7339..0000000
--- a/cli/vendor/github.com/urfave/cli/helpers_test.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package cli
-
-import (
-       "reflect"
-       "testing"
-)
-
-/* Test Helpers */
-func expect(t *testing.T, a interface{}, b interface{}) {
-       if !reflect.DeepEqual(a, b) {
-               t.Errorf("Expected %v (type %v) - Got %v (type %v)", b, 
reflect.TypeOf(b), a, reflect.TypeOf(a))
-       }
-}
-
-func refute(t *testing.T, a interface{}, b interface{}) {
-       if reflect.DeepEqual(a, b) {
-               t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, 
reflect.TypeOf(b), a, reflect.TypeOf(a))
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/.gitattributes
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/.gitattributes 
b/cli/vendor/golang.org/x/crypto/.gitattributes
deleted file mode 100644
index d2f212e..0000000
--- a/cli/vendor/golang.org/x/crypto/.gitattributes
+++ /dev/null
@@ -1,10 +0,0 @@
-# Treat all files in this repo as binary, with no git magic updating
-# line endings. Windows users contributing to Go will need to use a
-# modern version of git and editors capable of LF line endings.
-#
-# We'll prevent accidental CRLF line endings from entering the repo
-# via the git-review gofmt checks.
-#
-# See golang.org/issue/9281
-
-* -text

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/.gitignore
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/.gitignore 
b/cli/vendor/golang.org/x/crypto/.gitignore
deleted file mode 100644
index 8339fd6..0000000
--- a/cli/vendor/golang.org/x/crypto/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add no patterns to .hgignore except for files generated by the build.
-last-change

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/CONTRIBUTING.md 
b/cli/vendor/golang.org/x/crypto/CONTRIBUTING.md
deleted file mode 100644
index 88dff59..0000000
--- a/cli/vendor/golang.org/x/crypto/CONTRIBUTING.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Contributing to Go
-
-Go is an open source project.
-
-It is the work of hundreds of contributors. We appreciate your help!
-
-
-## Filing issues
-
-When [filing an issue](https://golang.org/issue/new), make sure to answer 
these five questions:
-
-1. What version of Go are you using (`go version`)?
-2. What operating system and processor architecture are you using?
-3. What did you do?
-4. What did you expect to see?
-5. What did you see instead?
-
-General questions should go to the [golang-nuts mailing 
list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
-The gophers there will answer or ask you to file an issue if you've tripped 
over a bug.
-
-## Contributing code
-
-Please read the [Contribution 
Guidelines](https://golang.org/doc/contribute.html)
-before sending patches.
-
-**We do not accept GitHub pull requests**
-(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
-
-Unless otherwise noted, the Go source files are distributed under
-the BSD-style license found in the LICENSE file.
-

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/README
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/README 
b/cli/vendor/golang.org/x/crypto/README
deleted file mode 100644
index f1e0cbf..0000000
--- a/cli/vendor/golang.org/x/crypto/README
+++ /dev/null
@@ -1,3 +0,0 @@
-This repository holds supplementary Go cryptography libraries.
-
-To submit changes to this repository, see 
http://golang.org/doc/contribute.html.

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bcrypt/base64.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bcrypt/base64.go 
b/cli/vendor/golang.org/x/crypto/bcrypt/base64.go
deleted file mode 100644
index fc31160..0000000
--- a/cli/vendor/golang.org/x/crypto/bcrypt/base64.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package bcrypt
-
-import "encoding/base64"
-
-const alphabet = 
"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
-
-var bcEncoding = base64.NewEncoding(alphabet)
-
-func base64Encode(src []byte) []byte {
-       n := bcEncoding.EncodedLen(len(src))
-       dst := make([]byte, n)
-       bcEncoding.Encode(dst, src)
-       for dst[n-1] == '=' {
-               n--
-       }
-       return dst[:n]
-}
-
-func base64Decode(src []byte) ([]byte, error) {
-       numOfEquals := 4 - (len(src) % 4)
-       for i := 0; i < numOfEquals; i++ {
-               src = append(src, '=')
-       }
-
-       dst := make([]byte, bcEncoding.DecodedLen(len(src)))
-       n, err := bcEncoding.Decode(dst, src)
-       if err != nil {
-               return nil, err
-       }
-       return dst[:n], nil
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt.go 
b/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt.go
deleted file mode 100644
index f8b807f..0000000
--- a/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt.go
+++ /dev/null
@@ -1,294 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing
-// algorithm. See http://www.usenix.org/event/usenix99/provos/provos.pdf
-package bcrypt // import "golang.org/x/crypto/bcrypt"
-
-// The code is a port of Provos and Mazières's C implementation.
-import (
-       "crypto/rand"
-       "crypto/subtle"
-       "errors"
-       "fmt"
-       "golang.org/x/crypto/blowfish"
-       "io"
-       "strconv"
-)
-
-const (
-       MinCost     int = 4  // the minimum allowable cost as passed in to 
GenerateFromPassword
-       MaxCost     int = 31 // the maximum allowable cost as passed in to 
GenerateFromPassword
-       DefaultCost int = 10 // the cost that will actually be set if a cost 
below MinCost is passed into GenerateFromPassword
-)
-
-// The error returned from CompareHashAndPassword when a password and hash do
-// not match.
-var ErrMismatchedHashAndPassword = errors.New("crypto/bcrypt: hashedPassword 
is not the hash of the given password")
-
-// The error returned from CompareHashAndPassword when a hash is too short to
-// be a bcrypt hash.
-var ErrHashTooShort = errors.New("crypto/bcrypt: hashedSecret too short to be 
a bcrypted password")
-
-// The error returned from CompareHashAndPassword when a hash was created with
-// a bcrypt algorithm newer than this implementation.
-type HashVersionTooNewError byte
-
-func (hv HashVersionTooNewError) Error() string {
-       return fmt.Sprintf("crypto/bcrypt: bcrypt algorithm version '%c' 
requested is newer than current version '%c'", byte(hv), majorVersion)
-}
-
-// The error returned from CompareHashAndPassword when a hash starts with 
something other than '$'
-type InvalidHashPrefixError byte
-
-func (ih InvalidHashPrefixError) Error() string {
-       return fmt.Sprintf("crypto/bcrypt: bcrypt hashes must start with '$', 
but hashedSecret started with '%c'", byte(ih))
-}
-
-type InvalidCostError int
-
-func (ic InvalidCostError) Error() string {
-       return fmt.Sprintf("crypto/bcrypt: cost %d is outside allowed range 
(%d,%d)", int(ic), int(MinCost), int(MaxCost))
-}
-
-const (
-       majorVersion       = '2'
-       minorVersion       = 'a'
-       maxSaltSize        = 16
-       maxCryptedHashSize = 23
-       encodedSaltSize    = 22
-       encodedHashSize    = 31
-       minHashSize        = 59
-)
-
-// magicCipherData is an IV for the 64 Blowfish encryption calls in
-// bcrypt(). It's the string "OrpheanBeholderScryDoubt" in big-endian bytes.
-var magicCipherData = []byte{
-       0x4f, 0x72, 0x70, 0x68,
-       0x65, 0x61, 0x6e, 0x42,
-       0x65, 0x68, 0x6f, 0x6c,
-       0x64, 0x65, 0x72, 0x53,
-       0x63, 0x72, 0x79, 0x44,
-       0x6f, 0x75, 0x62, 0x74,
-}
-
-type hashed struct {
-       hash  []byte
-       salt  []byte
-       cost  int // allowed range is MinCost to MaxCost
-       major byte
-       minor byte
-}
-
-// GenerateFromPassword returns the bcrypt hash of the password at the given
-// cost. If the cost given is less than MinCost, the cost will be set to
-// DefaultCost, instead. Use CompareHashAndPassword, as defined in this 
package,
-// to compare the returned hashed password with its cleartext version.
-func GenerateFromPassword(password []byte, cost int) ([]byte, error) {
-       p, err := newFromPassword(password, cost)
-       if err != nil {
-               return nil, err
-       }
-       return p.Hash(), nil
-}
-
-// CompareHashAndPassword compares a bcrypt hashed password with its possible
-// plaintext equivalent. Returns nil on success, or an error on failure.
-func CompareHashAndPassword(hashedPassword, password []byte) error {
-       p, err := newFromHash(hashedPassword)
-       if err != nil {
-               return err
-       }
-
-       otherHash, err := bcrypt(password, p.cost, p.salt)
-       if err != nil {
-               return err
-       }
-
-       otherP := &hashed{otherHash, p.salt, p.cost, p.major, p.minor}
-       if subtle.ConstantTimeCompare(p.Hash(), otherP.Hash()) == 1 {
-               return nil
-       }
-
-       return ErrMismatchedHashAndPassword
-}
-
-// Cost returns the hashing cost used to create the given hashed
-// password. When, in the future, the hashing cost of a password system needs
-// to be increased in order to adjust for greater computational power, this
-// function allows one to establish which passwords need to be updated.
-func Cost(hashedPassword []byte) (int, error) {
-       p, err := newFromHash(hashedPassword)
-       if err != nil {
-               return 0, err
-       }
-       return p.cost, nil
-}
-
-func newFromPassword(password []byte, cost int) (*hashed, error) {
-       if cost < MinCost {
-               cost = DefaultCost
-       }
-       p := new(hashed)
-       p.major = majorVersion
-       p.minor = minorVersion
-
-       err := checkCost(cost)
-       if err != nil {
-               return nil, err
-       }
-       p.cost = cost
-
-       unencodedSalt := make([]byte, maxSaltSize)
-       _, err = io.ReadFull(rand.Reader, unencodedSalt)
-       if err != nil {
-               return nil, err
-       }
-
-       p.salt = base64Encode(unencodedSalt)
-       hash, err := bcrypt(password, p.cost, p.salt)
-       if err != nil {
-               return nil, err
-       }
-       p.hash = hash
-       return p, err
-}
-
-func newFromHash(hashedSecret []byte) (*hashed, error) {
-       if len(hashedSecret) < minHashSize {
-               return nil, ErrHashTooShort
-       }
-       p := new(hashed)
-       n, err := p.decodeVersion(hashedSecret)
-       if err != nil {
-               return nil, err
-       }
-       hashedSecret = hashedSecret[n:]
-       n, err = p.decodeCost(hashedSecret)
-       if err != nil {
-               return nil, err
-       }
-       hashedSecret = hashedSecret[n:]
-
-       // The "+2" is here because we'll have to append at most 2 '=' to the 
salt
-       // when base64 decoding it in expensiveBlowfishSetup().
-       p.salt = make([]byte, encodedSaltSize, encodedSaltSize+2)
-       copy(p.salt, hashedSecret[:encodedSaltSize])
-
-       hashedSecret = hashedSecret[encodedSaltSize:]
-       p.hash = make([]byte, len(hashedSecret))
-       copy(p.hash, hashedSecret)
-
-       return p, nil
-}
-
-func bcrypt(password []byte, cost int, salt []byte) ([]byte, error) {
-       cipherData := make([]byte, len(magicCipherData))
-       copy(cipherData, magicCipherData)
-
-       c, err := expensiveBlowfishSetup(password, uint32(cost), salt)
-       if err != nil {
-               return nil, err
-       }
-
-       for i := 0; i < 24; i += 8 {
-               for j := 0; j < 64; j++ {
-                       c.Encrypt(cipherData[i:i+8], cipherData[i:i+8])
-               }
-       }
-
-       // Bug compatibility with C bcrypt implementations. We only encode 23 of
-       // the 24 bytes encrypted.
-       hsh := base64Encode(cipherData[:maxCryptedHashSize])
-       return hsh, nil
-}
-
-func expensiveBlowfishSetup(key []byte, cost uint32, salt []byte) 
(*blowfish.Cipher, error) {
-
-       csalt, err := base64Decode(salt)
-       if err != nil {
-               return nil, err
-       }
-
-       // Bug compatibility with C bcrypt implementations. They use the 
trailing
-       // NULL in the key string during expansion.
-       ckey := append(key, 0)
-
-       c, err := blowfish.NewSaltedCipher(ckey, csalt)
-       if err != nil {
-               return nil, err
-       }
-
-       var i, rounds uint64
-       rounds = 1 << cost
-       for i = 0; i < rounds; i++ {
-               blowfish.ExpandKey(ckey, c)
-               blowfish.ExpandKey(csalt, c)
-       }
-
-       return c, nil
-}
-
-func (p *hashed) Hash() []byte {
-       arr := make([]byte, 60)
-       arr[0] = '$'
-       arr[1] = p.major
-       n := 2
-       if p.minor != 0 {
-               arr[2] = p.minor
-               n = 3
-       }
-       arr[n] = '$'
-       n += 1
-       copy(arr[n:], []byte(fmt.Sprintf("%02d", p.cost)))
-       n += 2
-       arr[n] = '$'
-       n += 1
-       copy(arr[n:], p.salt)
-       n += encodedSaltSize
-       copy(arr[n:], p.hash)
-       n += encodedHashSize
-       return arr[:n]
-}
-
-func (p *hashed) decodeVersion(sbytes []byte) (int, error) {
-       if sbytes[0] != '$' {
-               return -1, InvalidHashPrefixError(sbytes[0])
-       }
-       if sbytes[1] > majorVersion {
-               return -1, HashVersionTooNewError(sbytes[1])
-       }
-       p.major = sbytes[1]
-       n := 3
-       if sbytes[2] != '$' {
-               p.minor = sbytes[2]
-               n++
-       }
-       return n, nil
-}
-
-// sbytes should begin where decodeVersion left off.
-func (p *hashed) decodeCost(sbytes []byte) (int, error) {
-       cost, err := strconv.Atoi(string(sbytes[0:2]))
-       if err != nil {
-               return -1, err
-       }
-       err = checkCost(cost)
-       if err != nil {
-               return -1, err
-       }
-       p.cost = cost
-       return 3, nil
-}
-
-func (p *hashed) String() string {
-       return fmt.Sprintf("&{hash: %#v, salt: %#v, cost: %d, major: %c, minor: 
%c}", string(p.hash), p.salt, p.cost, p.major, p.minor)
-}
-
-func checkCost(cost int) error {
-       if cost < MinCost || cost > MaxCost {
-               return InvalidCostError(cost)
-       }
-       return nil
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go 
b/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go
deleted file mode 100644
index f08a6f5..0000000
--- a/cli/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package bcrypt
-
-import (
-       "bytes"
-       "fmt"
-       "testing"
-)
-
-func TestBcryptingIsEasy(t *testing.T) {
-       pass := []byte("mypassword")
-       hp, err := GenerateFromPassword(pass, 0)
-       if err != nil {
-               t.Fatalf("GenerateFromPassword error: %s", err)
-       }
-
-       if CompareHashAndPassword(hp, pass) != nil {
-               t.Errorf("%v should hash %s correctly", hp, pass)
-       }
-
-       notPass := "notthepass"
-       err = CompareHashAndPassword(hp, []byte(notPass))
-       if err != ErrMismatchedHashAndPassword {
-               t.Errorf("%v and %s should be mismatched", hp, notPass)
-       }
-}
-
-func TestBcryptingIsCorrect(t *testing.T) {
-       pass := []byte("allmine")
-       salt := []byte("XajjQvNhvvRt5GSeFk1xFe")
-       expectedHash := 
[]byte("$2a$10$XajjQvNhvvRt5GSeFk1xFeyqRrsxkhBkUiQeg0dt.wU1qD4aFDcga")
-
-       hash, err := bcrypt(pass, 10, salt)
-       if err != nil {
-               t.Fatalf("bcrypt blew up: %v", err)
-       }
-       if !bytes.HasSuffix(expectedHash, hash) {
-               t.Errorf("%v should be the suffix of %v", hash, expectedHash)
-       }
-
-       h, err := newFromHash(expectedHash)
-       if err != nil {
-               t.Errorf("Unable to parse %s: %v", string(expectedHash), err)
-       }
-
-       // This is not the safe way to compare these hashes. We do this only for
-       // testing clarity. Use bcrypt.CompareHashAndPassword()
-       if err == nil && !bytes.Equal(expectedHash, h.Hash()) {
-               t.Errorf("Parsed hash %v should equal %v", h.Hash(), 
expectedHash)
-       }
-}
-
-func TestVeryShortPasswords(t *testing.T) {
-       key := []byte("k")
-       salt := []byte("XajjQvNhvvRt5GSeFk1xFe")
-       _, err := bcrypt(key, 10, salt)
-       if err != nil {
-               t.Errorf("One byte key resulted in error: %s", err)
-       }
-}
-
-func TestTooLongPasswordsWork(t *testing.T) {
-       salt := []byte("XajjQvNhvvRt5GSeFk1xFe")
-       // One byte over the usual 56 byte limit that blowfish has
-       tooLongPass := 
[]byte("012345678901234567890123456789012345678901234567890123456")
-       tooLongExpected := 
[]byte("$2a$10$XajjQvNhvvRt5GSeFk1xFe5l47dONXg781AmZtd869sO8zfsHuw7C")
-       hash, err := bcrypt(tooLongPass, 10, salt)
-       if err != nil {
-               t.Fatalf("bcrypt blew up on long password: %v", err)
-       }
-       if !bytes.HasSuffix(tooLongExpected, hash) {
-               t.Errorf("%v should be the suffix of %v", hash, tooLongExpected)
-       }
-}
-
-type InvalidHashTest struct {
-       err  error
-       hash []byte
-}
-
-var invalidTests = []InvalidHashTest{
-       {ErrHashTooShort, []byte("$2a$10$fooo")},
-       {ErrHashTooShort, []byte("$2a")},
-       {HashVersionTooNewError('3'), 
[]byte("$3a$10$sssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")},
-       {InvalidHashPrefixError('%'), 
[]byte("%2a$10$sssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")},
-       {InvalidCostError(32), 
[]byte("$2a$32$sssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")},
-}
-
-func TestInvalidHashErrors(t *testing.T) {
-       check := func(name string, expected, err error) {
-               if err == nil {
-                       t.Errorf("%s: Should have returned an error", name)
-               }
-               if err != nil && err != expected {
-                       t.Errorf("%s gave err %v but should have given %v", 
name, err, expected)
-               }
-       }
-       for _, iht := range invalidTests {
-               _, err := newFromHash(iht.hash)
-               check("newFromHash", iht.err, err)
-               err = CompareHashAndPassword(iht.hash, []byte("anything"))
-               check("CompareHashAndPassword", iht.err, err)
-       }
-}
-
-func TestUnpaddedBase64Encoding(t *testing.T) {
-       original := []byte{101, 201, 101, 75, 19, 227, 199, 20, 239, 236, 133, 
32, 30, 109, 243, 30}
-       encodedOriginal := []byte("XajjQvNhvvRt5GSeFk1xFe")
-
-       encoded := base64Encode(original)
-
-       if !bytes.Equal(encodedOriginal, encoded) {
-               t.Errorf("Encoded %v should have equaled %v", encoded, 
encodedOriginal)
-       }
-
-       decoded, err := base64Decode(encodedOriginal)
-       if err != nil {
-               t.Fatalf("base64Decode blew up: %s", err)
-       }
-
-       if !bytes.Equal(decoded, original) {
-               t.Errorf("Decoded %v should have equaled %v", decoded, original)
-       }
-}
-
-func TestCost(t *testing.T) {
-       suffix := "XajjQvNhvvRt5GSeFk1xFe5l47dONXg781AmZtd869sO8zfsHuw7C"
-       for _, vers := range []string{"2a", "2"} {
-               for _, cost := range []int{4, 10} {
-                       s := fmt.Sprintf("$%s$%02d$%s", vers, cost, suffix)
-                       h := []byte(s)
-                       actual, err := Cost(h)
-                       if err != nil {
-                               t.Errorf("Cost, error: %s", err)
-                               continue
-                       }
-                       if actual != cost {
-                               t.Errorf("Cost, expected: %d, actual: %d", 
cost, actual)
-                       }
-               }
-       }
-       _, err := Cost([]byte("$a$a$" + suffix))
-       if err == nil {
-               t.Errorf("Cost, malformed but no error returned")
-       }
-}
-
-func TestCostValidationInHash(t *testing.T) {
-       if testing.Short() {
-               return
-       }
-
-       pass := []byte("mypassword")
-
-       for c := 0; c < MinCost; c++ {
-               p, _ := newFromPassword(pass, c)
-               if p.cost != DefaultCost {
-                       t.Errorf("newFromPassword should default costs below %d 
to %d, but was %d", MinCost, DefaultCost, p.cost)
-               }
-       }
-
-       p, _ := newFromPassword(pass, 14)
-       if p.cost != 14 {
-               t.Errorf("newFromPassword should default cost to 14, but was 
%d", p.cost)
-       }
-
-       hp, _ := newFromHash(p.Hash())
-       if p.cost != hp.cost {
-               t.Errorf("newFromHash should maintain the cost at %d, but was 
%d", p.cost, hp.cost)
-       }
-
-       _, err := newFromPassword(pass, 32)
-       if err == nil {
-               t.Fatalf("newFromPassword: should return a cost error")
-       }
-       if err != InvalidCostError(32) {
-               t.Errorf("newFromPassword: should return cost error, got %#v", 
err)
-       }
-}
-
-func TestCostReturnsWithLeadingZeroes(t *testing.T) {
-       hp, _ := newFromPassword([]byte("abcdefgh"), 7)
-       cost := hp.Hash()[4:7]
-       expected := []byte("07$")
-
-       if !bytes.Equal(expected, cost) {
-               t.Errorf("single digit costs in hash should have leading zeros: 
was %v instead of %v", cost, expected)
-       }
-}
-
-func TestMinorNotRequired(t *testing.T) {
-       noMinorHash := 
[]byte("$2$10$XajjQvNhvvRt5GSeFk1xFeyqRrsxkhBkUiQeg0dt.wU1qD4aFDcga")
-       h, err := newFromHash(noMinorHash)
-       if err != nil {
-               t.Fatalf("No minor hash blew up: %s", err)
-       }
-       if h.minor != 0 {
-               t.Errorf("Should leave minor version at 0, but was %d", h.minor)
-       }
-
-       if !bytes.Equal(noMinorHash, h.Hash()) {
-               t.Errorf("Should generate hash %v, but created %v", 
noMinorHash, h.Hash())
-       }
-}
-
-func BenchmarkEqual(b *testing.B) {
-       b.StopTimer()
-       passwd := []byte("somepasswordyoulike")
-       hash, _ := GenerateFromPassword(passwd, 10)
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               CompareHashAndPassword(hash, passwd)
-       }
-}
-
-func BenchmarkGeneration(b *testing.B) {
-       b.StopTimer()
-       passwd := []byte("mylongpassword1234")
-       b.StartTimer()
-       for i := 0; i < b.N; i++ {
-               GenerateFromPassword(passwd, 10)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/blowfish/block.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/blowfish/block.go 
b/cli/vendor/golang.org/x/crypto/blowfish/block.go
deleted file mode 100644
index 9d80f19..0000000
--- a/cli/vendor/golang.org/x/crypto/blowfish/block.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package blowfish
-
-// getNextWord returns the next big-endian uint32 value from the byte slice
-// at the given position in a circular manner, updating the position.
-func getNextWord(b []byte, pos *int) uint32 {
-       var w uint32
-       j := *pos
-       for i := 0; i < 4; i++ {
-               w = w<<8 | uint32(b[j])
-               j++
-               if j >= len(b) {
-                       j = 0
-               }
-       }
-       *pos = j
-       return w
-}
-
-// ExpandKey performs a key expansion on the given *Cipher. Specifically, it
-// performs the Blowfish algorithm's key schedule which sets up the *Cipher's
-// pi and substitution tables for calls to Encrypt. This is used, primarily,
-// by the bcrypt package to reuse the Blowfish key schedule during its
-// set up. It's unlikely that you need to use this directly.
-func ExpandKey(key []byte, c *Cipher) {
-       j := 0
-       for i := 0; i < 18; i++ {
-               // Using inlined getNextWord for performance.
-               var d uint32
-               for k := 0; k < 4; k++ {
-                       d = d<<8 | uint32(key[j])
-                       j++
-                       if j >= len(key) {
-                               j = 0
-                       }
-               }
-               c.p[i] ^= d
-       }
-
-       var l, r uint32
-       for i := 0; i < 18; i += 2 {
-               l, r = encryptBlock(l, r, c)
-               c.p[i], c.p[i+1] = l, r
-       }
-
-       for i := 0; i < 256; i += 2 {
-               l, r = encryptBlock(l, r, c)
-               c.s0[i], c.s0[i+1] = l, r
-       }
-       for i := 0; i < 256; i += 2 {
-               l, r = encryptBlock(l, r, c)
-               c.s1[i], c.s1[i+1] = l, r
-       }
-       for i := 0; i < 256; i += 2 {
-               l, r = encryptBlock(l, r, c)
-               c.s2[i], c.s2[i+1] = l, r
-       }
-       for i := 0; i < 256; i += 2 {
-               l, r = encryptBlock(l, r, c)
-               c.s3[i], c.s3[i+1] = l, r
-       }
-}
-
-// This is similar to ExpandKey, but folds the salt during the key
-// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero
-// salt passed in, reusing ExpandKey turns out to be a place of inefficiency
-// and specializing it here is useful.
-func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) {
-       j := 0
-       for i := 0; i < 18; i++ {
-               c.p[i] ^= getNextWord(key, &j)
-       }
-
-       j = 0
-       var l, r uint32
-       for i := 0; i < 18; i += 2 {
-               l ^= getNextWord(salt, &j)
-               r ^= getNextWord(salt, &j)
-               l, r = encryptBlock(l, r, c)
-               c.p[i], c.p[i+1] = l, r
-       }
-
-       for i := 0; i < 256; i += 2 {
-               l ^= getNextWord(salt, &j)
-               r ^= getNextWord(salt, &j)
-               l, r = encryptBlock(l, r, c)
-               c.s0[i], c.s0[i+1] = l, r
-       }
-
-       for i := 0; i < 256; i += 2 {
-               l ^= getNextWord(salt, &j)
-               r ^= getNextWord(salt, &j)
-               l, r = encryptBlock(l, r, c)
-               c.s1[i], c.s1[i+1] = l, r
-       }
-
-       for i := 0; i < 256; i += 2 {
-               l ^= getNextWord(salt, &j)
-               r ^= getNextWord(salt, &j)
-               l, r = encryptBlock(l, r, c)
-               c.s2[i], c.s2[i+1] = l, r
-       }
-
-       for i := 0; i < 256; i += 2 {
-               l ^= getNextWord(salt, &j)
-               r ^= getNextWord(salt, &j)
-               l, r = encryptBlock(l, r, c)
-               c.s3[i], c.s3[i+1] = l, r
-       }
-}
-
-func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) {
-       xl, xr := l, r
-       xl ^= c.p[0]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[1]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[2]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[3]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[4]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[5]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[6]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[7]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[8]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[9]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[10]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[11]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[12]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[13]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[14]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[15]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[16]
-       xr ^= c.p[17]
-       return xr, xl
-}
-
-func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) {
-       xl, xr := l, r
-       xl ^= c.p[17]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[16]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[15]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[14]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[13]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[12]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[11]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[10]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[9]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[8]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[7]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[6]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[5]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[4]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[3]
-       xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + 
c.s3[byte(xl)] ^ c.p[2]
-       xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + 
c.s3[byte(xr)] ^ c.p[1]
-       xr ^= c.p[0]
-       return xr, xl
-}

Reply via email to