assert 2.15.2 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/lib/assert/assertions.rb +6 -0
- data/lib/assert/config_helpers.rb +35 -14
- data/lib/assert/context.rb +36 -43
- data/lib/assert/context/test_dsl.rb +4 -4
- data/lib/assert/default_suite.rb +35 -40
- data/lib/assert/default_view.rb +109 -37
- data/lib/assert/file_line.rb +1 -1
- data/lib/assert/result.rb +67 -27
- data/lib/assert/runner.rb +14 -10
- data/lib/assert/suite.rb +41 -50
- data/lib/assert/test.rb +39 -81
- data/lib/assert/version.rb +1 -1
- data/lib/assert/view_helpers.rb +11 -21
- data/test/helper.rb +40 -0
- data/test/system/test_tests.rb +90 -88
- data/test/unit/assertions/assert_block_tests.rb +14 -10
- data/test/unit/assertions/assert_empty_tests.rb +14 -10
- data/test/unit/assertions/assert_equal_tests.rb +22 -14
- data/test/unit/assertions/assert_file_exists_tests.rb +14 -10
- data/test/unit/assertions/assert_includes_tests.rb +14 -10
- data/test/unit/assertions/assert_instance_of_tests.rb +14 -10
- data/test/unit/assertions/assert_kind_of_tests.rb +14 -10
- data/test/unit/assertions/assert_match_tests.rb +14 -10
- data/test/unit/assertions/assert_nil_tests.rb +14 -10
- data/test/unit/assertions/assert_raises_tests.rb +14 -10
- data/test/unit/assertions/assert_respond_to_tests.rb +14 -10
- data/test/unit/assertions/assert_same_tests.rb +20 -14
- data/test/unit/assertions/assert_true_false_tests.rb +28 -20
- data/test/unit/assertions_tests.rb +12 -9
- data/test/unit/config_helpers_tests.rb +72 -13
- data/test/unit/context/test_dsl_tests.rb +38 -45
- data/test/unit/context_tests.rb +12 -8
- data/test/unit/default_suite_tests.rb +66 -43
- data/test/unit/file_line_tests.rb +4 -1
- data/test/unit/result_tests.rb +71 -47
- data/test/unit/runner_tests.rb +34 -16
- data/test/unit/suite_tests.rb +61 -29
- data/test/unit/test_tests.rb +97 -134
- data/test/unit/view_helpers_tests.rb +17 -31
- metadata +2 -2
    
        data/test/unit/context_tests.rb
    CHANGED
    
    | @@ -12,7 +12,11 @@ class Assert::Context | |
| 12 12 | 
             
                  @test = Factory.test
         | 
| 13 13 | 
             
                  @context_class = @test.context_class
         | 
| 14 14 | 
             
                  @callback_result = nil
         | 
| 15 | 
            -
                  @ | 
| 15 | 
            +
                  @test_results = []
         | 
| 16 | 
            +
                  @result_callback = proc do |result|
         | 
| 17 | 
            +
                    @callback_result = result
         | 
| 18 | 
            +
                    @test_results << result
         | 
| 19 | 
            +
                  end
         | 
| 16 20 | 
             
                  @context = @context_class.new(@test, @test.config, @result_callback)
         | 
| 17 21 | 
             
                end
         | 
| 18 22 | 
             
                subject{ @context }
         | 
| @@ -32,9 +36,9 @@ class Assert::Context | |
| 32 36 | 
             
                should have_imeths :with_backtrace, :subject
         | 
| 33 37 |  | 
| 34 38 | 
             
                def test_should_collect_context_info
         | 
| 35 | 
            -
                   | 
| 36 | 
            -
                  assert_match /test\/unit\/context_tests.rb$/,  | 
| 37 | 
            -
                  assert_equal self.class,  | 
| 39 | 
            +
                  test = @__assert_running_test__
         | 
| 40 | 
            +
                  assert_match /test\/unit\/context_tests.rb$/, test.context_info.file
         | 
| 41 | 
            +
                  assert_equal self.class, test.context_info.klass
         | 
| 38 42 | 
             
                end
         | 
| 39 43 |  | 
| 40 44 | 
             
              end
         | 
