diff options
Diffstat (limited to 'tasks')
-rw-r--r-- | tasks/external_tests.rb | 64 |
1 files changed, 41 insertions, 23 deletions
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 |