aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/test_unit/sub_test_task.rb
blob: 284c70050fb3aaa4ce3ecc929424e984230a3d0f (plain) (blame)
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
module Rails
  # Don't abort when tests fail; move on the next test task.
  # Silence the default description to cut down on `rake -T` noise.
  class SubTestTask < Rake::TestTask
    # Create the tasks defined by this task lib.
    def define
      lib_path = @libs.join(File::PATH_SEPARATOR)
      task @name do
        run_code = ''
        RakeFileUtils.verbose(@verbose) do
          run_code =
            case @loader
            when :direct
              "-e 'ARGV.each{|f| load f}'"
            when :testrb
              "-S testrb #{fix}"
            when :rake
              rake_loader
            end
          @ruby_opts.unshift( "-I\"#{lib_path}\"" )
          @ruby_opts.unshift( "-w" ) if @warning

          begin
            ruby @ruby_opts.join(" ") +
              " \"#{run_code}\" " +
              file_list.collect { |fn| "\"#{fn}\"" }.join(' ') +
              " #{option_list}"
          rescue => error
            warn "Error running #{name}: #{error.inspect}"
          end
        end
      end
      self
    end
  end
end