Commit ae0014f2c274909f5bc88cf593a46b65b9676ed2

Authored by Antonio Terceiro
1 parent 8fbadc47

Add ci:smoke Rake task for CI environments

Assumes the CI environment will export the sha1 of the head commit into
HEAD, and the sha1 of the previous head commit in PREV_HEAD.
Showing 1 changed file with 30 additions and 0 deletions   Show diff stats
lib/tasks/ci.rake 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +namespace :ci do
  2 +
  3 + desc 'Continuous integration smoke test'
  4 + task :smoke do
  5 + if ENV['HEAD'] && ENV['PREV_HEAD']
  6 + from = ENV['PREV_HEAD']
  7 + to = ENV['HEAD']
  8 + changed_files = `git diff --name-only #{from}..#{to}`.split
  9 +
  10 + # explicitly changed tests
  11 + tests = changed_files.select { |f| f =~ /test\/.*_test\.rb$/ }
  12 + features = changed_files.select { |f| f =~ /\.feature$/ }
  13 +
  14 + # match changed code files to their respective tests
  15 + changed_files.each do |f|
  16 + if f =~ /^(app|lib)\//
  17 + basename = File.basename(f, '.rb')
  18 + Dir.glob("test/**/#{basename}_test.rb").each do |t|
  19 + tests << t unless tests.include?(t)
  20 + end
  21 + end
  22 + end
  23 +
  24 + sh 'testrb', *tests unless tests.empty?
  25 + sh 'cucumber', *features unless features.empty?
  26 + sh 'cucumber', '-p', 'selenium', *features unless features.empty?
  27 + end
  28 + end
  29 +
  30 +end
... ...