summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2015-09-30 16:01:27 -0700
committerJohn Keiser <john@johnkeiser.com>2015-09-30 16:01:27 -0700
commit8c042622fbf94acca813bd6d84d967d2ea08ec43 (patch)
tree97b3c69c95b11c0ea902990983593cb91426c2eb
parentbfe6fda62c566f6b55903f1fcc531a277d506555 (diff)
parent949d18e80262dff407a5089c201619afb5c2221e (diff)
downloadchef-8c042622fbf94acca813bd6d84d967d2ea08ec43.tar.gz
Merge branch 'jk/external-tests'
-rw-r--r--.travis.yml36
-rw-r--r--Gemfile16
-rw-r--r--chef.gemspec2
-rw-r--r--external_tests/chef-rewind.gemfile5
-rw-r--r--external_tests/chef-sugar.gemfile6
-rw-r--r--external_tests/chefspec.gemfile7
-rw-r--r--external_tests/foodcritic.gemfile9
-rw-r--r--external_tests/halite.gemfile8
-rw-r--r--external_tests/poise.gemfile7
-rw-r--r--tasks/external_tests.rb70
10 files changed, 96 insertions, 70 deletions
diff --git a/.travis.yml b/.travis.yml
index d7ad317e28..9f253df6c4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,11 +26,41 @@ matrix:
include:
- rvm: 2.1
- rvm: 2.2
- - rvm: 2.1
+ - rvm: 2.2
gemfile: pedant.gemfile
script: bundle exec rake pedant
- ### START TEST KITCHEN ONLY ###
- - rvm: 2.1
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'cheffish', github: 'chef/cheffish'\""
+ script: bundle exec rake cheffish_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'chef-provisioning', github: 'chef/chef-provisioning'\""
+ script: bundle exec rake chef_provisioning_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'chef-provisioning-aws', github: 'chef/chef-provisioning-aws'\""
+ script: bundle exec rake chef_provisioning_aws_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'chefspec'\""
+ script: bundle exec rake chefspec_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'chef-sugar'\""
+ script: bundle exec rake chef_sugar_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'chef-rewind'\""
+ script: bundle exec rake chef_rewind_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'foodcritic', github: 'acrmp/foodcritic', branch: 'v5.0.0'\""
+ script: bundle exec rake foodcritic_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'halite', github: 'poise/halite'\""
+ script: bundle exec rake halite_spec
+ - rvm: 2.2
+ env: "GEMFILE_MOD=\"gem 'poise', github: 'poise/poise'\""
+ script: bundle exec rake poise_spec
+ # Not working yet: halite
+ # - rvm: 2.2
+ # script: bundle exec rake poise_spec
+ ### START TEST KITCHEN ONLY ###
+ - rvm: 2.2
gemfile: kitchen-tests/Gemfile
before_install:
- echo -n $DO_KEY_CHUNK_{0..30} >> ~/.ssh/id_aws.base64
diff --git a/Gemfile b/Gemfile
index 2b135fb8e8..9d5cf0fea1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -22,11 +22,25 @@ group(:development, :test) do
gem "simplecov"
gem 'rack', "~> 1.5.1"
- gem 'cheffish', "~> 1.3", "!= 1.3.1"
gem 'ruby-shadow', :platforms => :ruby unless RUBY_PLATFORM.downcase.match(/(aix|cygwin)/)
+
+ # For external tests
+# gem 'chef-zero', github: 'chef/chef-zero'
+# gem 'cheffish', github: 'chef/cheffish'
+# gem 'chef-provisioning'#, github: 'chef/chef-provisioning'
+# gem 'chef-provisioning-aws', github: 'chef/chef-provisioning-aws'
+# gem 'test-kitchen'
+# gem 'chefspec'
+# gem 'chef-sugar'
+# gem 'poise', github: 'poise/poise', branch: 'deeecb890a6a0bc2037dfb09ce0fd0a8931519aa'
+# gem 'halite', github: 'poise/halite'
+# gem 'foodcritic', github: 'acrmp/foodcritic', branch: 'v5.0.0'
+# gem 'chef-rewind'
end
+instance_eval(ENV['GEMFILE_MOD']) if ENV['GEMFILE_MOD']
+
# If you want to load debugging tools into the bundle exec sandbox,
# add these additional dependencies into chef/Gemfile.local
eval(IO.read(__FILE__ + '.local'), binding) if File.exists?(__FILE__ + '.local')
diff --git a/chef.gemspec b/chef.gemspec
index f28cde21e7..b1abe7670a 100644
--- a/chef.gemspec
+++ b/chef.gemspec
@@ -52,5 +52,5 @@ Gem::Specification.new do |s|
s.executables = %w( chef-client chef-solo knife chef-shell chef-apply )
s.require_path = 'lib'
- s.files = %w(Rakefile LICENSE README.md CONTRIBUTING.md) + Dir.glob("{distro,lib,tasks,spec}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
+ s.files = %w(Gemfile Rakefile LICENSE README.md CONTRIBUTING.md) + Dir.glob("{distro,lib,tasks,spec}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
end
diff --git a/external_tests/chef-rewind.gemfile b/external_tests/chef-rewind.gemfile
deleted file mode 100644
index 39f7d6e0e8..0000000000
--- a/external_tests/chef-rewind.gemfile
+++ /dev/null
@@ -1,5 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec(name: 'chef', path: "../")
-
-gem 'chef-rewind', github: 'thommay/chef-rewind'
diff --git a/external_tests/chef-sugar.gemfile b/external_tests/chef-sugar.gemfile
deleted file mode 100644
index 31ef3bb5b8..0000000000
--- a/external_tests/chef-sugar.gemfile
+++ /dev/null
@@ -1,6 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec(name: 'chef', path: "../")
-
-gem 'chef-sugar', github: 'sethvargo/chef-sugar'
-gem 'chefspec'
diff --git a/external_tests/chefspec.gemfile b/external_tests/chefspec.gemfile
deleted file mode 100644
index fb7878afbd..0000000000
--- a/external_tests/chefspec.gemfile
+++ /dev/null
@@ -1,7 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec(name: 'chef', path: "../")
-
-gem 'chefspec', github: 'sethvargo/chefspec', group: :development
-gem 'aruba'
-gem 'yard'
diff --git a/external_tests/foodcritic.gemfile b/external_tests/foodcritic.gemfile
deleted file mode 100644
index a2b71a0d8c..0000000000
--- a/external_tests/foodcritic.gemfile
+++ /dev/null
@@ -1,9 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec(name: 'chef', path: "../")
-
-gem 'foodcritic', github: 'acrmp/foodcritic'
-gem 'cucumber'
-gem 'rubocop'
-gem 'simplecov'
-gem 'minitest'
diff --git a/external_tests/halite.gemfile b/external_tests/halite.gemfile
deleted file mode 100644
index cd8cd05668..0000000000
--- a/external_tests/halite.gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec(name: 'chef', path: "../")
-
-gem 'poise', github: 'poise/poise'
-gem 'halite', github: 'poise/halite'
-gem 'poise-boiler', github: 'poise/poise-boiler'
-gem 'rspec-command', github: 'coderanger/rspec-command'
diff --git a/external_tests/poise.gemfile b/external_tests/poise.gemfile
deleted file mode 100644
index 7d274b7a29..0000000000
--- a/external_tests/poise.gemfile
+++ /dev/null
@@ -1,7 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec(name: 'chef', path: "../")
-
-gem 'poise', github: 'poise/poise'
-gem 'halite', github: 'poise/halite'
-gem 'poise-boiler', github: 'poise/poise-boiler'
diff --git a/tasks/external_tests.rb b/tasks/external_tests.rb
index 2ff991ddf7..9304244424 100644
--- a/tasks/external_tests.rb
+++ b/tasks/external_tests.rb
@@ -1,29 +1,53 @@
-task :chef_sugar_spec do
- gem_path = Bundler.environment.specs['chef-sugar'].first.full_gem_path
- system("cd #{gem_path} && rake")
-end
+require 'tempfile'
-task :foodcritic_spec do
- gem_path = Bundler.environment.specs['foodcritic'].first.full_gem_path
- system("cd #{gem_path} && rake test")
+def bundle_exec_with_chef(test_gem, commands)
+ gem_path = Bundler.environment.specs[test_gem].first.full_gem_path
+ gemfile_path = File.join(gem_path, 'Gemfile.chef-external-test')
+ gemfile = File.open(gemfile_path, "w")
+ begin
+ IO.read(File.join(gem_path, 'Gemfile')).each_line do |line|
+ if line =~ /^\s*gemspec/
+ next
+ elsif line =~ /^\s*gem 'chef'|\s*gem "chef"/
+ next
+ elsif line =~ /^\s*dev_gem\s*['"](.+)['"]\s*$/
+ line = "gem '#{$1}', github: 'poise/#{$1}'"
+ elsif line =~ /\s*gem\s*['"]#{test_gem}['"]/ # foodcritic
+ next
+ end
+ gemfile.puts(line)
+ end
+ gemfile.puts("gem 'chef', path: #{File.expand_path('../..', __FILE__).inspect}")
+ gemfile.puts("gemspec path: #{gem_path.inspect}")
+ gemfile.close
+ Dir.chdir(gem_path) do
+ system({ 'BUNDLE_GEMFILE' => gemfile.path, 'RUBYOPT' => nil }, "bundle install")
+ Array(commands).each do |command|
+ system({ 'BUNDLE_GEMFILE' => gemfile.path, 'RUBYOPT' => nil }, "bundle exec #{command}")
+ end
+ end
+ ensure
+ File.delete(gemfile_path)
+ end
end
-task :chefspec_spec do
- gem_path = Bundler.environment.specs['chefspec'].first.full_gem_path
- system("cd #{gem_path} && rake")
-end
+EXTERNAL_PROJECTS = {
+ "chef-zero" => [ "rake spec", "rake pedant" ],
+ "cheffish" => "rake spec",
+ "chef-provisioning" => "rake spec",
+ "chef-provisioning-aws" => "rake spec",
+ "chef-sugar" => "rake",
+ "foodcritic" => "rake test",
+ "chefspec" => "rake",
+ "chef-rewind" => "rake spec",
+ "poise" => "rake spec",
+ "halite" => "rake spec"
+}
-task :chef_rewind_spec do
- gem_path = Bundler.environment.specs['chef-rewind'].first.full_gem_path
- system("cd #{gem_path} && rake spec")
-end
-
-task :poise_spec do
- gem_path = Bundler.environment.specs['poise'].first.full_gem_path
- system("cd #{gem_path} && rake spec")
-end
+task :external_specs => EXTERNAL_PROJECTS.keys.map { |g| :"#{g.sub("-","_")}_spec" }
-task :halite_spec do
- gem_path = Bundler.environment.specs['halite'].first.full_gem_path
- system("cd #{gem_path} && rake spec")
+EXTERNAL_PROJECTS.each do |test_gem, commands|
+ task :"#{test_gem.gsub('-','_')}_spec" do
+ bundle_exec_with_chef(test_gem, commands)
+ end
end