summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-07-12 12:02:37 +0900
committergit <svn-admin@ruby-lang.org>2025-07-12 03:05:25 +0000
commitc47a92b63df5a45de076822975884a4a45d4b59f (patch)
tree1559711facb9a2e635e89c24e02fd22a66ee24f1
parent3ec46aad37bb5f42656d81210838ac4c5c4013a0 (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.rb4
-rw-r--r--test/uri/test_generic.rb13
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