def testBadInput(self): fc = file_set_checker.FileSetChecker() expected = [ tag.CheckpkgTag(None, 'bad-arch-or-os-release', 'csw-upload-pkg arch=pkg osrel=unspecified'), tag.CheckpkgTag( None, 'bad-vendor-tag', 'filename=csw-upload-pkg expected=CSW actual=UNKN'), ] files = ['csw-upload-pkg'] self.assertEqual(expected, fc.CheckFiles(files))
def testBadInput(self): fc = file_set_checker.FileSetChecker() expected = [ tag.CheckpkgTag( None, 'bad-vendor-tag', 'filename=csw-upload-pkg expected=CSW actual=UNKN') ] expected_2 = [ tag.CheckpkgTag(None, 'bad-arch-or-os-release', 'csw-upload-pkg arch=pkg osrel=unspecified'), ] files = ['csw-upload-pkg'] files_with_metadata = fc._FilesWithMetadata(files) self.assertEqual(expected, fc._CheckUncommitted(files_with_metadata)) self.assertEqual(expected_2, fc._CheckMissingArchs(files_with_metadata))
def testThreeTags(self): m = checkpkg_lib.CheckpkgManager2("testname", [], "5.9", "sparc", "unstable") tags = { "CSWfoo": [ tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), tag.CheckpkgTag("CSWfoo", "baz-tag"), ], } screen_report, tags_report = m.FormatReports(tags, [], []) expected = (u'# Tags reported by testname module\n' u'CSWfoo: foo-tag foo-info\n' u'CSWfoo: bar-tag bar-info\n' u'CSWfoo: baz-tag\n') self.assertEqual(expected, unicode(tags_report))
def testFilenames(self): fc = file_set_checker.FileSetChecker() expected = [ tag.CheckpkgTag(None, 'bad-filename', 'filename=csw-upload-pkg'), ] files = ['csw-upload-pkg'] files_with_metadata = fc._FilesWithMetadata(files) self.assertEqual(expected, fc._CheckFilenames(files_with_metadata))
def ReportErrorForPkgname(self, pkgname, tag_name, tag_info=None, msg=None): # TODO: Make this bit use the CheckpkgErrorTag class from models.py checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) self.AddError(checkpkg_tag)
def GetSavedErrorTags(self): pkg_stats = self.GetDbObject() res = m.CheckpkgErrorTag.select( m.CheckpkgErrorTag.q.srv4_file == pkg_stats) tag_list = [ tag.CheckpkgTag(x.pkgname, x.tag_name, x.tag_info, x.msg) for x in res ] return tag_list
def _CheckFilenames(self, files_with_metadata): tags = [] for filename, parsed_filename in files_with_metadata: if not filename.endswith(".pkg.gz") and not filename.endswith( ".pkg"): tags.append( tag.CheckpkgTag(None, "bad-filename", "filename=%s" % filename)) return tags
def _CheckMissingArchs(self, files_with_metadata): tags = [] catalognames_by_arch = {} # We check all the OS releases that are included in the file set. # We won't report a missing i386-SunOS5.8 package if there was no # SunOS5.8 package in the set. osrels = set(x[1]["osrel"] for x in files_with_metadata) # Prepopulate sets, so that we have one set per each arch-osrel pair # that is applicable to this set of files. for arch in common_constants.PHYSICAL_ARCHITECTURES: for osrel in osrels: key = arch, osrel catalognames_by_arch[key] = set() # Assign files from the set to appropriate set. for file_path, file_metadata in files_with_metadata: catalogname = file_metadata["catalogname"] if file_metadata["arch"] == "all": archs = common_constants.PHYSICAL_ARCHITECTURES else: archs = [file_metadata["arch"]] osrel = file_metadata["osrel"] for arch in archs: key = arch, osrel if key in catalognames_by_arch: catalognames_by_arch[key].add(catalogname) else: tags.append( tag.CheckpkgTag( None, "bad-arch-or-os-release", "%s arch=%s osrel=%s" % (file_path, arch, osrel))) missing = {} for key1, set1 in catalognames_by_arch.iteritems(): for catalogname in set1: for key2, set2 in catalognames_by_arch.iteritems(): if catalogname not in set2: arch, osrel = key2 missing_key = arch, osrel, catalogname missing.setdefault(missing_key, set()).add( "Because %s-%s-%s exists" % (catalogname, key1[0], key1[1])) for arch, osrel, catalogname in missing: error_tag_name = "%s-%s-missing" % (arch, osrel) tags.append(tag.CheckpkgTag(None, error_tag_name, catalogname)) return tags
def testUncommitted(self): fc = file_set_checker.FileSetChecker() expected = [ tag.CheckpkgTag( None, 'bad-vendor-tag', 'filename=nspr_devel-4.8.6,REV=2010.10.16-SunOS5.9-sparc-UNCOMMITTED.pkg.gz expected=CSW actual=UNCOMMITTED' ), tag.CheckpkgTag( None, 'bad-vendor-tag', 'filename=nspr_devel-4.8.6,REV=2010.10.16-SunOS5.9-i386-UNCOMMITTED.pkg.gz expected=CSW actual=UNCOMMITTED' ), ] files = [ '/home/experimental/maciej/' 'nspr_devel-4.8.6,REV=2010.10.16-SunOS5.9-sparc-UNCOMMITTED.pkg.gz', '/home/experimental/maciej/' 'nspr_devel-4.8.6,REV=2010.10.16-SunOS5.9-i386-UNCOMMITTED.pkg.gz' ] self.assertEqual(expected, fc.CheckFiles(files))
def testMissingArchitectureWithOsrel(self): files = [ 'foo-1.0,REV=2011.03.30-SunOS5.9-i386-CSW.pkg.gz', 'foo-1.0,REV=2011.03.30-SunOS5.9-sparc-CSW.pkg.gz', 'foo-1.0,REV=2011.03.30-SunOS5.10-i386-CSW.pkg.gz', # Intentionally missing # 'foo-1.0,REV=2011.03.30-SunOS5.10-sparc-CSW.pkg.gz', ] fc = file_set_checker.FileSetChecker() expected = [tag.CheckpkgTag(None, 'sparc-SunOS5.10-missing', 'foo')] self.assertEqual(expected, fc.CheckFiles(files))
def _CheckUncommitted(self, files_with_metadata): tags = [] expected_vendor_tag = "CSW" for filename, parsed_filename in files_with_metadata: if parsed_filename["vendortag"] != expected_vendor_tag: tags.append( tag.CheckpkgTag( None, "bad-vendor-tag", "filename=%s expected=%s actual=%s" % (filename, expected_vendor_tag, parsed_filename["vendortag"]))) return tags
def test_5(self): tags = [tag.CheckpkgTag("CSWfoo", "foo-tag", "tag-info-1")] oo = [overrides.Override("CSWfoo", "foo-tag", "tag-info-1")] self.assertEqual(([], set([])), overrides.ApplyOverrides(tags, oo))
def test_3(self): """One override, matching by tag name, mismatching tag info, no pkgname.""" tags = [tag.CheckpkgTag("CSWfoo", "foo-tag", "tag-info-1")] oo = [overrides.Override(None, "foo-tag", "tag-info-2")] self.assertEqual((tags, set(oo)), overrides.ApplyOverrides(tags, oo))
def test_2(self): """One override, matching by tag name and tag info, no pkgname.""" tags = [tag.CheckpkgTag("CSWfoo", "foo-tag")] oo = [overrides.Override(None, "foo-tag", None)] self.assertEqual(([], set([])), overrides.ApplyOverrides(tags, oo))
def test_1a(self): """One tag, no overrides.""" tags = [tag.CheckpkgTag("CSWfoo", "foo-tag")] oo = [] self.assertEqual((tags, set([])), overrides.ApplyOverrides(tags, oo))
def test_6(self): """Pkgname mismatch.""" tags = [tag.CheckpkgTag("CSWfoo", "foo-tag", "tag-info-1")] oo = [overrides.Override("CSWbar", "foo-tag", "tag-info-1")] self.assertEqual((tags, set(oo)), overrides.ApplyOverrides(tags, oo))
def testMissingArchitecture(self): fc = file_set_checker.FileSetChecker() expected = [tag.CheckpkgTag(None, 'i386-SunOS5.9-missing', 'libnspr4')] self.assertEqual(expected, fc.CheckFiles(SAMPLE_FILES))
def testMissingArchitecture(self): fc = file_set_checker.FileSetChecker() expected = [tag.CheckpkgTag(None, 'i386-SunOS5.9-missing', 'libnspr4')] files_with_metadata = fc._FilesWithMetadata(SAMPLE_FILES) self.assertEqual(expected, fc._CheckMissingArchs(files_with_metadata))