diff options
author | Tim Smith <tsmith@chef.io> | 2019-11-12 15:00:53 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-12 15:00:53 -0800 |
commit | 96adc544769775255a73c896ef263cbe9b6d912e (patch) | |
tree | b09d3f0d5a15e2401dc942429614b42328425401 | |
parent | c02957b8a3192c28b0963bcf32a19d44f4d5e73c (diff) | |
parent | c29b8da2b0353bb5d6e499b5d7cc79c0fadab9b3 (diff) | |
download | chef-96adc544769775255a73c896ef263cbe9b6d912e.tar.gz |
Merge pull request #9059 from MsysTechnologiesllc/VSingh/MSYS-1154_knife_list_relative_paths
[knife list] Validate name argument & raise error if no args provided
-rw-r--r-- | lib/chef/knife/list.rb | 9 | ||||
-rw-r--r-- | spec/integration/knife/list_spec.rb | 18 |
2 files changed, 18 insertions, 9 deletions
diff --git a/lib/chef/knife/list.rb b/lib/chef/knife/list.rb index e5e196ecea..03e8cf199c 100644 --- a/lib/chef/knife/list.rb +++ b/lib/chef/knife/list.rb @@ -62,10 +62,15 @@ class Chef attr_accessor :exit_code def run - patterns = name_args.length == 0 ? [""] : name_args + + if name_args.length == 0 + show_usage + ui.fatal("You must specify at least one argument. If you want to list everything in this directory, run \"knife list .\"") + exit 1 + end # Get the top-level matches - all_results = parallelize(pattern_args_from(patterns)) do |pattern| + all_results = parallelize(pattern_args_from(name_args)) do |pattern| pattern_results = Chef::ChefFS::FileSystem.list(config[:local] ? local_fs : chef_fs, pattern).to_a if pattern_results.first && !pattern_results.first.exists? && pattern.exact_path diff --git a/spec/integration/knife/list_spec.rb b/spec/integration/knife/list_spec.rb index 9689c9e6c8..145464d6d1 100644 --- a/spec/integration/knife/list_spec.rb +++ b/spec/integration/knife/list_spec.rb @@ -316,8 +316,12 @@ describe "knife list", :workstation do context "when cwd is at the top of the repository" do before { cwd "." } + it "knife list with no parameters reports an error" do + knife("list").should_fail "FATAL: You must specify at least one argument. If you want to list everything in this directory, run \"knife list .\"\n", stdout: /USAGE/ + end + it "knife list -Rfp returns everything" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM clients/ clients/chef-validator.json clients/chef-webui.json @@ -438,7 +442,7 @@ describe "knife list", :workstation do end it "knife list -Rfp returns cookbooks" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM cookbook1/ cookbook1/metadata.rb cookbook2/ @@ -457,7 +461,7 @@ describe "knife list", :workstation do before { cwd "cookbooks/cookbook2" } it "knife list -Rfp returns cookbooks" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM metadata.rb recipes/ recipes/default.rb @@ -476,7 +480,7 @@ describe "knife list", :workstation do before { cwd "cookbooks" } it "knife list -Rfp returns cookbooks" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM cookbook1/ cookbook1/metadata.rb cookbook2/ @@ -491,7 +495,7 @@ describe "knife list", :workstation do before { cwd "symlinked" } it "knife list -Rfp returns cookbooks" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM cookbook1/ cookbook1/metadata.rb cookbook2/ @@ -513,7 +517,7 @@ describe "knife list", :workstation do before { cwd "real_cookbooks" } it "knife list -Rfp returns cookbooks" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM cookbook1/ cookbook1/metadata.rb cookbook2/ @@ -528,7 +532,7 @@ describe "knife list", :workstation do before { cwd "cookbooks" } it "knife list -Rfp returns cookbooks" do - knife("list -Rfp").should_succeed <<~EOM + knife("list -Rfp .").should_succeed <<~EOM cookbook1/ cookbook1/metadata.rb cookbook2/ |