summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2015-09-29 22:03:48 -0700
committerJohn Keiser <john@johnkeiser.com>2015-09-30 12:55:02 -0700
commite6959f4e9306a65ac52bc9087acdf4a0bccc2f59 (patch)
tree1da4ef4cf6f742d8d62587d20ff01639278a0659
parentd1a0e4b9dc4b5f00ce7fa5d56866fa0cbe8413e9 (diff)
downloadchef-e6959f4e9306a65ac52bc9087acdf4a0bccc2f59.tar.gz
Add external tests for chefspec, chef-sugar, chef-rewind, foodcritic and poise
-rw-r--r--.travis.yml15
-rw-r--r--Gemfile8
-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.rb64
9 files changed, 64 insertions, 65 deletions
diff --git a/.travis.yml b/.travis.yml
index d7ad317e28..5f616dd95d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,6 +30,21 @@ matrix:
gemfile: pedant.gemfile
script: bundle exec rake pedant
### START TEST KITCHEN ONLY ###
+ - rvm: 2.2
+ script: bundle exec rake chefspec_spec
+ - rvm: 2.2
+ script: bundle exec rake chef_sugar_spec
+ - rvm: 2.2
+ script: bundle exec rake chef_rewind_spec
+ - rvm: 2.2
+ script: bundle exec rake foodcritic_spec
+ - rvm: 2.2
+ script: bundle exec rake halite_spec
+ - rvm: 2.2
+ script: bundle exec rake poise_spec
+ # Not working yet: halite
+ # - rvm: 2.2
+ # script: bundle exec rake poise_spec
- rvm: 2.1
gemfile: kitchen-tests/Gemfile
before_install:
diff --git a/Gemfile b/Gemfile
index 2b135fb8e8..6faa37e23f 100644
--- a/Gemfile
+++ b/Gemfile
@@ -25,6 +25,14 @@ group(:development, :test) do
gem 'cheffish', "~> 1.3", "!= 1.3.1"
gem 'ruby-shadow', :platforms => :ruby unless RUBY_PLATFORM.downcase.match(/(aix|cygwin)/)
+
+ # For external tests
+ 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
# If you want to load debugging tools into the bundle exec sandbox,
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..b87b5bf1d6 100644
--- a/tasks/external_tests.rb
+++ b/tasks/external_tests.rb
@@ -1,29 +1,47 @@
-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, command)
+ 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")
+ system({ 'BUNDLE_GEMFILE' => gemfile.path, 'RUBYOPT' => nil }, "bundle exec #{command}")
+ 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-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, command|
+ task :"#{test_gem.gsub('-','_')}_spec" do
+ bundle_exec_with_chef(test_gem, command)
+ end
end