aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_remote.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_remote.py')
-rw-r--r--tests/test_remote.py46
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)