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 2023-11-03 22:19:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-addressable (Old)
and /work/SRC/openSUSE:Factory/.rubygem-addressable.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-addressable"
Fri Nov 3 22:19:20 2023 rev:24 rq:1122805 version:2.8.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-addressable/rubygem-addressable.changes
2023-06-14 16:29:17.038447786 +0200
+++
/work/SRC/openSUSE:Factory/.rubygem-addressable.new.17445/rubygem-addressable.changes
2023-11-03 22:19:22.334344060 +0100
@@ -1,0 +2,13 @@
+Thu Nov 2 14:29:46 UTC 2023 - Dan Äermák <[email protected]>
+
+- # Addressable 2.8.5
+- Fix thread safety issue with encoding tables ([#515])
+- Define URI::NONE as a module to avoid serialization issues ([#509])
+- Fix YAML serialization ([#508])
+
+[#508]: https://github.com/sporkmonger/addressable/pull/508
+[#509]: https://github.com/sporkmonger/addressable/pull/509
+[#515]: https://github.com/sporkmonger/addressable/pull/515
+
+
+-------------------------------------------------------------------
Old:
----
addressable-2.8.4.gem
New:
----
addressable-2.8.5.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-addressable.spec ++++++
--- /var/tmp/diff_new_pack.XrnOz4/_old 2023-11-03 22:19:23.218376580 +0100
+++ /var/tmp/diff_new_pack.XrnOz4/_new 2023-11-03 22:19:23.218376580 +0100
@@ -24,11 +24,10 @@
#
Name: rubygem-addressable
-Version: 2.8.4
+Version: 2.8.5
Release: 0
%define mod_name addressable
%define mod_full_name %{mod_name}-%{version}
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: %{ruby >= 2.2}
BuildRequires: %{rubygem gem2rpm}
BuildRequires: %{rubygem rdoc > 3.10}
@@ -38,7 +37,6 @@
Source1: gem2rpm.yml
Summary: URI Implementation
License: Apache-2.0
-Group: Development/Languages/Ruby
%description
Addressable is an alternative implementation to the URI implementation that is
++++++ addressable-2.8.4.gem -> addressable-2.8.5.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md 2023-04-09 17:02:36.000000000 +0200
+++ new/CHANGELOG.md 2023-08-03 10:54:34.000000000 +0200
@@ -1,3 +1,12 @@
+# Addressable 2.8.5
+- Fix thread safety issue with encoding tables ([#515])
+- Define URI::NONE as a module to avoid serialization issues ([#509])
+- Fix YAML serialization ([#508])
+
+[#508]: https://github.com/sporkmonger/addressable/pull/508
+[#509]: https://github.com/sporkmonger/addressable/pull/509
+[#515]: https://github.com/sporkmonger/addressable/pull/515
+
# Addressable 2.8.4
- Restore `Addressable::IDNA.unicode_normalize_kc` as a deprecated method
([#504])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile 2023-04-09 17:02:36.000000000 +0200
+++ new/Rakefile 2023-08-03 10:54:34.000000000 +0200
@@ -20,12 +20,17 @@
TEXT
PKG_FILES = FileList[
- "lib/**/*", "spec/**/*", "vendor/**/*", "data/**/*",
- "tasks/**/*",
- "[A-Z]*", "Rakefile"
-].exclude(/pkg/).exclude(/database\.yml/).
- exclude(/Gemfile\.lock/).exclude(/[_\.]git$/).
- exclude(/coverage/)
+ "data/**/*",
+ "lib/**/*.rb",
+ "spec/**/*.rb",
+ "tasks/**/*.rake",
+ "addressable.gemspec",
+ "CHANGELOG.md",
+ "Gemfile",
+ "LICENSE.txt",
+ "README.md",
+ "Rakefile",
+]
task :default => "spec"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/addressable.gemspec new/addressable.gemspec
--- old/addressable.gemspec 2023-04-09 17:02:36.000000000 +0200
+++ new/addressable.gemspec 2023-08-03 10:54:34.000000000 +0200
@@ -1,15 +1,15 @@
# -*- encoding: utf-8 -*-
-# stub: addressable 2.8.4 ruby lib
+# stub: addressable 2.8.5 ruby lib
Gem::Specification.new do |s|
s.name = "addressable".freeze
- s.version = "2.8.4"
+ s.version = "2.8.5"
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if
s.respond_to? :required_rubygems_version=
s.metadata = { "changelog_uri" =>
"https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md" } if
s.respond_to? :metadata=
s.require_paths = ["lib".freeze]
s.authors = ["Bob Aman".freeze]
- s.date = "2023-04-09"
+ s.date = "2023-08-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]
@@ -18,7 +18,7 @@
s.licenses = ["Apache-2.0".freeze]
s.rdoc_options = ["--main".freeze, "README.md".freeze]
s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze)
- s.rubygems_version = "3.4.10".freeze
+ s.rubygems_version = "3.4.18".freeze
s.summary = "URI Implementation".freeze
s.specification_version = 4
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/uri.rb new/lib/addressable/uri.rb
--- old/lib/addressable/uri.rb 2023-04-09 17:02:36.000000000 +0200
+++ new/lib/addressable/uri.rb 2023-08-03 10:54:34.000000000 +0200
@@ -344,17 +344,13 @@
##
# Tables used to optimize encoding operations in `self.encode_component`
# and `self.normalize_component`
- SEQUENCE_ENCODING_TABLE = Hash.new do |hash, sequence|
- hash[sequence] = sequence.unpack("C*").map do |c|
- format("%02x", c)
- end.join
- end
-
- SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE = Hash.new do |hash, sequence|
- hash[sequence] = sequence.unpack("C*").map do |c|
- format("%%%02X", c)
- end.join
- end
+ SEQUENCE_ENCODING_TABLE = (0..255).map do |byte|
+ format("%02x", byte).freeze
+ end.freeze
+
+ SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE = (0..255).map do |byte|
+ format("%%%02X", byte).freeze
+ end.freeze
##
# Percent encodes a URI component.
@@ -421,16 +417,17 @@
component = component.dup
component.force_encoding(Encoding::ASCII_8BIT)
# Avoiding gsub! because there are edge cases with frozen strings
- component = component.gsub(character_class) do |sequence|
- SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE[sequence]
+ component = component.gsub(character_class) do |char|
+ SEQUENCE_UPCASED_PERCENT_ENCODING_TABLE[char.ord]
end
if upcase_encoded.length > 0
- upcase_encoded_chars = upcase_encoded.chars.map do |char|
- SEQUENCE_ENCODING_TABLE[char]
+ upcase_encoded_chars = upcase_encoded.bytes.map do |byte|
+ SEQUENCE_ENCODING_TABLE[byte]
end
component = component.gsub(/%(#{upcase_encoded_chars.join('|')})/,
&:upcase)
end
+
return component
end
@@ -560,10 +557,9 @@
leave_re = if leave_encoded.length > 0
character_class = "#{character_class}%" unless
character_class.include?('%')
- "|%(?!#{leave_encoded.chars.flat_map do |char|
- seq = SEQUENCE_ENCODING_TABLE[char]
- [seq.upcase, seq.downcase]
- end.join('|')})"
+ bytes = leave_encoded.bytes
+ leave_encoded_pattern = bytes.map { |b| SEQUENCE_ENCODING_TABLE[b]
}.join('|')
+ "|%(?!#{leave_encoded_pattern}|#{leave_encoded_pattern.upcase})"
end
character_class = if leave_re
@@ -2396,6 +2392,25 @@
@validation_deferred = false
end
+ def encode_with(coder)
+ instance_variables.each do |ivar|
+ value = instance_variable_get(ivar)
+ if value != NONE
+ key = ivar.to_s.slice(1..-1)
+ coder[key] = value
+ end
+ end
+ nil
+ end
+
+ def init_with(coder)
+ reset_ivs
+ coder.map.each do |key, value|
+ instance_variable_set("@#{key}", value)
+ end
+ nil
+ end
+
protected
SELF_REF = '.'
PARENT = '..'
@@ -2569,7 +2584,7 @@
@query = nil
end
- NONE = Object.new.freeze
+ NONE = Module.new.freeze
private_constant :NONE
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 2023-04-09 17:02:36.000000000 +0200
+++ new/lib/addressable/version.rb 2023-08-03 10:54:34.000000000 +0200
@@ -23,7 +23,7 @@
module VERSION
MAJOR = 2
MINOR = 8
- TINY = 4
+ TINY = 5
STRING = [MAJOR, MINOR, TINY].join('.')
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2023-04-09 17:02:36.000000000 +0200
+++ new/metadata 2023-08-03 10:54:34.000000000 +0200
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: addressable
version: !ruby/object:Gem::Version
- version: 2.8.4
+ version: 2.8.5
platform: ruby
authors:
- Bob Aman
autorequire:
bindir: bin
cert_chain: []
-date: 2023-04-09 00:00:00.000000000 Z
+date: 2023-08-03 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: public_suffix
@@ -109,7 +109,7 @@
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubygems_version: 3.4.10
+rubygems_version: 3.4.18
signing_key:
specification_version: 4
summary: URI Implementation
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 2023-04-09 17:02:36.000000000 +0200
+++ new/spec/addressable/uri_spec.rb 2023-08-03 10:54:34.000000000 +0200
@@ -20,6 +20,7 @@
require "addressable/uri"
require "uri"
require "ipaddr"
+require "yaml"
if !"".respond_to?("force_encoding")
class String
@@ -6768,6 +6769,37 @@
end
end
+describe Addressable::URI, "support serialization roundtrip" do
+ before do
+ @uri = Addressable::URI.new(
+ :scheme => "http",
+ :user => "user",
+ :password => "password",
+ :host => "example.com",
+ :port => 80,
+ :path => "/path",
+ :query => "query=value",
+ :fragment => "fragment"
+ )
+ end
+
+ it "is in a working state after being serialized with Marshal" do
+ @uri = Addressable::URI.parse("http://example.com")
+ cloned_uri = Marshal.load(Marshal.dump(@uri))
+ expect(cloned_uri.normalized_scheme).to be == @uri.normalized_scheme
+ end
+
+ it "is in a working state after being serialized with YAML" do
+ @uri = Addressable::URI.parse("http://example.com")
+ cloned_uri = if YAML.respond_to?(:unsafe_load)
+ YAML.unsafe_load(YAML.dump(@uri))
+ else
+ YAML.load(YAML.dump(@uri))
+ end
+ expect(cloned_uri.normalized_scheme).to be == @uri.normalized_scheme
+ 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)
@@ -6799,3 +6831,10 @@
expect(res).to be nil
end
end
+
+describe Addressable::URI, "YAML safe loading" do
+ it "doesn't serialize anonymous objects" do
+ url = Addressable::URI.parse("http://example.com/")
+ expect(YAML.dump(url)).to_not include("!ruby/object {}")
+ end
+end