summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2021-09-17 08:54:18 +0900
committerNobuyoshi Nakada <[email protected]>2021-09-17 08:54:18 +0900
commit34d6720fee545c42a24f88044d0f78db0477452d (patch)
treebece50eeaa72b1efc384b4ec92e13836e8dbadda
parent8450b6a91d44457375cad24a4d4e46165f046d25 (diff)
Prohibit test method redefinition
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4854
-rw-r--r--tool/lib/test/unit/testcase.rb2
-rw-r--r--tool/test/testunit/test_redefinition.rb13
2 files changed, 5 insertions, 10 deletions
diff --git a/tool/lib/test/unit/testcase.rb b/tool/lib/test/unit/testcase.rb
index dab25defff..241421d6d9 100644
--- a/tool/lib/test/unit/testcase.rb
+++ b/tool/lib/test/unit/testcase.rb
@@ -337,7 +337,7 @@ module Test
return unless name.to_s.start_with?("test_")
@test_methods ||= {}
if @test_methods[name]
- warn "test/unit warning: method #{ self }##{ name } is redefined"
+ raise AssertionFailedError, "test/unit: method #{ self }##{ name } is redefined"
end
@test_methods[name] = true
end
diff --git a/tool/test/testunit/test_redefinition.rb b/tool/test/testunit/test_redefinition.rb
index 9129e55489..b4f5cabd4f 100644
--- a/tool/test/testunit/test_redefinition.rb
+++ b/tool/test/testunit/test_redefinition.rb
@@ -3,14 +3,9 @@ require 'test/unit'
class TestRedefinition < Test::Unit::TestCase
def test_redefinition
- assert_match(/^test\/unit warning: method TestForTestRedefinition#test_redefinition is redefined$/,
- redefinition)
- end
-
- def redefinition(*args)
- IO.popen([*@options[:ruby], "#{File.dirname(__FILE__)}/test4test_redefinition.rb", *args],
- err: [:child, :out]) {|f|
- f.read
- }
+ message = %r[test/unit: method TestForTestRedefinition#test_redefinition is redefined$]
+ assert_raise_with_message(Test::Unit::AssertionFailedError, message) do
+ require_relative("test4test_redefinition.rb")
+ end
end
end