| @@ -275,7 +279,7 @@ class Assert::Context | |
| 275 279 | 
             
                desc "with_backtrace method"
         | 
| 276 280 | 
             
                setup do
         | 
| 277 281 | 
             
                  @from_bt = ['called_from_here']
         | 
| 278 | 
            -
                  @from_block = proc { ignore; fail; pass; skip 'todo' }
         | 
| 282 | 
            +
                  @from_block = proc { ignore; fail; pass; skip 'todo'; }
         | 
| 279 283 | 
             
                end
         | 
| 280 284 |  | 
| 281 285 | 
             
                should "replace the fail results from the block with the given backtrace" do
         | 
| @@ -283,11 +287,11 @@ class Assert::Context | |
| 283 287 | 
             
                  begin
         | 
| 284 288 | 
             
                    @context.with_backtrace(@from_bt, &@from_block)
         | 
| 285 289 | 
             
                  rescue Assert::Result::TestSkipped => e
         | 
| 286 | 
            -
                    @ | 
| 290 | 
            +
                    @test_results << Assert::Result::Skip.for_test(@test, e)
         | 
| 287 291 | 
             
                  end
         | 
| 288 292 |  | 
| 289 | 
            -
                  assert_equal 5, @ | 
| 290 | 
            -
                  norm_fail, with_ignore, with_fail, with_pass, with_skip = @ | 
| 293 | 
            +
                  assert_equal 5, @test_results.size
         | 
| 294 | 
            +
                  norm_fail, with_ignore, with_fail, with_pass, with_skip = @test_results
         | 
| 291 295 |  | 
| 292 296 | 
             
                  assert_not_equal @from_bt, norm_fail.backtrace
         | 
| 293 297 | 
             
                  assert_equal @from_bt, with_ignore.backtrace
         | 
| @@ -8,18 +8,11 @@ class Assert::DefaultSuite | |
| 8 8 | 
             
              class UnitTests < Assert::Context
         | 
| 9 9 | 
             
                desc "Assert::DefaultSuite"
         | 
| 10 10 | 
             
                setup do
         | 
| 11 | 
            +
                  ci = Factory.context_info(Factory.modes_off_context_class)
         | 
| 12 | 
            +
                  @test = Factory.test(Factory.string, ci){ }
         | 
| 13 | 
            +
             | 
| 11 14 | 
             
                  @config = Factory.modes_off_config
         | 
| 12 15 | 
             
                  @suite  = Assert::DefaultSuite.new(@config)
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  ci = Factory.context_info(Factory.modes_off_context_class)
         | 
| 15 | 
            -
                  [ Factory.test("should nothing", ci){ },
         | 
| 16 | 
            -
                    Factory.test("should pass",    ci){ assert(1==1); refute(1==0) },
         | 
| 17 | 
            -
                    Factory.test("should fail",    ci){ ignore; assert(1==0); refute(1==1) },
         | 
| 18 | 
            -
                    Factory.test("should ignored", ci){ ignore },
         | 
| 19 | 
            -
                    Factory.test("should skip",    ci){ skip; ignore; assert(1==1) },
         | 
| 20 | 
            -
                    Factory.test("should error",   ci){ raise Exception; ignore; assert(1==1) }
         | 
| 21 | 
            -
                  ].each{ |test| @suite.tests << test }
         | 
| 22 | 
            -
                  @suite.tests.each(&:run)
         | 
| 23 16 | 
             
                end
         | 
| 24 17 | 
             
                subject{ @suite }
         | 
| 25 18 |  | 
| @@ -27,46 +20,76 @@ class Assert::DefaultSuite | |
| 27 20 | 
             
                  assert_kind_of Assert::Suite, subject
         | 
| 28 21 | 
             
                end
         | 
| 29 22 |  | 
| 30 | 
            -
                should " | 
| 31 | 
            -
                  assert_equal  | 
| 32 | 
            -
                   | 
| 33 | 
            -
             | 
| 34 | 
            -
                  assert_equal  | 
| 35 | 
            -
                  assert_equal  | 
| 36 | 
            -
             | 
| 37 | 
            -
                   | 
