Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rubygem-addressable for
openSUSE:Factory checked in at 2022-08-28 13:12:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-addressable (Old)
and /work/SRC/openSUSE:Factory/.rubygem-addressable.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-addressable"
Sun Aug 28 13:12:10 2022 rev:22 rq:999444 version:2.8.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-addressable/rubygem-addressable.changes
2021-07-13 22:37:02.766316546 +0200
+++
/work/SRC/openSUSE:Factory/.rubygem-addressable.new.2083/rubygem-addressable.changes
2022-08-28 13:12:10.864523052 +0200
@@ -1,0 +2,20 @@
+Fri Aug 26 16:08:46 UTC 2022 - Manuel Schnitzer <[email protected]>
+
+- updated to version 2.8.1
+
+ * refactor `Addressable::URI.normalize_path` to address linter offenses
([#430](https://github.com/sporkmonger/addressable/pull/430))
+ * remove redundant colon in `Addressable::URI::CharacterClasses::AUTHORITY`
regex ([#438](https://github.com/sporkmonger/addressable/pull/438))
+ * update gemspec to reflect supported Ruby versions ([#466], [#464], [#463])
+ * compatibility w/ public_suffix 5.x ([#466], [#465], [#460])
+ * fixes "invalid byte sequence in UTF-8" exception when unencoding URLs
containing non UTF-8 characters
([#459](https://github.com/sporkmonger/addressable/pull/459))
+ * `Ractor` compatibility
([#449](https://github.com/sporkmonger/addressable/pull/449))
+ * use the whole string instead of a single line for template match
([#431](https://github.com/sporkmonger/addressable/pull/431))
+ * force UTF-8 encoding only if needed
([#341](https://github.com/sporkmonger/addressable/pull/341))
+
+ [#460]: https://github.com/sporkmonger/addressable/pull/460
+ [#463]: https://github.com/sporkmonger/addressable/pull/463
+ [#464]: https://github.com/sporkmonger/addressable/pull/464
+ [#465]: https://github.com/sporkmonger/addressable/pull/465
+ [#466]: https://github.com/sporkmonger/addressable/pull/466
+
+-------------------------------------------------------------------
Old:
----
addressable-2.8.0.gem
New:
----
addressable-2.8.1.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-addressable.spec ++++++
--- /var/tmp/diff_new_pack.WD633q/_old 2022-08-28 13:12:12.364526878 +0200
+++ /var/tmp/diff_new_pack.WD633q/_new 2022-08-28 13:12:12.368526887 +0200
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-addressable
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,12 +24,12 @@
#
Name: rubygem-addressable
-Version: 2.8.0
+Version: 2.8.1
Release: 0
%define mod_name addressable
%define mod_full_name %{mod_name}-%{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: %{ruby >= 2.0}
+BuildRequires: %{ruby >= 2.2}
BuildRequires: %{rubygem gem2rpm}
BuildRequires: %{rubygem rdoc > 3.10}
BuildRequires: ruby-macros >= 5
++++++ addressable-2.8.0.gem -> addressable-2.8.1.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md 2021-07-03 06:27:42.000000000 +0200
+++ new/CHANGELOG.md 2022-08-19 12:48:27.000000000 +0200
@@ -1,3 +1,19 @@
+# Addressable 2.8.1
+- refactor `Addressable::URI.normalize_path` to address linter offenses
([#430](https://github.com/sporkmonger/addressable/pull/430))
+- remove redundant colon in `Addressable::URI::CharacterClasses::AUTHORITY`
regex ([#438](https://github.com/sporkmonger/addressable/pull/438))
+- update gemspec to reflect supported Ruby versions ([#466], [#464], [#463])
+- compatibility w/ public_suffix 5.x ([#466], [#465], [#460])
+- fixes "invalid byte sequence in UTF-8" exception when unencoding URLs
containing non UTF-8 characters
([#459](https://github.com/sporkmonger/addressable/pull/459))
+- `Ractor` compatibility
([#449](https://github.com/sporkmonger/addressable/pull/449))
+- use the whole string instead of a single line for template match
([#431](https://github.com/sporkmonger/addressable/pull/431))
+- force UTF-8 encoding only if needed
([#341](https://github.com/sporkmonger/addressable/pull/341))
+
+[#460]: https://github.com/sporkmonger/addressable/pull/460
+[#463]: https://github.com/sporkmonger/addressable/pull/463
+[#464]: https://github.com/sporkmonger/addressable/pull/464
+[#465]: https://github.com/sporkmonger/addressable/pull/465
+[#466]: https://github.com/sporkmonger/addressable/pull/466
+
# Addressable 2.8.0
- fixes ReDoS vulnerability in Addressable::Template#match
- no longer replaces `+` with spaces in queries for non-http(s) schemes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Gemfile new/Gemfile
--- old/Gemfile 2021-07-03 06:27:42.000000000 +0200
+++ new/Gemfile 2022-08-19 12:48:27.000000000 +0200
@@ -2,7 +2,7 @@
source 'https://rubygems.org'
-gemspec(path: __FILE__ == "(eval)" ? ".." : ".")
+gemspec
group :test do
gem 'rspec', '~> 3.8'
@@ -25,4 +25,6 @@
gem "rake", ">= 12.3.3"
end
-gem "idn-ruby", platform: :mri
+unless ENV["IDNA_MODE"] == "pure"
+ gem "idn-ruby", platform: :mri
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/addressable.gemspec new/addressable.gemspec
--- old/addressable.gemspec 2021-07-03 06:27:42.000000000 +0200
+++ new/addressable.gemspec 1970-01-01 01:00:00.000000000 +0100
@@ -1,37 +0,0 @@
-# -*- encoding: utf-8 -*-
-# stub: addressable 2.8.0 ruby lib
-
-Gem::Specification.new do |s|
- s.name = "addressable".freeze
- s.version = "2.8.0"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if
s.respond_to? :required_rubygems_version=
- s.require_paths = ["lib".freeze]
- s.authors = ["Bob Aman".freeze]
- s.date = "2021-07-03"
- s.description = "Addressable is an alternative implementation to the URI
implementation that is\npart of Ruby's standard library. It is flexible, offers
heuristic parsing, and\nadditionally provides extensive support for IRIs and
URI templates.\n".freeze
- s.email = "[email protected]".freeze
- s.extra_rdoc_files = ["README.md".freeze]
- s.files = ["CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE.txt".freeze,
"README.md".freeze, "Rakefile".freeze, "addressable.gemspec".freeze,
"data/unicode.data".freeze, "lib/addressable.rb".freeze,
"lib/addressable/idna.rb".freeze, "lib/addressable/idna/native.rb".freeze,
"lib/addressable/idna/pure.rb".freeze, "lib/addressable/template.rb".freeze,
"lib/addressable/uri.rb".freeze, "lib/addressable/version.rb".freeze,
"spec/addressable/idna_spec.rb".freeze,
"spec/addressable/net_http_compat_spec.rb".freeze,
"spec/addressable/security_spec.rb".freeze,
"spec/addressable/template_spec.rb".freeze,
"spec/addressable/uri_spec.rb".freeze, "spec/spec_helper.rb".freeze,
"tasks/clobber.rake".freeze, "tasks/gem.rake".freeze, "tasks/git.rake".freeze,
"tasks/metrics.rake".freeze, "tasks/profile.rake".freeze,
"tasks/rspec.rake".freeze, "tasks/yard.rake".freeze]
- s.homepage = "https://github.com/sporkmonger/addressable".freeze
- s.licenses = ["Apache-2.0".freeze]
- s.rdoc_options = ["--main".freeze, "README.md".freeze]
- s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze)
- s.rubygems_version = "3.0.3".freeze
- s.summary = "URI Implementation".freeze
-
- if s.respond_to? :specification_version then
- s.specification_version = 4
-
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
- s.add_runtime_dependency(%q<public_suffix>.freeze, [">= 2.0.2", "< 5.0"])
- s.add_development_dependency(%q<bundler>.freeze, [">= 1.0", "< 3.0"])
- else
- s.add_dependency(%q<public_suffix>.freeze, [">= 2.0.2", "< 5.0"])
- s.add_dependency(%q<bundler>.freeze, [">= 1.0", "< 3.0"])
- end
- else
- s.add_dependency(%q<public_suffix>.freeze, [">= 2.0.2", "< 5.0"])
- s.add_dependency(%q<bundler>.freeze, [">= 1.0", "< 3.0"])
- end
-end
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/addressable/idna/native.rb
new/lib/addressable/idna/native.rb
--- old/lib/addressable/idna/native.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/lib/addressable/idna/native.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# encoding:utf-8
#--
# Copyright (C) Bob Aman
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/addressable/idna/pure.rb
new/lib/addressable/idna/pure.rb
--- old/lib/addressable/idna/pure.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/lib/addressable/idna/pure.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# encoding:utf-8
#--
# Copyright (C) Bob Aman
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/addressable/idna.rb new/lib/addressable/idna.rb
--- old/lib/addressable/idna.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/lib/addressable/idna.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# encoding:utf-8
#--
# Copyright (C) Bob Aman
#
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/addressable/template.rb
new/lib/addressable/template.rb
--- old/lib/addressable/template.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/lib/addressable/template.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# encoding:utf-8
#--
# Copyright (C) Bob Aman
#
@@ -657,12 +656,12 @@
def ordered_variable_defaults
@ordered_variable_defaults ||= begin
expansions, _ = parse_template_pattern(pattern)
- expansions.map do |capture|
+ expansions.flat_map do |capture|
_, _, varlist = *capture.match(EXPRESSION)
varlist.split(',').map do |varspec|
varspec[VARSPEC, 1]
end
- end.flatten
+ end
end
end
@@ -1023,7 +1022,7 @@
end
# Ensure that the regular expression matches the whole URI.
- regexp_string = "^#{regexp_string}$"
+ regexp_string = "\\A#{regexp_string}\\z"
return expansions, Regexp.new(regexp_string)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/addressable/uri.rb new/lib/addressable/uri.rb
--- old/lib/addressable/uri.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/lib/addressable/uri.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# encoding:utf-8
#--
# Copyright (C) Bob Aman
#
@@ -38,20 +37,26 @@
##
# Container for the character classes specified in
# <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>.
+ #
+ # Note: Concatenated and interpolated `String`s are not affected by the
+ # `frozen_string_literal` directive and must be frozen explicitly.
+ #
+ # Interpolated `String`s *were* frozen this way before Ruby 3.0:
+ # https://bugs.ruby-lang.org/issues/17104
module CharacterClasses
ALPHA = "a-zA-Z"
DIGIT = "0-9"
GEN_DELIMS = "\\:\\/\\?\\#\\[\\]\\@"
SUB_DELIMS = "\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\="
- RESERVED = GEN_DELIMS + SUB_DELIMS
- UNRESERVED = ALPHA + DIGIT + "\\-\\.\\_\\~"
- PCHAR = UNRESERVED + SUB_DELIMS + "\\:\\@"
- SCHEME = ALPHA + DIGIT + "\\-\\+\\."
- HOST = UNRESERVED + SUB_DELIMS + "\\[\\:\\]"
- AUTHORITY = PCHAR + "\\[\\:\\]"
- PATH = PCHAR + "\\/"
- QUERY = PCHAR + "\\/\\?"
- FRAGMENT = PCHAR + "\\/\\?"
+ RESERVED = (GEN_DELIMS + SUB_DELIMS).freeze
+ UNRESERVED = (ALPHA + DIGIT + "\\-\\.\\_\\~").freeze
+ PCHAR = (UNRESERVED + SUB_DELIMS + "\\:\\@").freeze
+ SCHEME = (ALPHA + DIGIT + "\\-\\+\\.").freeze
+ HOST = (UNRESERVED + SUB_DELIMS + "\\[\\:\\]").freeze
+ AUTHORITY = (PCHAR + "\\[\\:\\]").freeze
+ PATH = (PCHAR + "\\/").freeze
+ QUERY = (PCHAR + "\\/\\?").freeze
+ FRAGMENT = (PCHAR + "\\/\\?").freeze
end
module NormalizeCharacterClasses
@@ -469,19 +474,13 @@
"Expected Class (String or Addressable::URI), " +
"got #{return_type.inspect}"
end
- uri = uri.dup
- # Seriously, only use UTF-8. I'm really not kidding!
- uri.force_encoding("utf-8")
-
- unless leave_encoded.empty?
- leave_encoded = leave_encoded.dup.force_encoding("utf-8")
- end
- result = uri.gsub(/%[0-9a-f]{2}/iu) do |sequence|
+ result = uri.gsub(/%[0-9a-f]{2}/i) do |sequence|
c = sequence[1..3].to_i(16).chr
- c.force_encoding("utf-8")
+ c.force_encoding(sequence.encoding)
leave_encoded.include?(c) ? sequence : c
end
+
result.force_encoding("utf-8")
if return_type == String
return result
@@ -561,10 +560,10 @@
leave_re = if leave_encoded.length > 0
character_class = "#{character_class}%" unless
character_class.include?('%')
- "|%(?!#{leave_encoded.chars.map do |char|
+ "|%(?!#{leave_encoded.chars.flat_map do |char|
seq = SEQUENCE_ENCODING_TABLE[char]
[seq.upcase, seq.downcase]
- end.flatten.join('|')})"
+ end.join('|')})"
end
character_class = if leave_re
@@ -900,7 +899,7 @@
end
end
# All normalized values should be UTF-8
- @normalized_scheme.force_encoding(Encoding::UTF_8) if @normalized_scheme
+ force_utf8_encoding_if_needed(@normalized_scheme)
@normalized_scheme
end
@@ -955,7 +954,7 @@
end
end
# All normalized values should be UTF-8
- @normalized_user.force_encoding(Encoding::UTF_8) if @normalized_user
+ force_utf8_encoding_if_needed(@normalized_user)
@normalized_user
end
@@ -1012,9 +1011,7 @@
end
end
# All normalized values should be UTF-8
- if @normalized_password
- @normalized_password.force_encoding(Encoding::UTF_8)
- end
+ force_utf8_encoding_if_needed(@normalized_password)
@normalized_password
end
@@ -1082,9 +1079,7 @@
end
end
# All normalized values should be UTF-8
- if @normalized_userinfo
- @normalized_userinfo.force_encoding(Encoding::UTF_8)
- end
+ force_utf8_encoding_if_needed(@normalized_userinfo)
@normalized_userinfo
end
@@ -1151,9 +1146,7 @@
end
end
# All normalized values should be UTF-8
- if @normalized_host && !@normalized_host.empty?
- @normalized_host.force_encoding(Encoding::UTF_8)
- end
+ force_utf8_encoding_if_needed(@normalized_host)
@normalized_host
end
@@ -1271,9 +1264,7 @@
authority
end
# All normalized values should be UTF-8
- if @normalized_authority
- @normalized_authority.force_encoding(Encoding::UTF_8)
- end
+ force_utf8_encoding_if_needed(@normalized_authority)
@normalized_authority
end
@@ -1507,7 +1498,7 @@
site_string
end
# All normalized values should be UTF-8
- @normalized_site.force_encoding(Encoding::UTF_8) if @normalized_site
+ force_utf8_encoding_if_needed(@normalized_site)
@normalized_site
end
@@ -1570,7 +1561,7 @@
result
end
# All normalized values should be UTF-8
- @normalized_path.force_encoding(Encoding::UTF_8) if @normalized_path
+ force_utf8_encoding_if_needed(@normalized_path)
@normalized_path
end
@@ -1646,7 +1637,7 @@
component == "" ? nil : component
end
# All normalized values should be UTF-8
- @normalized_query.force_encoding(Encoding::UTF_8) if @normalized_query
+ force_utf8_encoding_if_needed(@normalized_query)
@normalized_query
end
@@ -1842,9 +1833,7 @@
component == "" ? nil : component
end
# All normalized values should be UTF-8
- if @normalized_fragment
- @normalized_fragment.force_encoding(Encoding::UTF_8)
- end
+ force_utf8_encoding_if_needed(@normalized_fragment)
@normalized_fragment
end
@@ -2440,30 +2429,35 @@
def self.normalize_path(path)
# Section 5.2.4 of RFC 3986
- return nil if path.nil?
+ return if path.nil?
normalized_path = path.dup
- begin
- mod = nil
+ loop do
mod ||= normalized_path.gsub!(RULE_2A, SLASH)
pair = normalized_path.match(RULE_2B_2C)
- parent, current = pair[1], pair[2] if pair
+ if pair
+ parent = pair[1]
+ current = pair[2]
+ else
+ parent = nil
+ current = nil
+ end
+
+ regexp = "/#{Regexp.escape(parent.to_s)}/\\.\\./|"
+ regexp += "(/#{Regexp.escape(current.to_s)}/\\.\\.$)"
+
if pair && ((parent != SELF_REF && parent != PARENT) ||
(current != SELF_REF && current != PARENT))
- mod ||= normalized_path.gsub!(
- Regexp.new(
- "/#{Regexp.escape(parent.to_s)}/\\.\\./|" +
- "(/#{Regexp.escape(current.to_s)}/\\.\\.$)"
- ), SLASH
- )
+ mod ||= normalized_path.gsub!(Regexp.new(regexp), SLASH)
end
mod ||= normalized_path.gsub!(RULE_2D, EMPTY_STR)
# Non-standard, removes prefixed dotted segments from path.
mod ||= normalized_path.gsub!(RULE_PREFIXED_PARENT, SLASH)
- end until mod.nil?
+ break if mod.nil?
+ end
- return normalized_path
+ normalized_path
end
##
@@ -2552,5 +2546,15 @@
remove_instance_variable(:@uri_string) if defined?(@uri_string)
remove_instance_variable(:@hash) if defined?(@hash)
end
+
+ ##
+ # Converts the string to be UTF-8 if it is not already UTF-8
+ #
+ # @api private
+ def force_utf8_encoding_if_needed(str)
+ if str && str.encoding != Encoding::UTF_8
+ str.force_encoding(Encoding::UTF_8)
+ end
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/addressable/version.rb
new/lib/addressable/version.rb
--- old/lib/addressable/version.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/lib/addressable/version.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# encoding:utf-8
#--
# Copyright (C) Bob Aman
#
@@ -24,7 +23,7 @@
module VERSION
MAJOR = 2
MINOR = 8
- TINY = 0
+ TINY = 1
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2021-07-03 06:27:42.000000000 +0200
+++ new/metadata 2022-08-19 12:48:27.000000000 +0200
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: addressable
version: !ruby/object:Gem::Version
- version: 2.8.0
+ version: 2.8.1
platform: ruby
authors:
- Bob Aman
-autorequire:
+autorequire:
bindir: bin
cert_chain: []
-date: 2021-07-03 00:00:00.000000000 Z
+date: 2022-08-19 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: public_suffix
@@ -19,7 +19,7 @@
version: 2.0.2
- - "<"
- !ruby/object:Gem::Version
- version: '5.0'
+ version: '6.0'
type: :runtime
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@
version: 2.0.2
- - "<"
- !ruby/object:Gem::Version
- version: '5.0'
+ version: '6.0'
- !ruby/object:Gem::Dependency
name: bundler
requirement: !ruby/object:Gem::Requirement
@@ -65,7 +65,6 @@
- LICENSE.txt
- README.md
- Rakefile
-- addressable.gemspec
- data/unicode.data
- lib/addressable.rb
- lib/addressable/idna.rb
@@ -90,8 +89,9 @@
homepage: https://github.com/sporkmonger/addressable
licenses:
- Apache-2.0
-metadata: {}
-post_install_message:
+metadata:
+ changelog_uri:
https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md
+post_install_message:
rdoc_options:
- "--main"
- README.md
@@ -101,15 +101,15 @@
requirements:
- - ">="
- !ruby/object:Gem::Version
- version: '2.0'
+ version: '2.2'
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubygems_version: 3.0.3
-signing_key:
+rubygems_version: 3.3.7
+signing_key:
specification_version: 4
summary: URI Implementation
test_files: []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spec/addressable/idna_spec.rb
new/spec/addressable/idna_spec.rb
--- old/spec/addressable/idna_spec.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/spec/addressable/idna_spec.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# coding: utf-8
# Copyright (C) Bob Aman
#
# Licensed under the Apache License, Version 2.0 (the "License");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spec/addressable/net_http_compat_spec.rb
new/spec/addressable/net_http_compat_spec.rb
--- old/spec/addressable/net_http_compat_spec.rb 2021-07-03
06:27:42.000000000 +0200
+++ new/spec/addressable/net_http_compat_spec.rb 2022-08-19
12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# coding: utf-8
# Copyright (C) Bob Aman
#
# Licensed under the Apache License, Version 2.0 (the "License");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spec/addressable/security_spec.rb
new/spec/addressable/security_spec.rb
--- old/spec/addressable/security_spec.rb 2021-07-03 06:27:42.000000000
+0200
+++ new/spec/addressable/security_spec.rb 2022-08-19 12:48:27.000000000
+0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# coding: utf-8
# Copyright (C) Bob Aman
#
# Licensed under the Apache License, Version 2.0 (the "License");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spec/addressable/template_spec.rb
new/spec/addressable/template_spec.rb
--- old/spec/addressable/template_spec.rb 2021-07-03 06:27:42.000000000
+0200
+++ new/spec/addressable/template_spec.rb 2022-08-19 12:48:27.000000000
+0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# coding: utf-8
# Copyright (C) Bob Aman
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -78,6 +77,15 @@
end
end
+describe "#to_regexp" do
+ it "does not match the first line of multiline strings" do
+ uri = "https://www.example.com/bar"
+ template = Addressable::Template.new(uri)
+ expect(template.match(uri)).not_to be_nil
+ expect(template.match("#{uri}\ngarbage")).to be_nil
+ end
+end
+
describe "Type conversion" do
subject {
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spec/addressable/uri_spec.rb
new/spec/addressable/uri_spec.rb
--- old/spec/addressable/uri_spec.rb 2021-07-03 06:27:42.000000000 +0200
+++ new/spec/addressable/uri_spec.rb 2022-08-19 12:48:27.000000000 +0200
@@ -1,6 +1,5 @@
# frozen_string_literal: true
-# coding: utf-8
# Copyright (C) Bob Aman
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -999,6 +998,72 @@
end
end
+describe Addressable::URI, "when normalized and then deeply frozen" do
+ before do
+ @uri = Addressable::URI.parse(
+ "http://user:[email protected]:8080/path?query=value#fragment"
+ ).normalize!
+
+ @uri.instance_variables.each do |var|
+ @uri.instance_variable_set(var, @uri.instance_variable_get(var).freeze)
+ end
+
+ @uri.freeze
+ end
+
+ it "#normalized_scheme should not error" do
+ expect { @uri.normalized_scheme }.not_to raise_error
+ end
+
+ it "#normalized_user should not error" do
+ expect { @uri.normalized_user }.not_to raise_error
+ end
+
+ it "#normalized_password should not error" do
+ expect { @uri.normalized_password }.not_to raise_error
+ end
+
+ it "#normalized_userinfo should not error" do
+ expect { @uri.normalized_userinfo }.not_to raise_error
+ end
+
+ it "#normalized_host should not error" do
+ expect { @uri.normalized_host }.not_to raise_error
+ end
+
+ it "#normalized_authority should not error" do
+ expect { @uri.normalized_authority }.not_to raise_error
+ end
+
+ it "#normalized_port should not error" do
+ expect { @uri.normalized_port }.not_to raise_error
+ end
+
+ it "#normalized_site should not error" do
+ expect { @uri.normalized_site }.not_to raise_error
+ end
+
+ it "#normalized_path should not error" do
+ expect { @uri.normalized_path }.not_to raise_error
+ end
+
+ it "#normalized_query should not error" do
+ expect { @uri.normalized_query }.not_to raise_error
+ end
+
+ it "#normalized_fragment should not error" do
+ expect { @uri.normalized_fragment }.not_to raise_error
+ end
+
+ it "should be frozen" do
+ expect(@uri).to be_frozen
+ end
+
+ it "should not allow destructive operations" do
+ expect { @uri.normalize! }.to raise_error(RuntimeError)
+ end
+end
+
describe Addressable::URI, "when created from string components" do
before do
@uri = Addressable::URI.new(
@@ -5993,6 +6058,11 @@
expect(Addressable::URI.unencode_component("ski=%BA%DA??")).to
eq("ski=\xBA\xDA??")
end
+ it "should not fail with UTF-8 incompatible string" do
+ url = "/M%E9/\xE9?p=\xFC".b
+ expect(Addressable::URI.unencode_component(url)).to
eq("/M\xE9/\xE9?p=\xFC")
+ end
+
it "should result in correct percent encoded sequence as a URI" do
expect(Addressable::URI.unencode(
"/path?g%C3%BCnther", ::Addressable::URI
@@ -6663,3 +6733,13 @@
expect(@uri.class).to eq(@uri.join('path').class)
end
end
+
+describe Addressable::URI, "when initialized in a non-main `Ractor`" do
+ it "should have the same value as if used in the main `Ractor`" do
+ pending("Ruby 3.0+ for `Ractor` support") unless defined?(Ractor)
+ main = Addressable::URI.parse("http://example.com")
+ expect(
+ Ractor.new { Addressable::URI.parse("http://example.com") }.take
+ ).to eq(main)
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/tasks/gem.rake new/tasks/gem.rake
--- old/tasks/gem.rake 2021-07-03 06:27:42.000000000 +0200
+++ new/tasks/gem.rake 2022-08-19 12:48:27.000000000 +0200
@@ -19,9 +19,9 @@
exit(1)
end
- s.required_ruby_version = ">= 2.0"
+ s.required_ruby_version = ">= 2.2"
- s.add_runtime_dependency "public_suffix", ">= 2.0.2", "< 5.0"
+ s.add_runtime_dependency "public_suffix", ">= 2.0.2", "< 6.0"
s.add_development_dependency "bundler", ">= 1.0", "< 3.0"
s.require_path = "lib"
@@ -30,6 +30,9 @@
s.email = "[email protected]"
s.homepage = "https://github.com/sporkmonger/addressable"
s.license = "Apache-2.0"
+ s.metadata = {
+ "changelog_uri" =>
"https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md"
+ }
end
Gem::PackageTask.new(GEM_SPEC) do |p|