aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/test_unit/runner_test.rb
blob: be226e3aa52a4ca2e14fcf1931b2d14438212b75 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
require 'abstract_unit'
require 'rails/test_unit/runner'

class TestUnitTestRunnerTest < ActiveSupport::TestCase
  setup do
    @options = Rails::TestRunner::Options
  end

  test "shows the filtered backtrace by default" do
    options = @options.parse([])
    assert_not options[:backtrace]
  end

  test "has --backtrace (-b) option to show the full backtrace" do
    options = @options.parse(["-b"])
    assert options[:backtrace]

    options = @options.parse(["--backtrace"])
    assert options[:backtrace]
  end

  test "parse the filename and line" do
    options = @options.parse(["foobar.rb:20"])
    assert_equal File.expand_path("foobar.rb"), options[:filename]
    assert_equal 20, options[:line]

    options = @options.parse(["foobar.rb:"])
    assert_equal File.expand_path("foobar.rb"), options[:filename]
    assert_nil options[:line]

    options = @options.parse(["foobar.rb"])
    assert_equal File.expand_path("foobar.rb"), options[:filename]
    assert_nil options[:line]
  end

  test "find_method on same file" do
    options = @options.parse(["#{__FILE__}:#{__LINE__}"])
    runner = Rails::TestRunner.new(options)
    assert_equal "test_find_method_on_same_file", runner.find_method
  end

  test "find_method on a different file" do
    options = @options.parse(["foobar.rb:#{__LINE__}"])
    runner = Rails::TestRunner.new(options)
    assert_nil runner.find_method
  end

  test "run all tests in a directory" do
    options = @options.parse([__dir__])

    assert_equal "#{__dir__}/**/*_test.rb", options[:pattern]
    assert_nil options[:filename]
    assert_nil options[:line]
  end
end