| 38 | 
            -
                  assert_equal exp, subject.ordered_tests_by_run_time
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                  assert_equal 8, subject.result_count
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                  exp = subject.ordered_tests.inject([]){ |results, t| results += t.results }
         | 
| 43 | 
            -
                  assert_equal exp, subject.ordered_results
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                  assert_equal 2, subject.result_count(:pass)
         | 
| 46 | 
            -
                  assert_equal 2, subject.result_count(:fail)
         | 
| 47 | 
            -
                  assert_equal 2, subject.result_count(:ignore)
         | 
| 48 | 
            -
                  assert_equal 1, subject.result_count(:skip)
         | 
| 49 | 
            -
                  assert_equal 1, subject.result_count(:error)
         | 
| 23 | 
            +
                should "default its test/result counts" do
         | 
| 24 | 
            +
                  assert_equal 0, subject.test_count
         | 
| 25 | 
            +
                  assert_equal 0, subject.result_count
         | 
| 26 | 
            +
                  assert_equal 0, subject.pass_result_count
         | 
| 27 | 
            +
                  assert_equal 0, subject.fail_result_count
         | 
| 28 | 
            +
                  assert_equal 0, subject.error_result_count
         | 
| 29 | 
            +
                  assert_equal 0, subject.skip_result_count
         | 
| 30 | 
            +
                  assert_equal 0, subject.ignore_result_count
         | 
| 50 31 | 
             
                end
         | 
| 51 32 |  | 
| 52 | 
            -
                should " | 
| 53 | 
            -
                   | 
| 54 | 
            -
                  assert_equal  | 
| 33 | 
            +
                should "increment its test count on `before_test`" do
         | 
| 34 | 
            +
                  subject.before_test(@test)
         | 
| 35 | 
            +
                  assert_equal 1, subject.test_count
         | 
| 36 | 
            +
                end
         | 
| 55 37 |  | 
| 56 | 
            -
             | 
| 57 | 
            -
                   | 
| 38 | 
            +
                should "increment its result counts on `on_result`" do
         | 
| 39 | 
            +
                  subject.on_result(Factory.pass_result)
         | 
| 40 | 
            +
                  assert_equal 1, subject.result_count
         | 
| 41 | 
            +
                  assert_equal 1, subject.pass_result_count
         | 
| 42 | 
            +
                  assert_equal 0, subject.fail_result_count
         | 
| 43 | 
            +
                  assert_equal 0, subject.error_result_count
         | 
| 44 | 
            +
                  assert_equal 0, subject.skip_result_count
         | 
| 45 | 
            +
                  assert_equal 0, subject.ignore_result_count
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  subject.on_result(Factory.fail_result)
         | 
| 48 | 
            +
                  assert_equal 2, subject.result_count
         | 
| 49 | 
            +
                  assert_equal 1, subject.pass_result_count
         | 
| 50 | 
            +
                  assert_equal 1, subject.fail_result_count
         | 
| 51 | 
            +
                  assert_equal 0, subject.error_result_count
         | 
| 52 | 
            +
                  assert_equal 0, subject.skip_result_count
         | 
| 53 | 
            +
                  assert_equal 0, subject.ignore_result_count
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  subject.on_result(Factory.error_result)
         | 
| 56 | 
            +
                  assert_equal 3, subject.result_count
         | 
| 57 | 
            +
                  assert_equal 1, subject.pass_result_count
         | 
| 58 | 
            +
                  assert_equal 1, subject.fail_result_count
         | 
| 59 | 
            +
                  assert_equal 1, subject.error_result_count
         | 
| 60 | 
            +
                  assert_equal 0, subject.skip_result_count
         | 
| 61 | 
            +
                  assert_equal 0, subject.ignore_result_count
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  subject.on_result(Factory.skip_result)
         | 
| 64 | 
            +
                  assert_equal 4, subject.result_count
         | 
| 65 | 
            +
                  assert_equal 1, subject.pass_result_count
         | 
| 66 | 
            +
                  assert_equal 1, subject.fail_result_count
         | 
| 67 | 
            +
                  assert_equal 1, subject.error_result_count
         | 
