aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/test_info_test.rb
blob: b9c3a9c0c737dd2e5af8cfb87e6e59b4ec95a8c5 (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
56
57
58
59
60
require 'abstract_unit'
require 'rails/test_unit/sub_test_task'

module Rails
  class TestInfoTest < ActiveSupport::TestCase
    def test_test_files
      info = new_test_info ['test']
      assert_predicate info.files, :empty?
      assert_nil info.opts
      assert_equal ['test'], info.tasks
    end

    def test_with_file
      info = new_test_info ['test', __FILE__]
      assert_equal [__FILE__], info.files
      assert_nil info.opts
      assert_equal ['test'], info.tasks
    end

    def test_with_opts
      info = new_test_info ['test', __FILE__, '/foo/']
      assert_equal [__FILE__], info.files
      assert_equal '-n /foo/', info.opts
      assert_equal ['test'], info.tasks
    end

    def test_with_model_shorthand
      info = new_test_info ['test', 'models/foo', '/foo/']

      def info.test_file?(file)
        file == "test/models/foo_test.rb" || super
      end

      assert_equal ['test/models/foo_test.rb'], info.files
      assert_equal '-n /foo/', info.opts
      assert_equal ['test'], info.tasks
    end

    def test_with_model_path
      info = new_test_info ['test', 'app/models/foo.rb', '/foo/']

      def info.test_file?(file)
        file == "test/models/foo_test.rb" || super
      end

      assert_equal ['test/models/foo_test.rb'], info.files
      assert_equal '-n /foo/', info.opts
      assert_equal ['test'], info.tasks
    end

    private
    def new_test_info(tasks)
      Class.new(TestTask::TestInfo) {
        def task_defined?(task)
          task == "test"
        end
      }.new tasks
    end
  end
end