summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-05-30 16:01:14 -0700
committerTim Smith <tsmith@chef.io>2018-11-01 13:19:01 -0700
commit536aa37f721bfbc89bba46cf0dc89c7edb4d3123 (patch)
treecffb821e03d88e07de36c36a54b5967b55a9edb3
parentdafb29b48a322ba5480fe7315708d5bbb552424e (diff)
downloadchef-536aa37f721bfbc89bba46cf0dc89c7edb4d3123.tar.gz
Remove knife cookbook test feature
We deprecated this during the Chef 13 cycle. It's time to fully remove it. Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/chef/knife/cookbook_test.rb95
-rw-r--r--spec/unit/knife/cookbook_test_spec.rb84
2 files changed, 0 insertions, 179 deletions
diff --git a/lib/chef/knife/cookbook_test.rb b/lib/chef/knife/cookbook_test.rb
deleted file mode 100644
index 2f600bf964..0000000000
--- a/lib/chef/knife/cookbook_test.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# Author:: Adam Jacob (<adam@chef.io>)
-# Author:: Matthew Kent (<mkent@magoazul.com>)
-# Copyright:: Copyright 2009-2018, Chef Software Inc.
-# Copyright:: Copyright 2010-2016, Matthew Kent
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-require "chef/knife"
-
-class Chef
- class Knife
- class CookbookTest < Knife
-
- deps do
- require "chef/cookbook_loader"
- require "chef/cookbook/syntax_check"
- end
-
- banner "knife cookbook test [COOKBOOKS...] (options)"
-
- option :cookbook_path,
- short: "-o PATH:PATH",
- long: "--cookbook-path PATH:PATH",
- description: "A colon-separated path to look for cookbooks in",
- proc: lambda { |o| o.split(":") }
-
- option :all,
- short: "-a",
- long: "--all",
- description: "Test all cookbooks, rather than just a single cookbook"
-
- def run
- ui.warn("DEPRECATED: Please use ChefSpec or Cookstyle to syntax-check cookbooks.")
- config[:cookbook_path] ||= Chef::Config[:cookbook_path]
-
- checked_a_cookbook = false
- if config[:all]
- cl = cookbook_loader
- cl.load_cookbooks
- cl.each_key do |key|
- checked_a_cookbook = true
- test_cookbook(key)
- end
- else
- @name_args.each do |cb|
- ui.info "checking #{cb}"
- next unless cookbook_loader.cookbook_exists?(cb)
- checked_a_cookbook = true
- test_cookbook(cb)
- end
- end
- unless checked_a_cookbook
- ui.warn("No cookbooks to test in #{Array(config[:cookbook_path]).join(',')} - is your cookbook path misconfigured?")
- end
- end
-
- def test_cookbook(cookbook)
- ui.info("Running syntax check on #{cookbook}")
- Array(config[:cookbook_path]).reverse_each do |path|
- syntax_checker = Chef::Cookbook::SyntaxCheck.for_cookbook(cookbook, path)
- test_ruby(syntax_checker)
- test_templates(syntax_checker)
- end
- end
-
- def test_ruby(syntax_checker)
- ui.info("Validating ruby files")
- exit(1) unless syntax_checker.validate_ruby_files
- end
-
- def test_templates(syntax_checker)
- ui.info("Validating templates")
- exit(1) unless syntax_checker.validate_templates
- end
-
- def cookbook_loader
- @cookbook_loader ||= Chef::CookbookLoader.new(config[:cookbook_path])
- end
-
- end
- end
-end
diff --git a/spec/unit/knife/cookbook_test_spec.rb b/spec/unit/knife/cookbook_test_spec.rb
deleted file mode 100644
index dd5d4f096a..0000000000
--- a/spec/unit/knife/cookbook_test_spec.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Author:: Stephen Delano (<stephen@chef.io>)$
-# Author:: Matthew Kent (<mkent@magoazul.com>)
-# Copyright:: Copyright 2010-2018, Chef Software Inc.$
-# Copyright:: Copyright 2010-2016, Matthew Kent
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-require "spec_helper"
-Chef::Knife::CookbookTest.load_deps
-
-describe Chef::Knife::CookbookTest do
- before(:each) do
- Chef::Config[:node_name] = "webmonkey.example.com"
- @knife = Chef::Knife::CookbookTest.new
- @knife.config[:cookbook_path] = File.join(CHEF_SPEC_DATA, "cookbooks")
- allow(@knife.cookbook_loader).to receive(:cookbook_exists?).and_return(true)
- @cookbooks = []
- %w{tats central_market jimmy_johns pho}.each do |cookbook_name|
- @cookbooks << Chef::CookbookVersion.new(cookbook_name)
- end
- @stdout = StringIO.new
- allow(@knife.ui).to receive(:stdout).and_return(@stdout)
- end
-
- describe "run" do
- it "should test the cookbook" do
- allow(@knife).to receive(:test_cookbook).and_return(true)
- @knife.name_args = ["italian"]
- expect(@knife).to receive(:test_cookbook).with("italian")
- @knife.run
- end
-
- it "should test multiple cookbooks when provided" do
- allow(@knife).to receive(:test_cookbook).and_return(true)
- @knife.name_args = %w{tats jimmy_johns}
- expect(@knife).to receive(:test_cookbook).with("tats")
- expect(@knife).to receive(:test_cookbook).with("jimmy_johns")
- expect(@knife).not_to receive(:test_cookbook).with("central_market")
- expect(@knife).not_to receive(:test_cookbook).with("pho")
- @knife.run
- end
-
- it "should test both ruby and templates" do
- @knife.name_args = ["example"]
- expect(@knife.config[:cookbook_path]).not_to be_empty
- Array(@knife.config[:cookbook_path]).reverse_each do |path|
- expect(@knife).to receive(:test_ruby).with(an_instance_of(Chef::Cookbook::SyntaxCheck))
- expect(@knife).to receive(:test_templates).with(an_instance_of(Chef::Cookbook::SyntaxCheck))
- end
- @knife.run
- end
-
- describe "with -a or --all" do
- it "should test all of the cookbooks" do
- allow(@knife).to receive(:test_cookbook).and_return(true)
- @knife.config[:all] = true
- @loader = {}
- allow(@loader).to receive(:load_cookbooks).and_return(@loader)
- @cookbooks.each do |cookbook|
- @loader[cookbook.name] = cookbook
- end
- allow(@knife).to receive(:cookbook_loader).and_return(@loader)
- @loader.each_value do |cookbook|
- expect(@knife).to receive(:test_cookbook).with(cookbook.name)
- end
- @knife.run
- end
- end
-
- end
-end