| 68 | 
            +
                  assert_equal 1, subject.skip_result_count
         | 
| 69 | 
            +
                  assert_equal 0, subject.ignore_result_count
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  subject.on_result(Factory.ignore_result)
         | 
| 72 | 
            +
                  assert_equal 5, subject.result_count
         | 
| 73 | 
            +
                  assert_equal 1, subject.pass_result_count
         | 
| 74 | 
            +
                  assert_equal 1, subject.fail_result_count
         | 
| 75 | 
            +
                  assert_equal 1, subject.error_result_count
         | 
| 76 | 
            +
                  assert_equal 1, subject.skip_result_count
         | 
| 77 | 
            +
                  assert_equal 1, subject.ignore_result_count
         | 
| 78 | 
            +
                end
         | 
| 58 79 |  | 
| 59 | 
            -
             | 
| 60 | 
            -
                   | 
| 80 | 
            +
                should "clear the run data on `on_start`" do
         | 
| 81 | 
            +
                  subject.before_test(@test)
         | 
| 82 | 
            +
                  subject.on_result(Factory.pass_result)
         | 
| 61 83 |  | 
| 62 | 
            -
                  assert_equal  | 
| 63 | 
            -
                  assert_equal  | 
| 84 | 
            +
                  assert_equal 1, subject.test_count
         | 
| 85 | 
            +
                  assert_equal 1, subject.result_count
         | 
| 86 | 
            +
                  assert_equal 1, subject.pass_result_count
         | 
| 64 87 |  | 
| 65 | 
            -
                   | 
| 66 | 
            -
                  assert_equal subject.result_count(:skip), subject.count(:skip)
         | 
| 88 | 
            +
                  subject.on_start
         | 
| 67 89 |  | 
| 68 | 
            -
                  assert_equal  | 
| 69 | 
            -
                  assert_equal  | 
| 90 | 
            +
                  assert_equal 0, subject.test_count
         | 
| 91 | 
            +
                  assert_equal 0, subject.result_count
         | 
| 92 | 
            +
                  assert_equal 0, subject.pass_result_count
         | 
| 70 93 | 
             
                end
         | 
| 71 94 |  | 
| 72 95 | 
             
              end
         | 
| @@ -14,7 +14,10 @@ class Assert::FileLine | |
| 14 14 | 
             
                should have_imeths :parse
         | 
| 15 15 |  | 
| 16 16 | 
             
                should "know how to parse and init from a file line path string" do
         | 
| 17 | 
            -
                  file_line_path =  | 
| 17 | 
            +
                  file_line_path = [
         | 
| 18 | 
            +
                    "#{@file}:#{@line}",
         | 
| 19 | 
            +
                    "#{@file}:#{@line} #{Factory.string}"
         | 
| 20 | 
            +
                  ].sample
         | 
| 18 21 | 
             
                  file_line = subject.parse(file_line_path)
         | 
| 19 22 |  | 
| 20 23 | 
             
                  assert_equal @file, file_line.file
         | 
    
        data/test/unit/result_tests.rb
    CHANGED
    
    | @@ -1,6 +1,8 @@ | |
| 1 1 | 
             
            require 'assert'
         | 
| 2 2 | 
             
            require 'assert/result'
         | 
| 3 3 |  | 
| 4 | 
            +
            require 'assert/file_line'
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            module Assert::Result
         | 
| 5 7 |  | 
| 6 8 | 
             
              class UnitTests < Assert::Context
         | 
| @@ -38,24 +40,26 @@ module Assert::Result | |
| 38 40 | 
             
                desc "Base"
         | 
| 39 41 | 
             
                setup do
         | 
