- if has_orig_tar > 1:
- rejmsg.append("%s: lists multiple .orig tarballs." % (dsc_filename))
- if has_native_tar > 1:
- rejmsg.append("%s: lists multiple native tarballs." % (dsc_filename))
- if has_debian_tar > 1 or has_debian_diff > 1:
- rejmsg.append("%s: lists multiple debian diff/tarballs." % (dsc_filename))
- if dsc["format"] == "1.0":
- if not (has_native_tar_gz or (has_orig_tar_gz and has_debian_diff)):
- rejmsg.append("%s: no .tar.gz or .orig.tar.gz+.diff.gz in "
- "'Files' field." % (dsc_filename))
- if (has_orig_tar_gz != has_orig_tar) or \
- (has_native_tar_gz != has_native_tar) or \
- has_debian_tar or has_more_orig_tar:
- rejmsg.append("%s: contains source files not allowed in format 1.0"
- % (dsc_filename))
- elif re.match(r"3\.\d+ \(native\)", dsc["format"]):
- if not has_native_tar:
- rejmsg.append("%s: lack required files for format 3.x (native)."
- % (dsc_filename))
- if has_orig_tar or has_debian_diff or has_debian_tar or \
- has_more_orig_tar:
- rejmsg.append("%s: contains source files not allowed in "
- "format '3.x (native)'" % (dsc_filename))
- elif re.match(r"3\.\d+ \(quilt\)", dsc["format"]):
- if not(has_orig_tar and has_debian_tar):
- rejmsg.append("%s: lack required files for format "
- "'3.x (quilt)'." % (dsc_filename))
- if has_debian_diff or has_native_tar:
- rejmsg.append("%s: contains source files not allowed in format "
- "3.x (quilt)" % (dsc_filename))
+
+ # Check for multiple files
+ for file_type in ('orig_tar', 'native_tar', 'debian_tar', 'debian_diff'):
+ if has[file_type] > 1:
+ rejmsg.append("%s: lists multiple %s" % (dsc_filename, file_type))
+
+ # Source format specific tests
+ try:
+ format = get_format_from_string(dsc['format'])
+ rejmsg.extend([
+ '%s: %s' % (dsc_filename, x) for x in format.reject_msgs(has)
+ ])
+
+ except UnknownFormatError:
+ # Not an error here for now
+ pass