From 082335494b59557c322617ff4329c5102cf404da Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Jul 2024 13:16:20 +0900 Subject: [PATCH] [ruby/uri] Added test for constant definition and remove URI::REGEXP when using RFC3986_PARSER https://github.com/ruby/uri/commit/6f616d97fc --- lib/uri/common.rb | 3 ++- test/uri/test_common.rb | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/uri/common.rb b/lib/uri/common.rb index 4515a77af6..a4ed70f9a3 100644 --- a/lib/uri/common.rb +++ b/lib/uri/common.rb @@ -26,8 +26,8 @@ module URI remove_const(:Parser) if defined?(Parser) const_set("Parser", parser.class) + remove_const(:REGEXP) if defined?(REGEXP) if Parser == RFC2396_Parser - remove_const(:REGEXP) if defined?(REGEXP) const_set("REGEXP", URI::RFC2396_REGEXP) Parser.new.pattern.each_pair do |sym, str| unless REGEXP::PATTERN.const_defined?(sym) @@ -35,6 +35,7 @@ module URI end end end + Parser.new.regexp.each_pair do |sym, str| remove_const(sym) if const_defined?(sym) const_set(sym, str) diff --git a/test/uri/test_common.rb b/test/uri/test_common.rb index 1df19e6968..8d0a206c86 100644 --- a/test/uri/test_common.rb +++ b/test/uri/test_common.rb @@ -10,6 +10,23 @@ class URI::TestCommon < Test::Unit::TestCase def teardown end + def test_parser_switch + assert_equal(URI::Parser, URI::RFC3986_Parser) + refute defined?(::URI::REGEXP) + + URI.parser = URI::RFC2396_PARSER + + assert_equal(URI::Parser, URI::RFC2396_Parser) + assert defined?(URI::REGEXP) + + URI.parser = URI::RFC3986_PARSER + + assert_equal(URI::Parser, URI::RFC3986_Parser) + refute defined?(URI::REGEXP) + ensure + URI.parser = URI::RFC3986_PARSER + end + def test_extract EnvUtil.suppress_warning do assert_equal(['http://example.com'],