diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2025-11-04 11:00:01 +0900 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2025-11-12 18:35:16 +0900 |
| commit | f958800574c42e69844db7305e69d1f494529543 (patch) | |
| tree | d0a1953fde33302f78317c8e7422543bc1009bbc | |
| parent | f4f728b319086eea3db6e9909fb9c849c276f813 (diff) | |
Reapply "[ruby/rubygems] Fix constants in TAR to be frozen"
This reverts commit 136157e772ab2b2ea08555d0ad821da7dc2bde96.
| -rw-r--r-- | lib/rubygems/package/tar_header.rb | 8 | ||||
| -rw-r--r-- | test/rubygems/test_gem_package_tar_header.rb | 19 |
2 files changed, 23 insertions, 4 deletions
diff --git a/lib/rubygems/package/tar_header.rb b/lib/rubygems/package/tar_header.rb index 0ebcbd789d..dd20d65080 100644 --- a/lib/rubygems/package/tar_header.rb +++ b/lib/rubygems/package/tar_header.rb @@ -56,7 +56,7 @@ class Gem::Package::TarHeader ## # Pack format for a tar header - PACK_FORMAT = "a100" + # name + PACK_FORMAT = ("a100" + # name "a8" + # mode "a8" + # uid "a8" + # gid @@ -71,12 +71,12 @@ class Gem::Package::TarHeader "a32" + # gname "a8" + # devmajor "a8" + # devminor - "a155" # prefix + "a155").freeze # prefix ## # Unpack format for a tar header - UNPACK_FORMAT = "A100" + # name + UNPACK_FORMAT = ("A100" + # name "A8" + # mode "A8" + # uid "A8" + # gid @@ -91,7 +91,7 @@ class Gem::Package::TarHeader "A32" + # gname "A8" + # devmajor "A8" + # devminor - "A155" # prefix + "A155").freeze # prefix attr_reader(*FIELDS) diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb index a3f95bb770..34f92967e9 100644 --- a/test/rubygems/test_gem_package_tar_header.rb +++ b/test/rubygems/test_gem_package_tar_header.rb @@ -26,6 +26,25 @@ class TestGemPackageTarHeader < Gem::Package::TarTestCase @tar_header = Gem::Package::TarHeader.new header end + def test_decode_in_ractor + new_header = Ractor.new(@tar_header.to_s) do |str| + Gem::Package::TarHeader.from StringIO.new str + end.value + + assert_headers_equal @tar_header, new_header + end if defined?(Ractor) && Ractor.instance_methods.include?(:value) + + def test_encode_in_ractor + header_bytes = @tar_header.to_s + + new_header = Ractor.new(header_bytes) do |str| + header = Gem::Package::TarHeader.from StringIO.new str + header.to_s + end.value + + assert_headers_equal header_bytes, new_header + end if defined?(Ractor) && Ractor.instance_methods.include?(:value) + def test_self_from io = TempIO.new @tar_header.to_s |