| 40 42 | 
             
                  @given_data = {
         | 
| 41 | 
            -
                    :type | 
| 42 | 
            -
                    :name | 
| 43 | 
            -
                    :test_name | 
| 44 | 
            -
                    : | 
| 45 | 
            -
                    :message | 
| 46 | 
            -
                    :output | 
| 47 | 
            -
                    :backtrace | 
| 48 | 
            -
                    :trace | 
| 43 | 
            +
                    :type           => Factory.string,
         | 
| 44 | 
            +
                    :name           => Factory.string,
         | 
| 45 | 
            +
                    :test_name      => Factory.string,
         | 
| 46 | 
            +
                    :test_file_line => Assert::FileLine.new(Factory.string, Factory.integer),
         | 
| 47 | 
            +
                    :message        => Factory.string,
         | 
| 48 | 
            +
                    :output         => Factory.text,
         | 
| 49 | 
            +
                    :backtrace      => Backtrace.new(caller),
         | 
| 50 | 
            +
                    :trace          => Factory.string
         | 
| 49 51 | 
             
                  }
         | 
| 50 52 | 
             
                  @result = Base.new(@given_data)
         | 
| 51 53 | 
             
                end
         | 
| 52 54 | 
             
                subject{ @result }
         | 
| 53 55 |  | 
| 54 56 | 
             
                should have_cmeths :type, :name, :for_test
         | 
| 55 | 
            -
                should have_imeths :type, :name, :test_name, : | 
| 57 | 
            +
                should have_imeths :type, :name, :test_name, :test_file_line
         | 
| 58 | 
            +
                should have_imeths :test_file_name, :test_line_num, :test_id
         | 
| 56 59 | 
             
                should have_imeths :message, :output, :backtrace, :trace
         | 
| 60 | 
            +
                should have_imeths :file_line, :file_name, :line_num
         | 
| 57 61 | 
             
                should have_imeths *Assert::Result.types.keys.map{ |k| "#{k}?" }
         | 
| 58 | 
            -
                should have_imeths :set_backtrace, : | 
| 62 | 
            +
                should have_imeths :set_backtrace, :to_sym, :to_s
         | 
| 59 63 |  | 
| 60 64 | 
             
                should "know its class-level type/name" do
         | 
| 61 65 | 
             
                  assert_equal :unknown, subject.class.type
         | 
| @@ -79,60 +83,78 @@ module Assert::Result | |
| 79 83 | 
             
                end
         | 
| 80 84 |  | 
| 81 85 | 
             
                should "use any given attrs" do
         | 
| 82 | 
            -
                  assert_equal @given_data[:type].to_sym, | 
| 83 | 
            -
                  assert_equal @given_data[:name], | 
| 84 | 
            -
                  assert_equal @given_data[:test_name], | 
