[pacman-dev] [PATCH 1/2] Add two new pactests for --dbonly

Dan McGee dan at archlinux.org
Wed May 5 18:22:10 CEST 2010


It caught me by surprise that:
1. These weren't being tested at all
2. The --dbonly combined with -U not only "works" but is also completely
   undocumented. It also has some weird behavior on install vs. upgrade that
   may need addressing.

Add some tests which will hopefully provoke some discussion.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 pactest/tests/database010.py |   17 +++++++++++++++++
 pactest/tests/database011.py |   17 +++++++++++++++++
 pactest/tests/database012.py |   31 +++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 0 deletions(-)
 create mode 100644 pactest/tests/database010.py
 create mode 100644 pactest/tests/database011.py
 create mode 100644 pactest/tests/database012.py

diff --git a/pactest/tests/database010.py b/pactest/tests/database010.py
new file mode 100644
index 0000000..662dc1b
--- /dev/null
+++ b/pactest/tests/database010.py
@@ -0,0 +1,17 @@
+# TODO: these are labeled as database packages because they sure seem to me to
+# be database-type operations. In their current implementation however they are
+# calling -U and -R rather than -D. Obviously the tests will need to be updated
+# if this changes.
+self.description = "Remove a package with --dbonly, no files touched"
+
+p = pmpkg("dummy")
+p.files = ["bin/dummy",
+            "usr/man/man1/dummy.1"]
+self.addpkg2db("local", p)
+
+self.args = "-R --dbonly %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=dummy")
+for f in p.files:
+	self.addrule("FILE_EXIST=%s" % f)
diff --git a/pactest/tests/database011.py b/pactest/tests/database011.py
new file mode 100644
index 0000000..7d475d9
--- /dev/null
+++ b/pactest/tests/database011.py
@@ -0,0 +1,17 @@
+# TODO: these are labeled as database packages because they sure seem to me to
+# be database-type operations. In their current implementation however they are
+# calling -U and -R rather than -D. Obviously the tests will need to be updated
+# if this changes.
+self.description = "Install a package with --dbonly, no files touched"
+
+p = pmpkg("dummy")
+p.files = ["bin/dummy",
+           "usr/man/man1/dummy.1"]
+self.addpkg(p)
+
+self.args = "-U --dbonly %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=dummy")
+for f in p.files:
+	self.addrule("!FILE_EXIST=%s" % f)
diff --git a/pactest/tests/database012.py b/pactest/tests/database012.py
new file mode 100644
index 0000000..a1f8698
--- /dev/null
+++ b/pactest/tests/database012.py
@@ -0,0 +1,31 @@
+# TODO: these are labeled as database packages because they sure seem to me to
+# be database-type operations. In their current implementation however they are
+# calling -U and -R rather than -D. Obviously the tests will need to be updated
+# if this changes.
+self.description = "Upgrade a package with --dbonly, no files touched"
+
+lp = pmpkg("dummy")
+lp.files = ["bin/dummy",
+           "usr/man/man1/dummy.1"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("dummy", "2.0-1")
+p.files = ["bin/dummy",
+           "bin/dummy2",
+           "usr/man/man1/dummy.1"]
+self.addpkg(p)
+
+self.args = "-U --dbonly %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=dummy")
+self.addrule("PKG_VERSION=dummy|2.0-1")
+for f in lp.files:
+	self.addrule("!FILE_EXIST=%s" % f)
+# TODO: I honestly think the above should NOT delete the original files, it
+# should upgrade the DB entry without touching anything on the file system.
+# E.g. this test should be the same as:
+#    pacman -R --dbonly dummy && pacman -U --dbonly dummy.pkg.tar.gz
+#for f in lp.files:
+#	self.addrule("FILE_EXIST=%s" % f)
+self.addrule("!FILE_EXIST=bin/dummy2")
-- 
1.7.1



More information about the pacman-dev mailing list