summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2019-11-12 15:00:53 -0800
committerGitHub <noreply@github.com>2019-11-12 15:00:53 -0800
commit96adc544769775255a73c896ef263cbe9b6d912e (patch)
treeb09d3f0d5a15e2401dc942429614b42328425401
parentc02957b8a3192c28b0963bcf32a19d44f4d5e73c (diff)
parentc29b8da2b0353bb5d6e499b5d7cc79c0fadab9b3 (diff)
downloadchef-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.rb9
-rw-r--r--spec/integration/knife/list_spec.rb18
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/