mirror of
https://github.com/ruby/ruby.git
synced 2026-01-26 20:19:19 +00:00
[ruby/rubygems] Re-use assert_headers_equal from Gem::Package::TarTestCase
https://github.com/ruby/rubygems/commit/0cf49e22af
This commit is contained in:
parent
be86e7c50e
commit
9f7ef20de1
@ -6,23 +6,7 @@ require "rubygems/package"
|
||||
##
|
||||
# A test case for Gem::Package::Tar* classes
|
||||
|
||||
class Gem::Package::TarTestCase < Gem::TestCase
|
||||
def ASCIIZ(str, length)
|
||||
str + "\0" * (length - str.length)
|
||||
end
|
||||
|
||||
def SP(s)
|
||||
s + " "
|
||||
end
|
||||
|
||||
def SP_Z(s)
|
||||
s + " \0"
|
||||
end
|
||||
|
||||
def Z(s)
|
||||
s + "\0"
|
||||
end
|
||||
|
||||
module Gem::Package::TarTestMethods
|
||||
def assert_headers_equal(expected, actual)
|
||||
expected = expected.to_s unless String === expected
|
||||
actual = actual.to_s unless String === actual
|
||||
@ -66,6 +50,26 @@ class Gem::Package::TarTestCase < Gem::TestCase
|
||||
|
||||
assert_equal expected[chksum_off, 8], actual[chksum_off, 8]
|
||||
end
|
||||
end
|
||||
|
||||
class Gem::Package::TarTestCase < Gem::TestCase
|
||||
include Gem::Package::TarTestMethods
|
||||
|
||||
def ASCIIZ(str, length)
|
||||
str + "\0" * (length - str.length)
|
||||
end
|
||||
|
||||
def SP(s)
|
||||
s + " "
|
||||
end
|
||||
|
||||
def SP_Z(s)
|
||||
s + " \0"
|
||||
end
|
||||
|
||||
def Z(s)
|
||||
s + "\0"
|
||||
end
|
||||
|
||||
def calc_checksum(header)
|
||||
sum = header.sum(0)
|
||||
|
||||
@ -8,51 +8,6 @@ unless Gem::Package::TarTestCase.instance_methods.include?(:assert_ractor)
|
||||
end
|
||||
|
||||
class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase
|
||||
ASSERT_HEADERS_EQUAL = <<~RUBY
|
||||
def assert_headers_equal(expected, actual)
|
||||
expected = expected.to_s unless String === expected
|
||||
actual = actual.to_s unless String === actual
|
||||
|
||||
fields = %w[
|
||||
name 100
|
||||
mode 8
|
||||
uid 8
|
||||
gid 8
|
||||
size 12
|
||||
mtime 12
|
||||
checksum 8
|
||||
typeflag 1
|
||||
linkname 100
|
||||
magic 6
|
||||
version 2
|
||||
uname 32
|
||||
gname 32
|
||||
devmajor 8
|
||||
devminor 8
|
||||
prefix 155
|
||||
]
|
||||
|
||||
offset = 0
|
||||
|
||||
until fields.empty? do
|
||||
name = fields.shift
|
||||
length = fields.shift.to_i
|
||||
|
||||
if name == "checksum"
|
||||
chksum_off = offset
|
||||
offset += length
|
||||
next
|
||||
end
|
||||
|
||||
assert_equal expected[offset, length], actual[offset, length]
|
||||
|
||||
offset += length
|
||||
end
|
||||
|
||||
assert_equal expected[chksum_off, 8], actual[chksum_off, 8]
|
||||
end
|
||||
RUBY
|
||||
|
||||
SETUP = <<~RUBY
|
||||
header = {
|
||||
name: "x",
|
||||
@ -78,7 +33,9 @@ class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase
|
||||
RUBY
|
||||
|
||||
def test_decode_in_ractor
|
||||
assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: "rubygems/package")
|
||||
assert_ractor(SETUP + <<~RUBY, require: "rubygems/package", require_relative: "package/tar_test_case")
|
||||
include Gem::Package::TarTestMethods
|
||||
|
||||
new_header = Ractor.new(tar_header.to_s) do |str|
|
||||
Gem::Package::TarHeader.from StringIO.new str
|
||||
end.value
|
||||
@ -88,7 +45,9 @@ class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase
|
||||
end
|
||||
|
||||
def test_encode_in_ractor
|
||||
assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: "rubygems/package")
|
||||
assert_ractor(SETUP + <<~RUBY, require: "rubygems/package", require_relative: "package/tar_test_case")
|
||||
include Gem::Package::TarTestMethods
|
||||
|
||||
header_bytes = tar_header.to_s
|
||||
|
||||
new_header_bytes = Ractor.new(header_bytes) do |str|
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user