self.expected = expected
self.actual = actual
def __str__(self):
- return "Invalid {0} hash for {1}: expected {2}, but got {3}.".format(self.hash_name, self.filename, self.expected, self.actual)
+ return ("Invalid {0} hash for {1}:\n"
+ "According to the control file the {0} hash should be {2},\n"
+ "but {1} has {3}.\n"
+ "\n"
+ "If you did not include {1} in you upload, a different version\n"
+ "might already be known to the archive software.") \
+ .format(self.hash_name, self.filename, self.expected, self.actual)
class InvalidFilenameException(Exception):
def __init__(self, filename):
continue
(sha1sum, size, filename) = line.split()
entry = entries.get(filename, None)
- if entry.get('size', None) != long(size):
+ if entry is None:
+ raise InvalidChangesException('{0} is listed in Checksums-Sha1, but not in Files.'.format(filename))
+ if entry is not None and entry.get('size', None) != long(size):
raise InvalidChangesException('Size for {0} in Files and Checksum-Sha1 fields differ.'.format(filename))
entry['sha1sum'] = sha1sum
(sha256sum, size, filename) = line.split()
entry = entries.get(filename, None)
if entry is None:
- raise InvalidChangesException('No sha256sum for {0}.'.format(filename))
- if entry.get('size', None) != long(size):
+ raise InvalidChangesException('{0} is listed in Checksums-Sha256, but not in Files.'.format(filename))
+ if entry is not None and entry.get('size', None) != long(size):
raise InvalidChangesException('Size for {0} in Files and Checksum-Sha256 fields differ.'.format(filename))
entry['sha256sum'] = sha256sum