Commit 6453e2a80f6de00d9b874027f6d93dac87938ab9

Authored by Antonio Terceiro
1 parent 9b469d9b

ci:smoke: revamp

- provide sane defaults for $HEAD and $PREV_HEAD
- list commits since $PREV_HEAD
Showing 1 changed file with 22 additions and 18 deletions   Show diff stats
lib/tasks/ci.rake
... ... @@ -2,29 +2,33 @@ namespace :ci do
2 2  
3 3 desc 'Continuous integration smoke test'
4 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 5  
10   - # explicitly changed tests
11   - tests = changed_files.select { |f| f =~ /test\/.*_test\.rb$/ }
12   - features = changed_files.select { |f| f =~ /\.feature$/ }
  6 + current_branch = `git rev-parse --abbrev-ref HEAD`.strip
  7 + from = ENV['PREV_HEAD'] || "origin/#{current_branch}"
  8 + to = ENV['HEAD'] || current_branch
  9 + changed_files = `git diff --name-only #{from}..#{to}`.split
13 10  
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
  11 + unless $stdout.isatty
  12 + sh "git", "log", "--name-status", "#{from}..#{to}"
  13 + end
  14 +
  15 + # explicitly changed tests
  16 + tests = changed_files.select { |f| f =~ /test\/.*_test\.rb$/ }
  17 + features = changed_files.select { |f| f =~ /\.feature$/ }
  18 +
  19 + # match changed code files to their respective tests
  20 + changed_files.each do |f|
  21 + if f =~ /^(app|lib)\//
  22 + basename = File.basename(f, '.rb')
  23 + Dir.glob("test/**/#{basename}_test.rb").each do |t|
  24 + tests << t unless tests.include?(t)
21 25 end
22 26 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 27 end
  28 +
  29 + sh 'testrb', *tests unless tests.empty?
  30 + sh 'cucumber', *features unless features.empty?
  31 + sh 'cucumber', '-p', 'selenium', *features unless features.empty?
28 32 end
29 33  
30 34 end
... ...