Take the 2008 Git User's Survey and help out! [ hide ]

public
Fork of evanphx/rubinius
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/ezmobius/rubinius.git
Search Repo:
rubinius / .autotest
100644 109 lines (85 sloc) 2.886 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# -*- ruby -*-
 
require 'autotest/timestamp'
 
$f = true # quickstart
$q = ! $v # don't print all the files unless we run -v
 
# TODO: puke if Autotest::Rspec is seen
 
ENV['PRETTY'] = "1"
 
Autotest.add_hook :run_command do |at|
  system "rake"
end
 
class Autotest
  alias :old_ruby :ruby
  def ruby
    ENV["RUBY"] || "bin/mspec ci -fu"
  end
 
  alias :old_consolidate_failures :consolidate_failures
  def consolidate_failures(failed)
    filters = new_hash_of_arrays
 
    failed.each do |spec, failed_trace|
      failed_trace.scan(/ at ([^:]+)/).each do |file,|
        file.sub!(/^\.\//, '')
        next unless file =~ /^spec/
          test_files_for(file).each do |f|
            filters[f] # mspec doesn't have real spec filtering yet
          end
        break
      end
    end
 
    return filters
  end
 
  alias :old_make_test_cmd :make_test_cmd
  def make_test_cmd files_to_test
    # until bin/ci and bin/mspec allow for regexps, run the whole file again
    classes = reorder(files_to_test).map { |k,v| k }.join(' ')
    "PRETTY=1 #{ruby} #{classes} | #{unit_diff}"
  end
end
 
Autotest.add_hook :initialize do |at|
  at.order = :natural
 
  at.sleep = 2
 
  at.add_exception(/\.rbc$/)
  at.add_exception(/shotgun\/external_libs/)
  at.add_exception(/README/)
  at.add_exception(/spec.tags.critical.txt/)
 
  at.find_directories.clear
  at.find_directories.push(
                           'kernel',
                           'lib',
                           'shotgun',
                           'spec/ruby/1.8/core',
                           'spec/ruby/1.8/language',
                           'spec/ruby/1.8/library',
                           'spec/compiler',
                           'spec/parser',
                           'spec/tags'
                           )
 
  at.failed_results_re = /^\d+\)\n([^\n]*)(?:FAILED|ERROR)?\n(.*?)\n\n/m
  at.completed_re = /\Z/ # FIX: some sort of summary line at the end?
 
  at.add_mapping %r%^spec/tags/(.*)_tags.txt$% do |_, m|
    Dir["spec/#{m[1]}_spec.rb"]
  end
 
  at.add_mapping %r%^spec/(.*)/(shared|fixtures)/% do |_, m|
    at.files_matching(%r%^spec/.*#{m[1]}/.*_spec.rb$%)
  end
 
  at.add_mapping %r%^spec/spec_helper.rb% do
    at.files_matching(%r%^spec/.*_spec.rb$%)
  end
 
  at.add_mapping %r%^spec/compiler/spec_helper.rb% do
    at.files_matching(%r%^spec/compiler/.*_spec.rb$%)
  end
 
  at.add_mapping %r%^spec/.*_spec\.rb$% do |filename, _|
    filename
  end
 
  at.add_mapping %r%^kernel/(.*)/(.*).rb$% do |_, m|
    Dir["spec/#{m[1]}/#{m[2]}/*_spec.rb"]
  end
 
  at.add_mapping %r%^compiler/(bytecode|sexp|translation)/*.rb$% do |_, m|
    Dir["spec/compiler/rubinius/*_spec.rb"] + Dir["spec/language/*_spec.rb"]
  end
 
  at.add_mapping %r%^lib/(.*).rb% do |_, m|
    Dir["spec/library/#{m[1]}*_spec.rb"]
  end
 
  at.add_mapping %r%^shotgun% do |_, m|
    at.files_matching(/^spec.*_spec\.rb/)
  end
end