| 85 | 
            -
                  assert_equal @given_data[: | 
| 86 | 
            -
                  assert_equal @given_data[:message], | 
| 87 | 
            -
                  assert_equal @given_data[:output], | 
| 88 | 
            -
                  assert_equal @given_data[:backtrace], | 
| 89 | 
            -
                  assert_equal @given_data[:trace], | 
| 86 | 
            +
                  assert_equal @given_data[:type].to_sym,    subject.type
         | 
| 87 | 
            +
                  assert_equal @given_data[:name],           subject.name
         | 
| 88 | 
            +
                  assert_equal @given_data[:test_name],      subject.test_name
         | 
| 89 | 
            +
                  assert_equal @given_data[:test_file_line], subject.test_file_line
         | 
| 90 | 
            +
                  assert_equal @given_data[:message],        subject.message
         | 
| 91 | 
            +
                  assert_equal @given_data[:output],         subject.output
         | 
| 92 | 
            +
                  assert_equal @given_data[:backtrace],      subject.backtrace
         | 
| 93 | 
            +
                  assert_equal @given_data[:trace],          subject.trace
         | 
| 90 94 | 
             
                end
         | 
| 91 95 |  | 
| 92 96 | 
             
                should "default its attrs" do
         | 
| 93 97 | 
             
                  result = Base.new({})
         | 
| 94 98 |  | 
| 95 | 
            -
                  assert_equal :unknown, | 
| 96 | 
            -
                  assert_equal '', | 
| 97 | 
            -
                  assert_equal '', | 
| 98 | 
            -
                  assert_equal '', | 
| 99 | 
            -
                  assert_equal '', | 
| 100 | 
            -
                  assert_equal '', | 
| 101 | 
            -
                  assert_equal Backtrace.new([]), | 
| 102 | 
            -
                  assert_equal '', | 
| 99 | 
            +
                  assert_equal :unknown,                   result.type
         | 
| 100 | 
            +
                  assert_equal '',                         result.name
         | 
| 101 | 
            +
                  assert_equal '',                         result.test_name
         | 
| 102 | 
            +
                  assert_equal Assert::FileLine.parse(''), result.test_file_line
         | 
| 103 | 
            +
                  assert_equal '',                         result.message
         | 
| 104 | 
            +
                  assert_equal '',                         result.output
         | 
| 105 | 
            +
                  assert_equal Backtrace.new([]),          result.backtrace
         | 
| 106 | 
            +
                  assert_equal '',                         result.trace
         | 
| 103 107 | 
             
                end
         | 
| 104 108 |  | 
| 105 | 
            -
                should "know  | 
| 106 | 
            -
                   | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
                  end
         | 
| 109 | 
            +
                should "know its test file line attrs" do
         | 
| 110 | 
            +
                  exp = @given_data[:test_file_line]
         | 
| 111 | 
            +
                  assert_equal exp.file,      subject.test_file_name
         | 
| 112 | 
            +
                  assert_equal exp.line.to_i, subject.test_line_num
         | 
| 113 | 
            +
                  assert_equal exp.to_s,      subject.test_id
         | 
| 111 114 | 
             
                end
         | 
| 112 115 |  | 
| 113 116 | 
             
                should "allow setting a new backtrace" do
         | 
| 114 117 | 
             
                  new_bt        = Factory.integer(3).times.map{ Factory.string }
         | 
| 115 118 | 
             
                  exp_backtrace = Backtrace.new(new_bt)
         | 
| 116 119 | 
             
                  exp_trace     = exp_backtrace.filtered.first.to_s
         | 
| 117 | 
            -
             | 
| 118 120 | 
             
                  subject.set_backtrace(new_bt)
         | 
| 121 | 
            +
                  assert_equal exp_backtrace, subject.backtrace
         | 
| 122 | 
            +
                  assert_equal exp_trace,     subject.trace
         | 
| 119 123 |  | 
| 124 | 
            +
                  # test that the first bt line is used if filtered is empty
         | 
| 125 | 
            +
                  assert_lib_path = File.join(ROOT_PATH, "lib/#{Factory.string}:#{Factory.integer}")
         | 
| 126 | 
            +
                  new_bt          = Factory.integer(3).times.map{ assert_lib_path }
         | 
| 127 | 
            +
                  exp_backtrace   = Backtrace.new(new_bt)
         | 
| 128 | 
            +
                  exp_trace       = exp_backtrace.first.to_s
         | 
| 129 | 
            +
                  subject.set_backtrace(new_bt)
         | 
| 120 130 | 
             
                  assert_equal exp_backtrace, subject.backtrace
         | 
| 121 131 | 
             
                  assert_equal exp_trace,     subject.trace
         | 
| 122 132 | 
             
                end
         | 
| 123 133 |  | 
| 124 | 
            -
                should "know its  | 
| 125 | 
            -
                   | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 129 | 
            -
             | 
| 130 | 
            -
             | 
| 131 | 
            -
             | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 134 | 
            -
                  }
         | 
| 135 | 
            -
                   | 
| 134 | 
            +
                should "know its file line attrs" do
         | 
| 135 | 
            +
                  new_bt = Factory.integer(3).times.map{ Factory.string }
         | 
| 136 | 
            +
                  subject.set_backtrace(new_bt)
         | 
| 137 | 
            +
                  exp = Assert::FileLine.parse(subject.backtrace.filtered.first.to_s)
         | 
| 138 | 
            +
                  assert_equal exp,           subject.file_line
         | 
| 139 | 
            +
                  assert_equal exp.file,      subject.file_name
         | 
| 140 | 
            +
                  assert_equal exp.line.to_i, subject.line_num
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                  # test that the first bt line is used if filtered is empty
         | 
| 143 | 
            +
                  assert_lib_path = File.join(ROOT_PATH, "lib/#{Factory.string}:#{Factory.integer}")
         | 
| 144 | 
            +
                  new_bt = Factory.integer(3).times.map{ assert_lib_path }
         | 
