Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/pactest
diff options
context:
space:
mode:
Diffstat (limited to 'pactest')
-rw-r--r--pactest/Makefile.am3
-rw-r--r--pactest/README25
-rwxr-xr-xpactest/pmenv.py8
-rwxr-xr-xpactest/pmfile.py8
-rw-r--r--pactest/tests/Makefile.am27
-rw-r--r--pactest/tests/ignore001.py17
-rw-r--r--pactest/tests/ignore002.py35
-rw-r--r--pactest/tests/ignore003.py35
-rw-r--r--pactest/tests/ignore004.py46
-rw-r--r--pactest/tests/ignore005.py46
-rw-r--r--pactest/tests/provision020.py2
-rw-r--r--pactest/tests/provision022.py2
-rw-r--r--pactest/tests/remove030.py6
-rw-r--r--pactest/tests/sync1008.py2
-rw-r--r--pactest/tests/sync200.py.in (renamed from pactest/tests/sync200.py)3
-rw-r--r--pactest/tests/sync300.py2
-rwxr-xr-xpactest/util.py6
17 files changed, 249 insertions, 24 deletions
diff --git a/pactest/Makefile.am b/pactest/Makefile.am
index ce611f78..64f9a22e 100644
--- a/pactest/Makefile.am
+++ b/pactest/Makefile.am
@@ -1,3 +1,5 @@
+SUBDIRS = tests
+
check_SCRIPTS = \
pactest.py \
pmdb.py \
@@ -7,7 +9,6 @@ check_SCRIPTS = \
pmrule.py \
pmtest.py \
util.py \
- $(wildcard tests/*.py) \
vercmptest.sh
noinst_SCRIPTS = $(check_SCRIPTS)
diff --git a/pactest/README b/pactest/README
index 5d4e47fc..8f97a17d 100644
--- a/pactest/README
+++ b/pactest/README
@@ -70,12 +70,12 @@ Usage
pactest will run the suite of tests defined by the "--test" parameter.
Example:
- ./pactest.py --test=test/*
+ ./pactest.py --test tests/*.py
-This example will run tests from the "test" directory.
+This example will run all tests from the "tests" directory.
Note: several "--test" options can be passed to pactest.
-Use the ""help" option to get the full list of parameters:
+Use the "help" option to get the full list of parameters:
./pactest.py --help
@@ -103,15 +103,22 @@ Example:
------
A dictionary that holds the data used in the pacman configuration file.
-It has 3 keys, each one of them pointing at a list of strings:
- - noupgrade
- - noextract
- - ignorepkg
+The following options are known to be useful in pactest tests; this list
+is not necessarily complete:
+ - HoldPkg
+ - IgnorePkg
+ - IgnoreGroup
+ - SyncFirst
+ - NoExtract
+ - NoUpgrade
+ - XferCommand
+
+For documentation on these options, see the pacman.conf documentation.
Examples:
- self.option["noupgrade"] = ["etc/X11/xorg.conf",
+ self.option["NoUpgrade"] = ["etc/X11/xorg.conf",
"etc/pacman.conf"]
- self.option["noextract"] = ["etc/lilo.conf"]
+ self.option["NoExtract"] = ["etc/lilo.conf"]
filesystem
----------
diff --git a/pactest/pmenv.py b/pactest/pmenv.py
index e9d0b4c9..cc433dd0 100755
--- a/pactest/pmenv.py
+++ b/pactest/pmenv.py
@@ -71,9 +71,11 @@ class pmenv:
t.generate()
# Hack for mtimes consistency
for i in t.rules:
- if i.rule.find("MODIFIED") != -1:
- time.sleep(1.5)
- break
+ if i.rule.find("FILE_MODIFIED") != -1:
+ [test, arg] = i.rule.split("=")
+ for f in t.files:
+ if f.name == arg:
+ f.resettimes()
t.run(self.pacman)
diff --git a/pactest/pmfile.py b/pactest/pmfile.py
index 21baf017..ab4aa2c7 100755
--- a/pactest/pmfile.py
+++ b/pactest/pmfile.py
@@ -56,6 +56,14 @@ class pmfile:
return retval
+ def resettimes(self):
+ """
+ """
+
+ filename = os.path.join(self.root, self.name)
+ os.utime(filename, (355, 355))
+ self.mtime = getmtime(filename)
+ vprint("\tmtime reset (%s)" % self.name)
if __name__ == "__main__":
f = pmfile("/tmp", "foobar")
diff --git a/pactest/tests/Makefile.am b/pactest/tests/Makefile.am
new file mode 100644
index 00000000..b793687b
--- /dev/null
+++ b/pactest/tests/Makefile.am
@@ -0,0 +1,27 @@
+CONFTESTS = $(patsubst %py.in,%py,$(wildcard *.py.in))
+
+check_SCRIPTS = \
+ $(wildcard *.py) \
+ $(CONFTESTS)
+
+noinst_SCRIPTS = $(check_SCRIPTS)
+
+EXTRA_DIST = $(check_SCRIPTS)
+
+CLEANFILES = $(CONFTESTS)
+
+#### Taken from the autoconf scripts Makefile.am ####
+edit = sed \
+ -e 's|@LIBS[@]|$(LIBS)|g' \
+ -e 's|@configure_input[@]|Generated from $@.in; do not edit by hand.|g'
+
+
+$(CONFTESTS): Makefile
+ @echo ' ' GEN $@;
+ @rm -f $@ $@.tmp
+ @test -f $(srcdir)/$@.in && $(edit) $(srcdir)/$@.in >$@.tmp || true
+ @test -f $@.tmp || false
+ @chmod a-w $@.tmp
+ @mv $@.tmp $@
+
+# vim:set ts=2 sw=2 noet:
diff --git a/pactest/tests/ignore001.py b/pactest/tests/ignore001.py
new file mode 100644
index 00000000..bb3fa59a
--- /dev/null
+++ b/pactest/tests/ignore001.py
@@ -0,0 +1,17 @@
+self.description = "Sync with irrelevant ignored packages"
+
+package1 = pmpkg("package1")
+self.addpkg2db("local", package1)
+
+package2 = pmpkg("package2")
+self.addpkg2db("local", package2)
+
+package2up = pmpkg("package2", "2.0-1")
+self.addpkg2db("sync", package2up)
+
+self.option["IgnorePkg"] = ["irrelavent"]
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=package1|1.0-1")
+self.addrule("PKG_VERSION=package2|2.0-1")
diff --git a/pactest/tests/ignore002.py b/pactest/tests/ignore002.py
new file mode 100644
index 00000000..b2c5593a
--- /dev/null
+++ b/pactest/tests/ignore002.py
@@ -0,0 +1,35 @@
+self.description = "Sync with relevant ignored packages"
+
+package1 = pmpkg("package1")
+self.addpkg2db("local", package1)
+
+package2 = pmpkg("package2")
+self.addpkg2db("local", package2)
+
+package3 = pmpkg("package3")
+package3.depends = ["package2=1.0-1"]
+self.addpkg2db("local", package3)
+
+package4 = pmpkg("package4")
+package4.depends = ["package3=1.0-1"]
+self.addpkg2db("local", package4)
+
+package2up = pmpkg("package2", "2.0-1")
+self.addpkg2db("sync", package2up)
+
+package3up = pmpkg("package3", "2.0-1")
+package3up.depends = ["package2=2.0-1"]
+self.addpkg2db("sync", package3up)
+
+package4up = pmpkg("package4", "2.0-1")
+package4up.depends = ["package3=2.0-1"]
+self.addpkg2db("sync", package4up)
+
+self.option["IgnorePkg"] = ["package2"]
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=package1|1.0-1")
+self.addrule("PKG_VERSION=package2|1.0-1")
+self.addrule("PKG_VERSION=package3|1.0-1")
+self.addrule("PKG_VERSION=package4|1.0-1")
diff --git a/pactest/tests/ignore003.py b/pactest/tests/ignore003.py
new file mode 100644
index 00000000..02b3c91c
--- /dev/null
+++ b/pactest/tests/ignore003.py
@@ -0,0 +1,35 @@
+self.description = "Sync with relevant ignored packages and dependency loop"
+
+package1 = pmpkg("package1")
+self.addpkg2db("local", package1)
+
+package2 = pmpkg("package2")
+self.addpkg2db("local", package2)
+
+package3 = pmpkg("package3")
+package3.depends = ["package2=1.0-1"]
+self.addpkg2db("local", package3)
+
+package4 = pmpkg("package4")
+package4.depends = ["package3=1.0-1"]
+self.addpkg2db("local", package4)
+
+package2up = pmpkg("package2", "2.0-1")
+self.addpkg2db("sync", package2up)
+
+package3up = pmpkg("package3", "2.0-1")
+package3up.depends = ["package2=2.0-1", "package4=2.0-1"]
+self.addpkg2db("sync", package3up)
+
+package4up = pmpkg("package4", "2.0-1")
+package4up.depends = ["package3=2.0-1"]
+self.addpkg2db("sync", package4up)
+
+self.option["IgnorePkg"] = ["package2"]
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=package1|1.0-1")
+self.addrule("PKG_VERSION=package2|1.0-1")
+self.addrule("PKG_VERSION=package3|1.0-1")
+self.addrule("PKG_VERSION=package4|1.0-1")
diff --git a/pactest/tests/ignore004.py b/pactest/tests/ignore004.py
new file mode 100644
index 00000000..fff12f62
--- /dev/null
+++ b/pactest/tests/ignore004.py
@@ -0,0 +1,46 @@
+self.description = "Sync with ignore causing top-level to be ignored"
+
+packageA1 = pmpkg("packageA1")
+packageA1.depends = ["packageA2=1.0-1", "packageA3=1.0-1"];
+self.addpkg2db("local", packageA1)
+
+packageA2 = pmpkg("packageA2")
+packageA2.depends = ["packageA4=1.0-1", "packageA5=1.0-1"];
+self.addpkg2db("local", packageA2)
+
+packageA3 = pmpkg("packageA3")
+self.addpkg2db("local", packageA3)
+
+packageA4 = pmpkg("packageA4")
+self.addpkg2db("local", packageA4)
+
+packageA5 = pmpkg("packageA5")
+self.addpkg2db("local", packageA5)
+
+packageA1up = pmpkg("packageA1", "2.0-1")
+packageA1up.depends = ["packageA2=2.0-1", "packageA3=2.0-1"];
+self.addpkg2db("sync", packageA1up)
+
+packageA2up = pmpkg("packageA2", "2.0-1")
+packageA2up.depends = ["packageA4=2.0-1", "packageA5=2.0-1"];
+self.addpkg2db("sync", packageA2up)
+
+packageA3up = pmpkg("packageA3", "2.0-1")
+self.addpkg2db("sync", packageA3up)
+
+packageA4up = pmpkg("packageA4", "2.0-1")
+self.addpkg2db("sync", packageA4up)
+
+packageA5up = pmpkg("packageA5", "2.0-1")
+self.addpkg2db("sync", packageA5up)
+
+
+self.option["IgnorePkg"] = ["packageA3"]
+self.args = "-S packageA1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=packageA1|1.0-1")
+self.addrule("PKG_VERSION=packageA2|1.0-1")
+self.addrule("PKG_VERSION=packageA3|1.0-1")
+self.addrule("PKG_VERSION=packageA4|1.0-1")
+self.addrule("PKG_VERSION=packageA5|1.0-1")
diff --git a/pactest/tests/ignore005.py b/pactest/tests/ignore005.py
new file mode 100644
index 00000000..1957ea4f
--- /dev/null
+++ b/pactest/tests/ignore005.py
@@ -0,0 +1,46 @@
+self.description = "Sync with ignore causing top-level to be included"
+
+packageA1 = pmpkg("packageA1")
+packageA1.depends = ["packageA2>=1.0-1", "packageA3=1.0-1"];
+self.addpkg2db("local", packageA1)
+
+packageA2 = pmpkg("packageA2")
+packageA2.depends = ["packageA4=1.0-1", "packageA5=1.0-1"];
+self.addpkg2db("local", packageA2)
+
+packageA3 = pmpkg("packageA3")
+self.addpkg2db("local", packageA3)
+
+packageA4 = pmpkg("packageA4")
+self.addpkg2db("local", packageA4)
+
+packageA5 = pmpkg("packageA5")
+self.addpkg2db("local", packageA5)
+
+packageA1up = pmpkg("packageA1", "2.0-1")
+packageA1up.depends = ["packageA2>=2.0-1", "packageA3=2.0-1"];
+self.addpkg2db("sync", packageA1up)
+
+packageA2up = pmpkg("packageA2", "2.0-1")
+packageA2up.depends = ["packageA4=2.0-1", "packageA5=2.0-1"];
+self.addpkg2db("sync", packageA2up)
+
+packageA3up = pmpkg("packageA3", "2.0-1")
+self.addpkg2db("sync", packageA3up)
+
+packageA4up = pmpkg("packageA4", "2.0-1")
+self.addpkg2db("sync", packageA4up)
+
+packageA5up = pmpkg("packageA5", "2.0-1")
+self.addpkg2db("sync", packageA5up)
+
+
+self.option["IgnorePkg"] = ["packageA3"]
+self.args = "-S packageA1 packageA2"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=packageA1|1.0-1")
+self.addrule("PKG_VERSION=packageA2|2.0-1")
+self.addrule("PKG_VERSION=packageA3|1.0-1")
+self.addrule("PKG_VERSION=packageA4|2.0-1")
+self.addrule("PKG_VERSION=packageA5|2.0-1")
diff --git a/pactest/tests/provision020.py b/pactest/tests/provision020.py
index 7cb0a01b..c9c0ac36 100644
--- a/pactest/tests/provision020.py
+++ b/pactest/tests/provision020.py
@@ -10,6 +10,6 @@ self.addpkg2db("local", lp)
self.args = "-S %s" % p.name
-self.addrule("PACMAN_RETCODE=1")
+self.addrule("PACMAN_RETCODE=0")
self.addrule("!PKG_EXIST=pkg1")
self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/provision022.py b/pactest/tests/provision022.py
index 4883d428..190a8b66 100644
--- a/pactest/tests/provision022.py
+++ b/pactest/tests/provision022.py
@@ -10,6 +10,6 @@ self.addpkg2db("local", lp)
self.args = "-S %s" % p.name
-self.addrule("PACMAN_RETCODE=1")
+self.addrule("PACMAN_RETCODE=0")
self.addrule("!PKG_EXIST=pkg1")
self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove030.py b/pactest/tests/remove030.py
index 9e2b9da5..e975a4ba 100644
--- a/pactest/tests/remove030.py
+++ b/pactest/tests/remove030.py
@@ -7,7 +7,5 @@ self.option["HoldPkg"] = ["dummy"]
self.args = "-R %s" % p1.name
-self.addrule("PACMAN_RETCODE=0")
-self.addrule("!PKG_EXIST=dummy")
-self.addrule("!FILE_EXIST=etc/dummy.conf")
-self.addrule("!FILE_PACSAVE=etc/dummy.conf")
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=dummy")
diff --git a/pactest/tests/sync1008.py b/pactest/tests/sync1008.py
index a6064597..90c61dfb 100644
--- a/pactest/tests/sync1008.py
+++ b/pactest/tests/sync1008.py
@@ -14,6 +14,6 @@ self.addpkg2db("sync1", sp3)
self.args = "-S pkg"
-self.addrule("PACMAN_RETCODE=1")
+self.addrule("PACMAN_RETCODE=0")
self.addrule("!PKG_EXIST=pkg")
self.addrule("!PKG_EXIST=cpkg")
diff --git a/pactest/tests/sync200.py b/pactest/tests/sync200.py.in
index 9005bd3d..3c11f83f 100644
--- a/pactest/tests/sync200.py
+++ b/pactest/tests/sync200.py.in
@@ -1,5 +1,8 @@
self.description = "Synchronize the local database"
+if not "download" in "@LIBS@":
+ self.option['XferCommand'] = ['/usr/bin/curl %u > %o']
+
sp1 = pmpkg("spkg1", "1.0-1")
sp1.depends = ["spkg2"]
sp2 = pmpkg("spkg2", "2.0-1")
diff --git a/pactest/tests/sync300.py b/pactest/tests/sync300.py
index 31b520a8..36d6758a 100644
--- a/pactest/tests/sync300.py
+++ b/pactest/tests/sync300.py
@@ -9,6 +9,6 @@ self.addpkg2db("sync", sp2)
self.args = "-S %s" % sp1.name
-self.addrule("PACMAN_RETCODE=1")
+self.addrule("PACMAN_RETCODE=0")
self.addrule("!PKG_EXIST=pkg1")
self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/util.py b/pactest/util.py
index db9560fe..da6d44e3 100755
--- a/pactest/util.py
+++ b/pactest/util.py
@@ -18,7 +18,7 @@
import sys
import os
-import md5
+import hashlib
import stat
@@ -198,7 +198,7 @@ def getmd5sum(filename):
print "file %s does not exist!" % filename
return ""
fd = open(filename, "rb")
- checksum = md5.new()
+ checksum = hashlib.md5()
while 1:
block = fd.read(1048576)
if not block:
@@ -211,7 +211,7 @@ def getmd5sum(filename):
def mkmd5sum(data):
"""
"""
- checksum = md5.new()
+ checksum = hashlib.md5()
checksum.update("%s\n" % data)
digest = checksum.digest()
return "%02x"*len(digest) % tuple(map(ord, digest))