提交 cf570d7d 编写于 作者: Y yui-knk

Change for `ActiveRecord::Migration.[]` to raise `ArgumentError` instead of `RuntimeError`

The error is raised because user passed invalid version number to a public api of
`ActiveRecord`, so `ArgumentError` is more suitable.
And add a test case checking if an error is raised when unknown migration version
is passed, because these test cases are not implemented.
上级 878c2bba
......@@ -528,7 +528,7 @@ def self.[](version)
name = "V#{version.tr('.', '_')}"
unless Compatibility.const_defined?(name)
versions = Compatibility.constants.grep(/\AV[0-9_]+\z/).map { |s| s.to_s.delete('V').tr('_', '.').inspect }
raise "Unknown migration version #{version.inspect}; expected one of #{versions.sort.join(', ')}"
raise ArgumentError, "Unknown migration version #{version.inspect}; expected one of #{versions.sort.join(', ')}"
end
Compatibility.const_get(name)
end
......
......@@ -1107,4 +1107,7 @@ def test_check_pending_with_stdlib_logger
ActiveRecord::Base.logger = old
end
def test_unknown_migration_version_should_raise_an_argument_error
assert_raise(ArgumentError) { ActiveRecord::Migration[1.0] }
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册