| 145 | 
            +
                  subject.set_backtrace(new_bt)
         | 
| 146 | 
            +
                  exp = Assert::FileLine.parse(subject.backtrace.first.to_s)
         | 
| 147 | 
            +
                  assert_equal exp,           subject.file_line
         | 
| 148 | 
            +
                  assert_equal exp.file,      subject.file_name
         | 
| 149 | 
            +
                  assert_equal exp.line.to_i, subject.line_num
         | 
| 150 | 
            +
                end
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                should "know if it is a certain type of result" do
         | 
| 153 | 
            +
                  Assert::Result.types.keys.each do |type|
         | 
| 154 | 
            +
                    assert_false subject.send("#{type}?")
         | 
| 155 | 
            +
                    Assert.stub(subject, :type){ type }
         | 
| 156 | 
            +
                    assert_true subject.send("#{type}?")
         | 
| 157 | 
            +
                  end
         | 
| 136 158 | 
             
                end
         | 
| 137 159 |  | 
| 138 160 | 
             
                should "know its symbol representation" do
         | 
| @@ -164,8 +186,10 @@ module Assert::Result | |
| 164 186 | 
             
                end
         | 
| 165 187 |  | 
| 166 188 | 
             
                should "show only its class and message when inspected" do
         | 
| 167 | 
            -
                  exp = "#<#{subject.class}:#{'0x0%x' % (subject.object_id << 1)}"\
         | 
| 168 | 
            -
                        " | 
| 189 | 
            +
                  exp = "#<#{subject.class}:#{'0x0%x' % (subject.object_id << 1)} "\
         | 
| 190 | 
            +
                        "@message=#{subject.message.inspect} "\
         | 
| 191 | 
            +
                        "@file_line=#{subject.file_line.to_s.inspect} "\
         | 
| 192 | 
            +
                        "@test_file_line=#{subject.test_file_line.to_s.inspect}>"
         | 
| 169 193 | 
             
                  assert_equal exp, subject.inspect
         | 
| 170 194 | 
             
                end
         | 
| 171 195 |  | 
    
        data/test/unit/runner_tests.rb
    CHANGED
    
    | @@ -52,10 +52,6 @@ class Assert::Runner | |
| 52 52 | 
             
                  callback_mixin = Module.new
         | 
| 53 53 | 
             
                  @runner_class = Class.new(Assert::Runner) do
         | 
| 54 54 | 
             
                    include CallbackMixin
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    def run!(&block)
         | 
| 57 | 
            -
                      self.suite.tests.each(&block)
         | 
| 58 | 
            -
                    end
         | 
| 59 55 | 
             
                  end
         | 
| 60 56 | 
             
                  suite_class  = Class.new(Assert::DefaultSuite){ include CallbackMixin }
         | 
| 61 57 | 
             
                  view_class   = Class.new(Assert::View){ include CallbackMixin }
         | 
| @@ -67,14 +63,24 @@ class Assert::Runner | |
| 67 63 |  | 
| 68 64 | 
             
                  @ci = Factory.context_info(Factory.modes_off_context_class)
         | 
| 69 65 | 
             
                  @test = Factory.test("should pass", @ci){ assert(1==1) }
         | 
| 70 | 
            -
                  @config.suite. | 
| 66 | 
            +
                  @config.suite.on_test(@test)
         | 
| 71 67 |  | 
| 72 68 | 
             
                  @runner = @runner_class.new(@config)
         | 
| 73 69 | 
             
                  @result = @runner.run
         | 
| 74 70 | 
             
                end
         | 
| 75 71 |  | 
| 76 | 
            -
                should "return an integer exit code" do
         | 
| 72 | 
            +
                should "return the fail+error result count as an integer exit code" do
         | 
| 77 73 | 
             
                  assert_equal 0, @result
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  fail_count  = Factory.integer
         | 
| 76 | 
            +
                  error_count = Factory.integer
         | 
| 77 | 
            +
                  Assert.stub(subject, :fail_result_count){ fail_count }
         | 
| 78 | 
            +
                  Assert.stub(subject, :error_result_count){ error_count }
         | 
