Rakefile in has_defaults-0.3.1 vs Rakefile in has_defaults-0.4.0

- old
+ new

@@ -1,17 +1,33 @@ require 'rake' require 'spec/rake/spectask' require 'bundler/gem_tasks' desc 'Default: Run all specs.' -task :default => :all_specs +task :default => 'all:spec' -desc "Run all specs" -task :all_specs do - Dir['spec/**/Rakefile'].each do |rakefile| - directory_name = File.dirname(rakefile) - sh <<-CMD - cd #{directory_name} - bundle exec rake - CMD +namespace :all do + + desc "Run specs on all spec apps" + task :spec do + for_each_directory_of('spec/**/Rakefile') do |directory| + env = "SPEC=../../#{ENV['SPEC']} " if ENV['SPEC'] + system("cd #{directory} && #{env} bundle exec rake spec") + end + end + + desc "Bundle all spec apps" + task :bundle do + for_each_directory_of('spec/**/Gemfile') do |directory| + system("cd #{directory} && bundle install") + end + end + +end + +def for_each_directory_of(path, &block) + Dir[path].sort.each do |rakefile| + directory = File.dirname(rakefile) + puts '', "\033[44m#{directory}\033[0m", '' + block.call(directory) end end