#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
require 'test/unit'
require 'rubygems'
Gem::manage_gems
require "test/simple_gem"
class TestValidator < Test::Unit::TestCase
def test_missing_gem_throws_error
assert_raises(Gem::VerificationError) {
Gem::Validator.new.verify_gem_file("")
}
assert_raises(Gem::VerificationError) {
Gem::Validator.new.verify_gem_file("/this/path/will/almost/definitely/not/exist.gem")
}
end
def test_invalid_gem_throws_error
assert_raises(Gem::VerificationError) {
Gem::Validator.new.verify_gem("")
}
assert_raises(Gem::VerificationError) {
Gem::Validator.new.verify_gem(@simple_gem.upcase)
}
# TODO: Since the new format does not support MD5 checking, the
# following code will not throw an exception. So we disable this
# assertion for now.
# assert_raises(Gem::VerificationError) {
# Gem::Validator.new.verify_gem(@simple_gem.reverse)
# }
end
def test_simple_valid_gem_verifies
assert_nothing_raised {
Gem::Validator.new.verify_gem(@simple_gem)
}
end
def test_truncated_simple_valid_gem_fails
assert_raises(Gem::VerificationError) {
Gem::Validator.new.verify_gem(@simple_gem.chop)
}
end
def test_invalid_checksum_fails_appropriately
assert_raises(Gem::VerificationError) {
Gem::Validator.new.verify_gem(@simple_gem.sub(/MD5SUM.*=.*/, 'MD5SUM = "foo"'))
}
end
def setup
@simple_gem = SIMPLE_GEM
end
end
syntax highlighted by Code2HTML, v. 0.9.1