Rakefile in spreewald-0.5.10 vs Rakefile in spreewald-0.5.11
- old
+ new
@@ -1,13 +1,50 @@
#!/usr/bin/env rake
require "bundler/gem_tasks"
+desc 'Default: Run all tests.'
+task :default => 'tests:run' # now you can run the tests by just typing "rake" into your console
+
desc 'Update the "Steps" section of the README'
-task "update_readme" do
+task :update_readme do
require 'support/documentation_generator'
readme = File.read('README.md')
start_of_steps_section = readme =~ /^## Steps/
length_of_steps_section = (readme[(start_of_steps_section+1)..-1] =~ /^##[^#]/) || readme.size - start_of_steps_section
readme[start_of_steps_section, length_of_steps_section] = "## Steps\n\n" + DocumentationGenerator::StepDefinitionsDirectory.new('lib/spreewald').format
File.open('README.md', 'w') { |f| f.write(readme) }
+end
+
+namespace :tests do
+
+ desc "Run tests on all test apps"
+ task :run do # to run the tests type "rake tests:run" into your console
+ success = true
+ for_each_directory_of('tests/**/Rakefile') do |directory|
+ env = "SPEC=../../#{ENV['SPEC']} " if ENV['SPEC']
+ success &= system("cd #{directory} && #{env} bundle exec rake features")
+ end
+ fail "Tests failed" unless success
+ end
+
+ desc "Bundle all test apps"
+ task :bundle do
+ for_each_directory_of('tests/**/Gemfile') do |directory|
+ system("cd #{directory} && rm -f Gemfile.lock && bundle install")
+ end
+ end
+
+ desc 'Shortcut for creating a database'
+ task :create_database do
+ system("mysql -uroot -p -e 'create database spreewald_test;'")
+ 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