diff options
Diffstat (limited to 'pactest')
-rw-r--r-- | pactest/Makefile.am | 3 | ||||
-rw-r--r-- | pactest/README | 25 | ||||
-rwxr-xr-x | pactest/pmenv.py | 8 | ||||
-rwxr-xr-x | pactest/pmfile.py | 8 | ||||
-rw-r--r-- | pactest/tests/Makefile.am | 27 | ||||
-rw-r--r-- | pactest/tests/ignore001.py | 17 | ||||
-rw-r--r-- | pactest/tests/ignore002.py | 35 | ||||
-rw-r--r-- | pactest/tests/ignore003.py | 35 | ||||
-rw-r--r-- | pactest/tests/ignore004.py | 46 | ||||
-rw-r--r-- | pactest/tests/ignore005.py | 46 | ||||
-rw-r--r-- | pactest/tests/provision020.py | 2 | ||||
-rw-r--r-- | pactest/tests/provision022.py | 2 | ||||
-rw-r--r-- | pactest/tests/remove030.py | 6 | ||||
-rw-r--r-- | pactest/tests/sync1008.py | 2 | ||||
-rw-r--r-- | pactest/tests/sync200.py.in (renamed from pactest/tests/sync200.py) | 3 | ||||
-rw-r--r-- | pactest/tests/sync300.py | 2 | ||||
-rwxr-xr-x | pactest/util.py | 6 |
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)) |