diff options
Diffstat (limited to 'test/rubygems/test_gem_package_tar_writer.rb')
-rw-r--r-- | test/rubygems/test_gem_package_tar_writer.rb | 189 |
1 files changed, 95 insertions, 94 deletions
diff --git a/test/rubygems/test_gem_package_tar_writer.rb b/test/rubygems/test_gem_package_tar_writer.rb index 31a91fa21a..751ceaca81 100644 --- a/test/rubygems/test_gem_package_tar_writer.rb +++ b/test/rubygems/test_gem_package_tar_writer.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true -require_relative 'package/tar_test_case' -require 'rubygems/package/tar_writer' + +require_relative "package/tar_test_case" +require "rubygems/package/tar_writer" class TestGemPackageTarWriter < Gem::Package::TarTestCase def setup @@ -11,7 +12,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase # is not set. Gem.instance_variable_set(:'@default_source_date_epoch', nil) - @data = 'abcde12345' + @data = "abcde12345" @io = TempIO.new @tar_writer = Gem::Package::TarWriter.new @io @epoch = ENV["SOURCE_DATE_EPOCH"] @@ -27,12 +28,12 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase end def test_add_file - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_file 'x', 0644 do |f| - f.write 'a' * 10 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_file "x", 0o644 do |f| + f.write "a" * 10 end - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now), @io.string[0, 512]) end assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] @@ -41,19 +42,19 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase def test_add_file_source_date_epoch ENV["SOURCE_DATE_EPOCH"] = "123456789" - Time.stub :now, Time.at(1458518157) do - @tar_writer.mkdir 'foo', 0644 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.mkdir "foo", 0o644 - assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc), + assert_headers_equal tar_dir_header("foo", "", 0o644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc), @io.string[0, 512] end end def test_add_symlink - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_symlink 'x', 'y', 0644 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_symlink "x", "y", 0o644 - assert_headers_equal(tar_symlink_header('x', '', 0644, Time.now, 'y'), + assert_headers_equal(tar_symlink_header("x", "", 0o644, Time.now, "y"), @io.string[0, 512]) end assert_equal 512, @io.pos @@ -61,31 +62,31 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase def test_add_symlink_source_date_epoch ENV["SOURCE_DATE_EPOCH"] = "123456789" - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_symlink 'x', 'y', 0644 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_symlink "x", "y", 0o644 - assert_headers_equal(tar_symlink_header('x', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, 'y'), + assert_headers_equal(tar_symlink_header("x", "", 0o644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, "y"), @io.string[0, 512]) end end def test_add_file_digest - digest_algorithms = Digest::SHA1.new, Digest::SHA512.new + digest_algorithms = OpenSSL::Digest::SHA1.new, OpenSSL::Digest::SHA512.new - Time.stub :now, Time.at(1458518157) do - digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io| - io.write 'a' * 10 + Time.stub :now, Time.at(1_458_518_157) do + digests = @tar_writer.add_file_digest "x", 0o644, digest_algorithms do |io| + io.write "a" * 10 end - assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a', - digests['SHA1'].hexdigest - assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \ - '1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \ - '4993d6b40a4e4d8424196afc347e97640d68de61' \ - 'e1cf14b0', - digests['SHA512'].hexdigest + assert_equal "3495ff69d34671d1e15b33a63c1379fdedd3a32a", + digests["SHA1"].hexdigest + assert_equal "4714870aff6c97ca09d135834fdb58a6389a50c1" \ + "1fef8ec4afef466fb60a23ac6b7a9c92658f14df" \ + "4993d6b40a4e4d8424196afc347e97640d68de61" \ + "e1cf14b0", + digests["SHA512"].hexdigest - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now), @io.string[0, 512]) end assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] @@ -93,22 +94,22 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase end def test_add_file_digest_multiple - digest_algorithms = [Digest::SHA1.new, Digest::SHA512.new] + digest_algorithms = [OpenSSL::Digest::SHA1.new, OpenSSL::Digest::SHA512.new] - Time.stub :now, Time.at(1458518157) do - digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io| - io.write 'a' * 10 + Time.stub :now, Time.at(1_458_518_157) do + digests = @tar_writer.add_file_digest "x", 0o644, digest_algorithms do |io| + io.write "a" * 10 end - assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a', - digests['SHA1'].hexdigest - assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \ - '1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \ - '4993d6b40a4e4d8424196afc347e97640d68de61' \ - 'e1cf14b0', - digests['SHA512'].hexdigest + assert_equal "3495ff69d34671d1e15b33a63c1379fdedd3a32a", + digests["SHA1"].hexdigest + assert_equal "4714870aff6c97ca09d135834fdb58a6389a50c1" \ + "1fef8ec4afef466fb60a23ac6b7a9c92658f14df" \ + "4993d6b40a4e4d8424196afc347e97640d68de61" \ + "e1cf14b0", + digests["SHA512"].hexdigest - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now), @io.string[0, 512]) end assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] @@ -116,26 +117,26 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase end def test_add_file_signer - pend 'openssl is missing' unless Gem::HAVE_OPENSSL + pend "openssl is missing" unless Gem::HAVE_OPENSSL signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT] - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_file_signed 'x', 0644, signer do |io| - io.write 'a' * 10 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_file_signed "x", 0o644, signer do |io| + io.write "a" * 10 end - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now), @io.string[0, 512]) assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] digest = signer.digest_algorithm.new - digest.update 'a' * 10 + digest.update "a" * 10 signature = signer.sign digest.digest - assert_headers_equal(tar_file_header('x.sig', '', 0444, signature.length, + assert_headers_equal(tar_file_header("x.sig", "", 0o444, signature.length, Time.now), @io.string[1024, 512]) assert_equal "#{signature}#{"\0" * (512 - signature.length)}", @@ -148,12 +149,12 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase def test_add_file_signer_empty signer = Gem::Security::Signer.new nil, nil - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_file_signed 'x', 0644, signer do |io| - io.write 'a' * 10 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_file_signed "x", 0o644, signer do |io| + io.write "a" * 10 end - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now), @io.string[0, 512]) end assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] @@ -162,12 +163,12 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase end def test_add_file_simple - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_file_simple 'x', 0644, 10 do |io| + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_file_simple "x", 0o644, 10 do |io| io.write "a" * 10 end - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.now), @io.string[0, 512]) assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512] @@ -177,21 +178,21 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase def test_add_file_simple_source_date_epoch ENV["SOURCE_DATE_EPOCH"] = "123456789" - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_file_simple 'x', 0644, 10 do |io| + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_file_simple "x", 0o644, 10 do |io| io.write "a" * 10 end - assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc), + assert_headers_equal(tar_file_header("x", "", 0o644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc), @io.string[0, 512]) end end def test_add_file_simple_padding - Time.stub :now, Time.at(1458518157) do - @tar_writer.add_file_simple 'x', 0, 100 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.add_file_simple "x", 0, 100 - assert_headers_equal tar_file_header('x', '', 0, 100, Time.now), + assert_headers_equal tar_file_header("x", "", 0, 100, Time.now), @io.string[0, 512] end @@ -222,34 +223,34 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase e = assert_raise IOError do @tar_writer.close end - assert_equal 'closed Gem::Package::TarWriter', e.message + assert_equal "closed Gem::Package::TarWriter", e.message e = assert_raise IOError do @tar_writer.flush end - assert_equal 'closed Gem::Package::TarWriter', e.message + assert_equal "closed Gem::Package::TarWriter", e.message e = assert_raise IOError do - @tar_writer.add_file 'x', 0 + @tar_writer.add_file "x", 0 end - assert_equal 'closed Gem::Package::TarWriter', e.message + assert_equal "closed Gem::Package::TarWriter", e.message e = assert_raise IOError do - @tar_writer.add_file_simple 'x', 0, 0 + @tar_writer.add_file_simple "x", 0, 0 end - assert_equal 'closed Gem::Package::TarWriter', e.message + assert_equal "closed Gem::Package::TarWriter", e.message e = assert_raise IOError do - @tar_writer.mkdir 'x', 0 + @tar_writer.mkdir "x", 0 end - assert_equal 'closed Gem::Package::TarWriter', e.message + assert_equal "closed Gem::Package::TarWriter", e.message end def test_mkdir - Time.stub :now, Time.at(1458518157) do - @tar_writer.mkdir 'foo', 0644 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.mkdir "foo", 0o644 - assert_headers_equal tar_dir_header('foo', '', 0644, Time.now), + assert_headers_equal tar_dir_header("foo", "", 0o644, Time.now), @io.string[0, 512] assert_equal 512, @io.pos @@ -258,43 +259,43 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase def test_mkdir_source_date_epoch ENV["SOURCE_DATE_EPOCH"] = "123456789" - Time.stub :now, Time.at(1458518157) do - @tar_writer.mkdir 'foo', 0644 + Time.stub :now, Time.at(1_458_518_157) do + @tar_writer.mkdir "foo", 0o644 - assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc), + assert_headers_equal tar_dir_header("foo", "", 0o644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc), @io.string[0, 512] end end def test_split_name - assert_equal ['b' * 100, 'a' * 155], - @tar_writer.split_name("#{'a' * 155}/#{'b' * 100}") + assert_equal ["b" * 100, "a" * 155], + @tar_writer.split_name("#{"a" * 155}/#{"b" * 100}") - assert_equal ["#{'qwer/' * 19}bla", 'a' * 151], - @tar_writer.split_name("#{'a' * 151}/#{'qwer/' * 19}bla") + assert_equal ["#{"qwer/" * 19}bla", "a" * 151], + @tar_writer.split_name("#{"a" * 151}/#{"qwer/" * 19}bla") names = [ - ([''] + ['123456789'] * 9 + ['1234567890']).join('/'), # 101 bytes (several pieces) - (['123456789'] * 9 + ['1234567890'] + ['']).join('/'), # 101 bytes (several pieces) - '/' * 99, - '/' * 100, - '/' * 101, - '/' * 102, + ([""] + ["123456789"] * 9 + ["1234567890"]).join("/"), # 101 bytes (several pieces) + (["123456789"] * 9 + ["1234567890"] + [""]).join("/"), # 101 bytes (several pieces) + "/" * 99, + "/" * 100, + "/" * 101, + "/" * 102, ] names.each do |name| newname, prefix = @tar_writer.split_name(name) - assert(!(newname.empty?), "split_name() returned empty name") + assert(!newname.empty?, "split_name() returned empty name") assert(newname.bytesize <= 100, "split_name() returned name longer than 100 bytes: '#{newname}' for '#{name}'") assert(prefix.bytesize <= 155, "split_name() returned prefix longer than 155 bytes: '#{prefix}' for '#{name}'") - newname = [prefix, newname].join('/') unless prefix.empty? + newname = [prefix, newname].join("/") unless prefix.empty? assert_equal name, newname end end def test_split_name_too_long_name - name = File.join 'a', 'b' * 100 - assert_equal ['b' * 100, 'a'], @tar_writer.split_name(name) + name = File.join "a", "b" * 100 + assert_equal ["b" * 100, "a"], @tar_writer.split_name(name) - name = File.join 'a', 'b' * 101 + name = File.join "a", "b" * 101 exception = assert_raise Gem::Package::TooLongFileName do @tar_writer.split_name name end @@ -302,7 +303,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase # note, GNU tar 1.28 is unable to handle this case too, # tested with "tar --format=ustar -cPf /tmp/foo.tartar -- /aaaaaa....a" - name = '/' + 'a' * 100 + name = "/" + "a" * 100 exception = assert_raise Gem::Package::TooLongFileName do @tar_writer.split_name name end @@ -310,10 +311,10 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase end def test_split_name_too_long_prefix - name = File.join 'a' * 155, 'b' - assert_equal ['b', 'a' * 155], @tar_writer.split_name(name) + name = File.join "a" * 155, "b" + assert_equal ["b", "a" * 155], @tar_writer.split_name(name) - name = File.join 'a' * 156, 'b' + name = File.join "a" * 156, "b" exception = assert_raise Gem::Package::TooLongFileName do @tar_writer.split_name name end @@ -321,7 +322,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase end def test_split_name_too_long_total - name = 'a' * 257 + name = "a" * 257 exception = assert_raise Gem::Package::TooLongFileName do @tar_writer.split_name name end |