diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2025-07-12 12:02:37 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2025-07-12 03:05:25 +0000 |
| commit | c47a92b63df5a45de076822975884a4a45d4b59f (patch) | |
| tree | 1559711facb9a2e635e89c24e02fd22a66ee24f1 | |
| parent | 3ec46aad37bb5f42656d81210838ac4c5c4013a0 (diff) | |
[ruby/uri] Fix the message for unexpected argument
Use just `self` instead of `self.class`, in `URI::Generic.build`.
Since this is a class method, `self.class` is always `Class` even in
inherited sub classes, and does not have `#component` method.
https://github.com/ruby/uri/commit/6f44d3d40e
| -rw-r--r-- | lib/uri/generic.rb | 4 | ||||
| -rw-r--r-- | test/uri/test_generic.rb | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb index 07f329e3d1..8cd280de6d 100644 --- a/lib/uri/generic.rb +++ b/lib/uri/generic.rb @@ -126,9 +126,9 @@ module URI end end else - component = self.class.component rescue ::URI::Generic::COMPONENT + component = self.component rescue ::URI::Generic::COMPONENT raise ArgumentError, - "expected Array of or Hash of components of #{self.class} (#{component.join(', ')})" + "expected Array of or Hash of components of #{self} (#{component.join(', ')})" end tmp << nil diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb index b893f7ea1d..0d29dd42d3 100644 --- a/test/uri/test_generic.rb +++ b/test/uri/test_generic.rb @@ -868,6 +868,19 @@ class URI::TestGeneric < Test::Unit::TestCase assert_equal("http://[::1]/bar/baz", u.to_s) assert_equal("[::1]", u.host) assert_equal("::1", u.hostname) + + assert_raise_with_message(ArgumentError, /URI::Generic/) { + URI::Generic.build(nil) + } + + c = Class.new(URI::Generic) do + def self.component; raise; end + end + expected = /\(#{URI::Generic::COMPONENT.join(', ')}\)/ + message = "fallback to URI::Generic::COMPONENT if component raised" + assert_raise_with_message(ArgumentError, expected, message) { + c.build(nil) + } end def test_build2 |
