Skip to content

Commit d124039

Browse files
committed
Split Ractor tests for Gem::Package
1 parent 96a425e commit d124039

File tree

2 files changed

+92
-19
lines changed

2 files changed

+92
-19
lines changed

test/rubygems/test_gem_package_tar_header.rb

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,6 @@ def setup
2626
@tar_header = Gem::Package::TarHeader.new header
2727
end
2828

29-
def test_decode_in_ractor
30-
new_header = Ractor.new(@tar_header.to_s) do |str|
31-
Gem::Package::TarHeader.from StringIO.new str
32-
end.value
33-
34-
assert_headers_equal @tar_header, new_header
35-
end if defined?(Ractor) && Ractor.instance_methods.include?(:value)
36-
37-
def test_encode_in_ractor
38-
header_bytes = @tar_header.to_s
39-
40-
new_header = Ractor.new(header_bytes) do |str|
41-
header = Gem::Package::TarHeader.from StringIO.new str
42-
header.to_s
43-
end.value
44-
45-
assert_headers_equal header_bytes, new_header
46-
end if defined?(Ractor) && Ractor.instance_methods.include?(:value)
47-
4829
def test_self_from
4930
io = TempIO.new @tar_header.to_s
5031

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# frozen_string_literal: true
2+
require_relative "package/tar_test_case"
3+
4+
class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase
5+
ASSERT_HEADERS_EQUAL = <<~RUBY
6+
def assert_headers_equal(expected, actual)
7+
expected = expected.to_s unless String === expected
8+
actual = actual.to_s unless String === actual
9+
10+
fields = %w[
11+
name 100
12+
mode 8
13+
uid 8
14+
gid 8
15+
size 12
16+
mtime 12
17+
checksum 8
18+
typeflag 1
19+
linkname 100
20+
magic 6
21+
version 2
22+
uname 32
23+
gname 32
24+
devmajor 8
25+
devminor 8
26+
prefix 155
27+
]
28+
29+
offset = 0
30+
31+
until fields.empty? do
32+
name = fields.shift
33+
length = fields.shift.to_i
34+
35+
if name == "checksum"
36+
chksum_off = offset
37+
offset += length
38+
next
39+
end
40+
41+
assert_equal expected[offset, length], actual[offset, length]
42+
43+
offset += length
44+
end
45+
46+
assert_equal expected[chksum_off, 8], actual[chksum_off, 8]
47+
end
48+
RUBY
49+
50+
SETUP = <<~RUBY
51+
header = {
52+
name: "x",
53+
mode: 0o644,
54+
uid: 1000,
55+
gid: 10_000,
56+
size: 100,
57+
mtime: 12_345,
58+
typeflag: "0",
59+
linkname: "link",
60+
uname: "user",
61+
gname: "group",
62+
devmajor: 1,
63+
devminor: 2,
64+
prefix: "y",
65+
}
66+
67+
tar_header = Gem::Package::TarHeader.new header
68+
RUBY
69+
70+
def test_decode_in_ractor
71+
assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: ["rubygems/package", "stringio"])
72+
new_header = Ractor.new(tar_header.to_s) do |str|
73+
Gem::Package::TarHeader.from StringIO.new str
74+
end.value
75+
76+
assert_headers_equal tar_header, new_header
77+
RUBY
78+
end
79+
80+
def test_encode_in_ractor
81+
assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: ["rubygems/package", "stringio"])
82+
header_bytes = tar_header.to_s
83+
84+
new_header_bytes = Ractor.new(header_bytes) do |str|
85+
new_header = Gem::Package::TarHeader.from StringIO.new str
86+
new_header.to_s
87+
end.value
88+
89+
assert_headers_equal header_bytes, new_header_bytes
90+
RUBY
91+
end
92+
end

0 commit comments

Comments
 (0)