diff options
Diffstat (limited to 'tests/test_remote.py')
| -rw-r--r-- | tests/test_remote.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/test_remote.py b/tests/test_remote.py index 44d3a90..9f28701 100644 --- a/tests/test_remote.py +++ b/tests/test_remote.py @@ -172,6 +172,26 @@ class KindsTest(Base): with self.subTest(args=args), self.assertRaises(sbb.Error): sbb.KINDS["slackrepo"](self.cfg, args) + def test_slackrepo_prune(self): + self.make_pkg("misc/kept") + db = sqlite3.connect(self.cfg["slackrepo_db"]) + db.executescript(""" + create table packages (pkgnam text primary key, itemid text); + insert into packages values ('kept-1-x86_64-1_x', 'misc/kept'), + ('gone-1-x86_64-1_x', 'misc/gone'), ('gone-doc-1-noarch-1_x', 'misc/gone'), + ('evil-1', '-rf/x'); + """) + db.close() + kind = sbb.KINDS["slackrepo"] + self.assertEqual(kind(self.cfg, ["prune", "--preview"]), + (["slackrepo", "--repo=SBo-danix", "remove", "--preview", "misc/gone"], {})) + self.assertEqual(sbb.cmd_stats(self.cfg)["prunable"], 1) + with self.assertRaises(sbb.Error): + kind(self.cfg, ["prune", "kept"]) + self.make_pkg("misc/gone") + with self.assertRaisesRegex(sbb.Error, "nothing to prune"): + kind(self.cfg, ["prune"]) + def test_publish(self): self.assertEqual(sbb.KINDS["publish"](self.cfg, []), (["sb-publish"], {})) with self.assertRaises(sbb.Error): @@ -749,6 +769,32 @@ class JobsTest(Base): m = sbb.read_meta(d) self.assertEqual((m["status"], m["exit"]), ("failed", 3)) + def slackrepo_job(self, results, args=("build", "a", "b")): + jid, d = self.make_job(["sh", "-c", "exit 0"], kind="slackrepo", args=list(args)) + db = sqlite3.connect(self.cfg["slackrepo_db"]) + db.execute("create table buildresults (itemid text primary key, time text, result text)") + db.execute("insert into buildresults values ('cat/old', '1', 'failed')") # before the job + db.executemany("insert into buildresults values (?, ?, ?)", + [(i, str(int(time.time()) + 1), r) for i, r in results.items()]) + db.commit() + db.close() + sbb.cmd_run(self.cfg, jid) + return sbb.read_meta(d) + + def test_run_results_failed(self): + m = self.slackrepo_job({"cat/a": "ok", "cat/b": "aborted"}) + self.assertEqual((m["status"], m["exit"]), ("failed", 0)) + self.assertEqual(m["results"], {"cat/a": "ok", "cat/b": "aborted"}) + + def test_run_results_ok(self): + m = self.slackrepo_job({"cat/a": "ok", "cat/b": "skipped"}) + self.assertEqual((m["status"], m["results"]), ("ok", {"cat/a": "ok", "cat/b": "skipped"})) + + def test_run_preview_no_results(self): + m = self.slackrepo_job({"cat/a": "failed"}, args=("build", "--preview", "a")) + self.assertEqual(m["status"], "ok") + self.assertNotIn("results", m) + def test_run_missing_program(self): jid, d = self.make_job(["/nonexistent/prog"]) sbb.cmd_run(self.cfg, jid) |
