1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
import datetime
import json
import os
import shutil
import tempfile
import unittest
import piupartslib.pkgsummary as pkgsummary
class PkgSummaryTests(unittest.TestCase):
def testSummFlaginfoStateDups(self):
finfo = pkgsummary.flaginfo
states = sorted([y for x in finfo for y in finfo[x].states])
nodups = sorted(list(set(states)))
self.assertIn("successfully-tested", states)
self.assertEqual(states, nodups)
def testSummGetFlag(self):
self.assertEqual("F", pkgsummary.get_flag("failed-testing"))
self.assertEqual("X", pkgsummary.get_flag("dependency-does-not-exist"))
self.assertEqual("P", pkgsummary.get_flag("successfully-tested"))
self.assertEqual("W", pkgsummary.get_flag("waiting-to-be-tested"))
with self.assertRaises(pkgsummary.SummaryException):
pkgsummary.get_flag("bogus-state")
def testSummWorstFlag(self):
self.assertEqual("F", pkgsummary.worst_flag("F"))
self.assertEqual("P", pkgsummary.worst_flag("P"))
self.assertEqual("F", pkgsummary.worst_flag("P", "F"))
self.assertEqual("F", pkgsummary.worst_flag("F", "F"))
self.assertEqual("W", pkgsummary.worst_flag("W", "P"))
self.assertEqual("F", pkgsummary.worst_flag("W", "P", "F", "X", "-"))
with self.assertRaises(pkgsummary.SummaryException):
pkgsummary.worst_flag("Z")
class PkgSummaryAddTests(unittest.TestCase):
def setUp(self):
self.summ = pkgsummary.new_summary()
def testSummNewSumm(self):
# Verify any parameters which are depended on downstream
self.assertEqual("Piuparts Package Test Results Summary", self.summ["_id"])
self.assertEqual("1.0", self.summ["_version"])
self.assertEqual({}, self.summ["packages"])
thedate = datetime.datetime.strptime(self.summ["_date"], "%a %b %d %H:%M:%S UTC %Y")
self.assertIsNotNone(thedate)
def testSummAddArgValidation(self):
with self.assertRaises(pkgsummary.SummaryException):
pkgsummary.add_summary(self.summ, "foodist", "foopkg", "Z", 0, "http://foo")
with self.assertRaises(pkgsummary.SummaryException):
pkgsummary.add_summary(self.summ, "foodist", "foopkg", "X", "bogus", "http://foo")
with self.assertRaises(pkgsummary.SummaryException):
pkgsummary.add_summary(self.summ, "foodist", "foopkg", "X", 1, "ittp://foo")
pkgsummary.add_summary(self.summ, "foodist", "foopkg", "X", 1, "http://foo")
def testSummAddArgStorageFormat(self):
# store non-overlapping entries
pkgsummary.add_summary(self.summ, "dist", "pkg", "X", 0, "http://foo")
pkgsummary.add_summary(self.summ, "dist", "pkg2", "W", 1, "http://foo2")
pkgsummary.add_summary(self.summ, "dist2", "pkg3", "P", 2, "http://foo3")
self.assertEqual(["X", 0, "http://foo"], self.summ["packages"]["pkg"]["dist"])
self.assertEqual(["W", 1, "http://foo2"], self.summ["packages"]["pkg2"]["dist"])
self.assertEqual(["P", 2, "http://foo3"], self.summ["packages"]["pkg3"]["dist2"])
def testSummAddOverwriteFlag(self):
pkgsummary.add_summary(self.summ, "dist", "pkg", "X", 0, "http://foo")
pkgsummary.add_summary(self.summ, "dist", "pkg", "P", 0, "http://foo2")
self.assertEqual("X", self.summ["packages"]["pkg"]["dist"][0])
self.assertEqual("http://foo", self.summ["packages"]["pkg"]["dist"][2])
pkgsummary.add_summary(self.summ, "dist", "pkg", "F", 0, "http://foo3")
self.assertEqual("F", self.summ["packages"]["pkg"]["dist"][0])
self.assertEqual("http://foo3", self.summ["packages"]["pkg"]["dist"][2])
def testSummAddBlockCount(self):
pkgsummary.add_summary(self.summ, "dist", "pkg", "X", 0, "http://foo")
pkgsummary.add_summary(self.summ, "dist", "pkg", "P", 1, "http://foo")
self.assertEqual(1, self.summ["packages"]["pkg"]["dist"][1])
pkgsummary.add_summary(self.summ, "dist", "pkg", "F", 2, "http://foo")
self.assertEqual(2, self.summ["packages"]["pkg"]["dist"][1])
def testSummAddInvalid(self):
pkgsummary.add_summary(self.summ, "dist", "pkg", "-", 0, "http://foo")
print(self.summ["packages"]["pkg"]["dist"][2])
self.assertIn("http", self.summ["packages"]["pkg"]["dist"][2])
def testSummMerge(self):
pkgsummary.add_summary(self.summ, "dist", "pkg", "X", 0, "http://foo")
mergesumm = pkgsummary.new_summary()
pkgsummary.merge_summary(mergesumm, self.summ)
self.assertEqual(mergesumm["packages"]["pkg"]["dist"], self.summ["packages"]["pkg"]["dist"])
self.assertEqual(
mergesumm["packages"]["pkg"]["dist"],
mergesumm["packages"]["pkg"]["overall"],
)
class PkgSummaryStorageTests(unittest.TestCase):
def setUp(self):
self.summ = pkgsummary.new_summary()
pkgsummary.add_summary(self.summ, "dist", "pkg", "X", 0, "http://foo")
self.tmpdir = tempfile.mkdtemp()
self.tmpfilename = os.path.join(self.tmpdir, "foo.json")
pkgsummary.write_summary(self.summ, self.tmpfilename)
def tearDown(self):
shutil.rmtree(self.tmpdir)
def testSummFileRead(self):
summ2 = pkgsummary.read_summary(self.tmpfilename)
self.assertEqual(self.summ, summ2)
def testSummFileStorage(self):
with open(self.tmpfilename, "r") as fl:
summ2 = json.load(fl)
self.assertEqual(self.summ, summ2)
|