Prohibit test method redefinition

This commit is contained in:
Nobuyoshi Nakada 2021-09-17 08:54:18 +09:00
Родитель 8450b6a91d
Коммит 34d6720fee
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7CD2805BFA3770C6
2 изменённых файлов: 5 добавлений и 10 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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