Skip to content

Commit 57daafc

Browse files
tenderlovematzbot
authored andcommitted
[ruby/rubygems] Make verification methods private
I would like to start making some of the methods in Gem::Package private so that we can refactor them better. Right now we have many methods that are public, and since they are public we can't refactor them. Historically, I think "private" methods have just been tagged with :nodoc:, but I would like to be more strict about our APIs ruby/rubygems@fb352e9176
1 parent 57f2ac7 commit 57daafc

File tree

2 files changed

+16
-60
lines changed

2 files changed

+16
-60
lines changed

lib/rubygems/package.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,8 @@ def verify
642642
raise Gem::Package::FormatError.new e.message, @gem
643643
end
644644

645+
private
646+
645647
##
646648
# Verifies the +checksums+ against the +digests+. This check is not
647649
# cryptographically secure. Missing checksums are ignored.

test/rubygems/test_gem_package.rb

Lines changed: 14 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,71 +1247,25 @@ def test_verify_truncate
12471247

12481248
# end #verify tests
12491249

1250-
def test_verify_entry
1251-
entry = Object.new
1252-
def entry.full_name
1253-
raise ArgumentError, "whatever"
1254-
end
1255-
1256-
package = Gem::Package.new @gem
1257-
1258-
_, err = use_ui @ui do
1259-
e = nil
1260-
1261-
out_err = capture_output do
1262-
e = assert_raise ArgumentError do
1263-
package.verify_entry entry
1250+
def test_missing_metadata
1251+
invalid_metadata = ["metadataxgz", "foobar\nmetadata", "metadata\nfoobar"]
1252+
invalid_metadata.each do |fname|
1253+
tar = StringIO.new
1254+
1255+
Gem::Package::TarWriter.new(tar) do |gem_tar|
1256+
gem_tar.add_file fname, 0o444 do |io|
1257+
gz_io = Zlib::GzipWriter.new io, Zlib::BEST_COMPRESSION
1258+
gz_io.write "bad metadata"
1259+
gz_io.close
12641260
end
12651261
end
12661262

1267-
assert_equal "whatever", e.message
1268-
assert_equal "full_name", e.backtrace_locations.first.label
1269-
1270-
out_err
1271-
end
1272-
1273-
assert_equal "Exception while verifying #{@gem}\n", err
1274-
1275-
valid_metadata = ["metadata", "metadata.gz"]
1276-
valid_metadata.each do |vm|
1277-
$spec_loaded = false
1278-
$good_name = vm
1279-
1280-
entry = Object.new
1281-
def entry.full_name
1282-
$good_name
1283-
end
1263+
tar.rewind
12841264

1285-
package = Gem::Package.new(@gem)
1286-
package.instance_variable_set(:@files, [])
1287-
def package.load_spec(entry)
1288-
$spec_loaded = true
1289-
end
1290-
1291-
package.verify_entry(entry)
1292-
1293-
assert $spec_loaded
1294-
end
1295-
1296-
invalid_metadata = ["metadataxgz", "foobar\nmetadata", "metadata\nfoobar"]
1297-
invalid_metadata.each do |vm|
1298-
$spec_loaded = false
1299-
$bad_name = vm
1300-
1301-
entry = Object.new
1302-
def entry.full_name
1303-
$bad_name
1304-
end
1305-
1306-
package = Gem::Package.new(@gem)
1307-
package.instance_variable_set(:@files, [])
1308-
def package.load_spec(entry)
1309-
$spec_loaded = true
1265+
package = Gem::Package.new(Gem::Package::IOSource.new(tar))
1266+
assert_raise Gem::Package::FormatError do
1267+
package.verify
13101268
end
1311-
1312-
package.verify_entry(entry)
1313-
1314-
refute $spec_loaded
13151269
end
13161270
end
13171271

0 commit comments

Comments
 (0)