| 79 | 
            +
                  Assert.stub(@test, :run){ } # no-op
         | 
| 80 | 
            +
                  result = @runner.run
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  exp = fail_count + error_count
         | 
| 83 | 
            +
                  assert_equal exp, result
         | 
| 78 84 | 
             
                end
         | 
| 79 85 |  | 
| 80 86 | 
             
                should "run all callbacks on itself, the suite and the view" do
         | 
| @@ -102,34 +108,46 @@ class Assert::Runner | |
| 102 108 | 
             
                  assert_true view.on_finish_called
         | 
| 103 109 | 
             
                end
         | 
| 104 110 |  | 
| 105 | 
            -
                should " | 
| 111 | 
            +
                should "describe running the tests in random order if there are tests" do
         | 
| 106 112 | 
             
                  exp = "Running tests in random order, " \
         | 
| 107 113 | 
             
                        "seeded with \"#{subject.runner_seed}\"\n"
         | 
| 108 114 | 
             
                  assert_includes exp, @view_output
         | 
| 109 115 |  | 
| 110 116 | 
             
                  @view_output.gsub!(/./, '')
         | 
| 111 | 
            -
                  @config.suite. | 
| 117 | 
            +
                  @config.suite.clear_tests_to_run
         | 
| 112 118 | 
             
                  subject.run
         | 
| 113 119 | 
             
                  assert_not_includes exp, @view_output
         | 
| 114 120 | 
             
                end
         | 
| 115 121 |  | 
| 116 122 | 
             
                should "run only a single test if a single test is configured" do
         | 
| 117 | 
            -
                   | 
| 118 | 
            -
                  @config.suite. | 
| 123 | 
            +
                  test = Factory.test("should pass", @ci){ assert(1==1) }
         | 
| 124 | 
            +
                  @config.suite.clear_tests_to_run
         | 
| 125 | 
            +
                  @config.suite.on_test(test)
         | 
| 126 | 
            +
                  @config.single_test test.file_line.to_s
         | 
| 119 127 |  | 
| 120 | 
            -
                  @ | 
| 128 | 
            +
                  runner = @runner_class.new(@config).tap(&:run)
         | 
| 129 | 
            +
                  assert_equal [test], runner.before_test_called
         | 
| 130 | 
            +
                end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                should "not run any tests if a single test is configured but can't be found" do
         | 
| 133 | 
            +
                  test = Factory.test("should pass", @ci){ assert(1==1) }
         | 
| 134 | 
            +
                  @config.suite.clear_tests_to_run
         | 
| 135 | 
            +
                  @config.suite.on_test(test)
         | 
| 136 | 
            +
                  @config.single_test Factory.string
         | 
| 121 137 |  | 
| 122 | 
            -
                  runner = @runner_class.new(@config)
         | 
| 123 | 
            -
                  runner. | 
| 124 | 
            -
                  assert_equal [@test], runner.before_test_called
         | 
| 138 | 
            +
                  runner = @runner_class.new(@config).tap(&:run)
         | 
| 139 | 
            +
                  assert_nil runner.before_test_called
         | 
| 125 140 | 
             
                end
         | 
| 126 141 |  | 
| 127 | 
            -
                should " | 
| 142 | 
            +
                should "describe running only a single test if a single test is configured" do
         | 
| 143 | 
            +
                  @config.suite.clear_tests_to_run
         | 
| 144 | 
            +
                  @config.suite.on_test(@test)
         | 
| 128 145 | 
             
                  @config.single_test @test.file_line.to_s
         | 
| 129 146 | 
             
                  @view_output.gsub!(/./, '')
         | 
| 130 147 | 
             
                  subject.run
         | 
| 131 148 |  | 
| 132 | 
            -
                  exp = "Running test: #{subject.single_test_file_line}\ | 
| 149 | 
            +
                  exp = "Running test: #{subject.single_test_file_line}, " \
         | 
| 150 | 
            +
                        "seeded with \"#{subject.runner_seed}\"\n"
         | 
| 133 151 | 
             
                  assert_includes exp, @view_output
         | 
| 134 152 | 
             
                end
         | 
| 135 153 |  |