diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-06-02 20:25:08 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-06-03 20:22:10 +0900 |
commit | 4589056384cdc8ed7c8a99713b216b7176ff49b9 (patch) | |
tree | 200c1ac99ac72ec77cc65591e8718c95d62724ec | |
parent | 1bb7c3c447db5a13356ae83097773a7de572e69c (diff) |
Exit with a failure if any test files failed to load
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7897
-rw-r--r-- | tool/lib/test/unit.rb | 8 | ||||
-rw-r--r-- | tool/test/testunit/test4test_load_failure.rb | 1 | ||||
-rw-r--r-- | tool/test/testunit/test_load_failure.rb | 23 |
3 files changed, 31 insertions, 1 deletions
diff --git a/tool/lib/test/unit.rb b/tool/lib/test/unit.rb index 7604b4add9..9ce3c8b30a 100644 --- a/tool/lib/test/unit.rb +++ b/tool/lib/test/unit.rb @@ -813,6 +813,7 @@ module Test warn "" @warnings.uniq! {|w| w[1].message} @warnings.each do |w| + @errors += 1 warn "#{w[0]}: #{w[1].message} (#{w[1].class})" end warn "" @@ -1282,8 +1283,13 @@ module Test puts "#{f}: #{$!}" end } + @load_failed = errors.size.nonzero? result end + + def run(*) + super or @load_failed + end end module RepeatOption # :nodoc: all @@ -1680,7 +1686,7 @@ module Test break unless report.empty? end - return failures + errors if self.test_count > 0 # or return nil... + return (failures + errors).nonzero? # or return nil... rescue Interrupt abort 'Interrupted' end diff --git a/tool/test/testunit/test4test_load_failure.rb b/tool/test/testunit/test4test_load_failure.rb new file mode 100644 index 0000000000..e1570c2542 --- /dev/null +++ b/tool/test/testunit/test4test_load_failure.rb @@ -0,0 +1 @@ +raise LoadError, "no-such-library" diff --git a/tool/test/testunit/test_load_failure.rb b/tool/test/testunit/test_load_failure.rb new file mode 100644 index 0000000000..63db33fd2c --- /dev/null +++ b/tool/test/testunit/test_load_failure.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true +require 'test/unit' + +class TestLoadFailure < Test::Unit::TestCase + def test_load_failure + assert_not_predicate(load_failure, :success?) + end + + def test_load_failure_parallel + assert_not_predicate(load_failure("-j2"), :success?) + end + + private + + def load_failure(*args) + IO.popen([*@options[:ruby], "#{__dir__}/../runner.rb", + "#{__dir__}/test4test_load_failure.rb", + "--verbose", *args], err: [:child, :out]) {|f| + assert_include(f.read, "test4test_load_failure.rb") + } + $? + end +end |