diff options
author | John Keiser <john@johnkeiser.com> | 2015-09-30 16:01:27 -0700 |
---|---|---|
committer | John Keiser <john@johnkeiser.com> | 2015-09-30 16:01:27 -0700 |
commit | 8c042622fbf94acca813bd6d84d967d2ea08ec43 (patch) | |
tree | 97b3c69c95b11c0ea902990983593cb91426c2eb | |
parent | bfe6fda62c566f6b55903f1fcc531a277d506555 (diff) | |
parent | 949d18e80262dff407a5089c201619afb5c2221e (diff) | |
download | chef-8c042622fbf94acca813bd6d84d967d2ea08ec43.tar.gz |
Merge branch 'jk/external-tests'
-rw-r--r-- | .travis.yml | 36 | ||||
-rw-r--r-- | Gemfile | 16 | ||||
-rw-r--r-- | chef.gemspec | 2 | ||||
-rw-r--r-- | external_tests/chef-rewind.gemfile | 5 | ||||
-rw-r--r-- | external_tests/chef-sugar.gemfile | 6 | ||||
-rw-r--r-- | external_tests/chefspec.gemfile | 7 | ||||
-rw-r--r-- | external_tests/foodcritic.gemfile | 9 | ||||
-rw-r--r-- | external_tests/halite.gemfile | 8 | ||||
-rw-r--r-- | external_tests/poise.gemfile | 7 | ||||
-rw-r--r-- | tasks/external_tests.rb | 70 |
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 @@ -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 |