From f34c900ecc89d15173003f81aba2d04c0dee2f36 Mon Sep 17 00:00:00 2001 From: Kostiantyn Kalynovskyi Date: Wed, 22 Apr 2020 21:37:41 -0500 Subject: [PATCH] Uplift cobra dependency to v0.0.6 This version is required to integrate with clusterctl. Starting v0.0.6 cobra Execute() method returns ErrSubCommandRequired if command is executed when its not runnable (Run or RuneE == nil), hence all tests that invoke such commands need to be either remove or adjusted to expect these errors Change-Id: Ia7935c1bf83d47b3a7d3a6c03d1989d53ad57a9a Relates-To: #187 --- cmd/bootstrap/bootstrap_test.go | 5 ----- .../bootstrap-cmd-with-defaults.golden | 14 ------------- cmd/cluster/cluster_test.go | 5 ----- .../cluster-cmd-with-defaults.golden | 13 ------------ .../completion-bash.golden | 15 +++++++++---- .../completion-zsh.golden | 15 +++++++++---- cmd/config/config_test.go | 5 ----- .../config-cmd-with-defaults.golden | 21 ------------------- cmd/document/document_test.go | 5 ----- .../document-with-defaults.golden | 15 ------------- cmd/root_test.go | 11 ++++++---- go.mod | 2 +- go.sum | 11 +++++----- 13 files changed, 35 insertions(+), 102 deletions(-) delete mode 100644 cmd/bootstrap/testdata/TestBootstrapGoldenOutput/bootstrap-cmd-with-defaults.golden delete mode 100644 cmd/cluster/testdata/TestNewClusterCommandReturnGoldenOutput/cluster-cmd-with-defaults.golden delete mode 100644 cmd/config/testdata/TestConfigGoldenOutput/config-cmd-with-defaults.golden delete mode 100644 cmd/document/testdata/TestDocumentGoldenOutput/document-with-defaults.golden diff --git a/cmd/bootstrap/bootstrap_test.go b/cmd/bootstrap/bootstrap_test.go index f9e3179a1..395b458e2 100644 --- a/cmd/bootstrap/bootstrap_test.go +++ b/cmd/bootstrap/bootstrap_test.go @@ -23,11 +23,6 @@ import ( func TestBootstrap(t *testing.T) { tests := []*testutil.CmdTest{ - { - Name: "bootstrap-cmd-with-defaults", - CmdLine: "", - Cmd: bootstrap.NewBootstrapCommand(nil), - }, { Name: "bootstrap-isogen-cmd-with-help", CmdLine: "isogen --help", diff --git a/cmd/bootstrap/testdata/TestBootstrapGoldenOutput/bootstrap-cmd-with-defaults.golden b/cmd/bootstrap/testdata/TestBootstrapGoldenOutput/bootstrap-cmd-with-defaults.golden deleted file mode 100644 index 7b5f7349d..000000000 --- a/cmd/bootstrap/testdata/TestBootstrapGoldenOutput/bootstrap-cmd-with-defaults.golden +++ /dev/null @@ -1,14 +0,0 @@ -Bootstrap ephemeral Kubernetes cluster - -Usage: - bootstrap [command] - -Available Commands: - help Help about any command - isogen Generate bootstrap ISO image - remotedirect Bootstrap ephemeral node - -Flags: - -h, --help help for bootstrap - -Use "bootstrap [command] --help" for more information about a command. diff --git a/cmd/cluster/cluster_test.go b/cmd/cluster/cluster_test.go index c7ec13c4e..f0e479aea 100644 --- a/cmd/cluster/cluster_test.go +++ b/cmd/cluster/cluster_test.go @@ -30,11 +30,6 @@ func TestNewClusterCommandReturn(t *testing.T) { fakeRootSettings.InitConfig() tests := []*testutil.CmdTest{ - { - Name: "cluster-cmd-with-defaults", - CmdLine: "", - Cmd: cluster.NewClusterCommand(fakeRootSettings), - }, { Name: "cluster-initinfra-cmd-with-defaults", CmdLine: "--help", diff --git a/cmd/cluster/testdata/TestNewClusterCommandReturnGoldenOutput/cluster-cmd-with-defaults.golden b/cmd/cluster/testdata/TestNewClusterCommandReturnGoldenOutput/cluster-cmd-with-defaults.golden deleted file mode 100644 index 7de0aeb8d..000000000 --- a/cmd/cluster/testdata/TestNewClusterCommandReturnGoldenOutput/cluster-cmd-with-defaults.golden +++ /dev/null @@ -1,13 +0,0 @@ -Interactions with Kubernetes cluster, such as get status, deploy initial infrastructure - -Usage: - cluster [command] - -Available Commands: - help Help about any command - initinfra deploy initinfra components to cluster - -Flags: - -h, --help help for cluster - -Use "cluster [command] --help" for more information about a command. diff --git a/cmd/completion/testdata/TestCompletionGoldenOutput/completion-bash.golden b/cmd/completion/testdata/TestCompletionGoldenOutput/completion-bash.golden index dc180cb19..07d7ebf46 100644 --- a/cmd/completion/testdata/TestCompletionGoldenOutput/completion-bash.golden +++ b/cmd/completion/testdata/TestCompletionGoldenOutput/completion-bash.golden @@ -39,6 +39,7 @@ __completion_contains_word() __completion_handle_reply() { __completion_debug "${FUNCNAME[0]}" + local comp case $cur in -*) if [[ $(type -t compopt) = "builtin" ]]; then @@ -50,7 +51,9 @@ __completion_handle_reply() else allflags=("${flags[*]} ${two_word_flags[*]}") fi - COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${allflags[*]}" -- "$cur") if [[ $(type -t compopt) = "builtin" ]]; then [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace fi @@ -100,10 +103,14 @@ __completion_handle_reply() if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then completions+=("${must_have_one_flag[@]}") fi - COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${completions[*]}" -- "$cur") if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then - COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${noun_aliases[*]}" -- "$cur") fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then @@ -138,7 +145,7 @@ __completion_handle_filename_extension_flag() __completion_handle_subdirs_in_dir_flag() { local dir="$1" - pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 + pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return } __completion_handle_flag() diff --git a/cmd/completion/testdata/TestCompletionGoldenOutput/completion-zsh.golden b/cmd/completion/testdata/TestCompletionGoldenOutput/completion-zsh.golden index bb5633565..a54566ef7 100644 --- a/cmd/completion/testdata/TestCompletionGoldenOutput/completion-zsh.golden +++ b/cmd/completion/testdata/TestCompletionGoldenOutput/completion-zsh.golden @@ -173,6 +173,7 @@ __completion_contains_word() __completion_handle_reply() { __completion_debug "${FUNCNAME[0]}" + local comp case $cur in -*) if [[ $(type -t compopt) = "builtin" ]]; then @@ -184,7 +185,9 @@ __completion_handle_reply() else allflags=("${flags[*]} ${two_word_flags[*]}") fi - COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${allflags[*]}" -- "$cur") if [[ $(type -t compopt) = "builtin" ]]; then [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace fi @@ -234,10 +237,14 @@ __completion_handle_reply() if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then completions+=("${must_have_one_flag[@]}") fi - COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${completions[*]}" -- "$cur") if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then - COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${noun_aliases[*]}" -- "$cur") fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then @@ -272,7 +279,7 @@ __completion_handle_filename_extension_flag() __completion_handle_subdirs_in_dir_flag() { local dir="$1" - pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 + pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return } __completion_handle_flag() diff --git a/cmd/config/config_test.go b/cmd/config/config_test.go index 12429b125..3980b1819 100644 --- a/cmd/config/config_test.go +++ b/cmd/config/config_test.go @@ -25,11 +25,6 @@ import ( func TestConfig(t *testing.T) { cmdTests := []*testutil.CmdTest{ - { - Name: "config-cmd-with-defaults", - CmdLine: "", - Cmd: cmd.NewConfigCommand(nil), - }, { Name: "config-cmd-with-help", CmdLine: "--help", diff --git a/cmd/config/testdata/TestConfigGoldenOutput/config-cmd-with-defaults.golden b/cmd/config/testdata/TestConfigGoldenOutput/config-cmd-with-defaults.golden deleted file mode 100644 index 4d8e91389..000000000 --- a/cmd/config/testdata/TestConfigGoldenOutput/config-cmd-with-defaults.golden +++ /dev/null @@ -1,21 +0,0 @@ -Modify airshipctl config files using subcommands -like "airshipctl config set-context my-context" - -Usage: - config [command] - -Available Commands: - get-cluster Display a specific cluster or all defined clusters if no name is provided - get-context Display a specific context, the current-context or all defined contexts if no name is provided - get-credentials Gets a user entry from the airshipctl config - help Help about any command - init Generate initial configuration files for airshipctl - set-cluster Sets a cluster entry in the airshipctl config - set-context Switch to a new context or update context values in the airshipctl config - set-credentials Sets a user entry in the airshipctl config - use-context Switch to a different airshipctl context. - -Flags: - -h, --help help for config - -Use "config [command] --help" for more information about a command. diff --git a/cmd/document/document_test.go b/cmd/document/document_test.go index ff87f5b0a..572ac5ed0 100644 --- a/cmd/document/document_test.go +++ b/cmd/document/document_test.go @@ -23,11 +23,6 @@ import ( func TestDocument(t *testing.T) { tests := []*testutil.CmdTest{ - { - Name: "document-with-defaults", - CmdLine: "", - Cmd: document.NewDocumentCommand(nil), - }, { Name: "document-render-with-help", CmdLine: "-h", diff --git a/cmd/document/testdata/TestDocumentGoldenOutput/document-with-defaults.golden b/cmd/document/testdata/TestDocumentGoldenOutput/document-with-defaults.golden deleted file mode 100644 index 53da27d7a..000000000 --- a/cmd/document/testdata/TestDocumentGoldenOutput/document-with-defaults.golden +++ /dev/null @@ -1,15 +0,0 @@ -manages deployment documents - -Usage: - document [command] - -Available Commands: - help Help about any command - plugin used as kustomize exec plugin - pull pulls documents from remote git repository - render Render documents from model - -Flags: - -h, --help help for document - -Use "document [command] --help" for more information about a command. diff --git a/cmd/root_test.go b/cmd/root_test.go index d6dec0437..a2a3fd48f 100644 --- a/cmd/root_test.go +++ b/cmd/root_test.go @@ -32,17 +32,17 @@ func TestRoot(t *testing.T) { tests := []*testutil.CmdTest{ { Name: "rootCmd-with-no-defaults", - CmdLine: "", + CmdLine: "-h", Cmd: getVanillaRootCmd(t), }, { Name: "rootCmd-with-defaults", - CmdLine: "", + CmdLine: "-h", Cmd: getDefaultRootCmd(t), }, { Name: "specialized-rootCmd-with-bootstrap", - CmdLine: "", + CmdLine: "-h", Cmd: getSpecializedRootCmd(t), }, } @@ -57,16 +57,19 @@ func TestFlagLoading(t *testing.T) { name string args []string expected string + Error error }{ { name: "default, no flags", args: []string{}, expected: "", + Error: cobra.ErrSubCommandRequired, }, { name: "alternate airshipconfig", args: []string{"--airshipconf", "/custom/path/to/airshipconfig"}, expected: "/custom/path/to/airshipconfig", + Error: cobra.ErrSubCommandRequired, }, } @@ -80,7 +83,7 @@ func TestFlagLoading(t *testing.T) { rootCmd.SetArgs(tt.args) err = rootCmd.Execute() - require.NoError(t, err) + assert.Equal(t, tt.Error, err) assert.Equal(t, settings.AirshipConfigPath, tt.expected) }) diff --git a/go.mod b/go.mod index 91511755c..e98a00c68 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/imdario/mergo v0.3.7 // indirect github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c // indirect github.com/opencontainers/image-spec v1.0.1 // indirect - github.com/spf13/cobra v0.0.5 + github.com/spf13/cobra v0.0.6 github.com/stretchr/testify v1.4.0 k8s.io/api v0.17.3 k8s.io/apiextensions-apiserver v0.17.3 diff --git a/go.sum b/go.sum index 0c23376fe..caf23ef80 100644 --- a/go.sum +++ b/go.sum @@ -68,11 +68,11 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -173,7 +173,6 @@ github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nA github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.4 h1:ixzUSnHTd6hCemgtAJgluaTSGYpLNpJY4mA2DIkdOAo= github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= @@ -328,10 +327,7 @@ github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= -github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -409,6 +405,7 @@ github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYe github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/securego/gosec v0.0.0-20191002120514-e680875ea14d/go.mod h1:w5+eXa0mYznDkHaMCXA4XYffjlH+cy1oyKbfzJXa2Do= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= @@ -417,6 +414,7 @@ github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lz github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -427,8 +425,9 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v0.0.6 h1:breEStsVwemnKh2/s6gMvSdMEkwW0sK8vGStnlVBMCs= +github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=