summaryrefslogtreecommitdiff
path: root/pactest/tests
diff options
context:
space:
mode:
Diffstat (limited to 'pactest/tests')
-rw-r--r--pactest/tests/add030.py18
-rw-r--r--pactest/tests/add031.py18
-rw-r--r--pactest/tests/add032.py18
-rw-r--r--pactest/tests/add043.py15
-rw-r--r--pactest/tests/add044.py15
-rw-r--r--pactest/tests/add045.py15
-rw-r--r--pactest/tests/depconflict100.py15
-rw-r--r--pactest/tests/depconflict110.py13
-rw-r--r--pactest/tests/depconflict111.py13
-rw-r--r--pactest/tests/depconflict120.py19
-rw-r--r--pactest/tests/deptest001.py20
-rw-r--r--pactest/tests/fileconflict001.py20
-rw-r--r--pactest/tests/fileconflict002.py16
-rw-r--r--pactest/tests/mode001.py12
-rw-r--r--pactest/tests/pacman001.py5
-rw-r--r--pactest/tests/pacman002.py5
-rw-r--r--pactest/tests/pacman003.py5
-rw-r--r--pactest/tests/pacman004.py5
-rw-r--r--pactest/tests/query001.py2
-rw-r--r--pactest/tests/query002.py23
-rw-r--r--pactest/tests/query003.py10
-rw-r--r--pactest/tests/query004.py10
-rw-r--r--pactest/tests/remove040.py2
-rw-r--r--pactest/tests/remove041.py21
-rw-r--r--pactest/tests/remove042.py17
-rw-r--r--pactest/tests/remove043.py18
-rw-r--r--pactest/tests/remove044.py16
-rw-r--r--pactest/tests/remove045.py30
-rw-r--r--pactest/tests/remove046.py10
-rw-r--r--pactest/tests/remove047.py25
-rw-r--r--pactest/tests/remove048.py10
-rw-r--r--pactest/tests/requiredby001.py20
-rw-r--r--pactest/tests/requiredby002.py16
-rw-r--r--pactest/tests/requiredby003.py16
-rw-r--r--pactest/tests/requiredby004.py20
-rw-r--r--pactest/tests/requiredby005.py21
-rw-r--r--pactest/tests/requiredby006.py21
-rw-r--r--pactest/tests/scriptlet001.py5
-rw-r--r--pactest/tests/scriptlet002.py21
-rw-r--r--pactest/tests/symlink001.py20
-rw-r--r--pactest/tests/sync011.py20
-rw-r--r--pactest/tests/sync012.py20
-rw-r--r--pactest/tests/sync030.py19
-rw-r--r--pactest/tests/sync044.py20
-rw-r--r--pactest/tests/sync060.py15
-rw-r--r--pactest/tests/sync1002.py19
-rw-r--r--pactest/tests/sync1003.py26
-rw-r--r--pactest/tests/sync1004.py18
-rw-r--r--pactest/tests/sync1005.py14
-rw-r--r--pactest/tests/sync1006.py14
-rw-r--r--pactest/tests/sync1100.py23
-rw-r--r--pactest/tests/sync1101.py11
-rw-r--r--pactest/tests/sync1102.py12
-rw-r--r--pactest/tests/sync1103.py11
-rw-r--r--pactest/tests/sync138.py22
-rw-r--r--pactest/tests/sync300.py15
-rw-r--r--pactest/tests/sync301.py25
-rw-r--r--pactest/tests/sync400.py25
-rw-r--r--pactest/tests/sync401.py21
-rw-r--r--pactest/tests/sync402.py21
-rw-r--r--pactest/tests/sync403.py21
-rw-r--r--pactest/tests/sync500.py10
-rw-r--r--pactest/tests/sync900.py28
-rw-r--r--pactest/tests/sync901.py28
-rw-r--r--pactest/tests/sync990.py7
-rw-r--r--pactest/tests/trans001.py20
-rw-r--r--pactest/tests/type001.py17
-rw-r--r--pactest/tests/upgrade010.py1
-rw-r--r--pactest/tests/upgrade020.py1
-rw-r--r--pactest/tests/upgrade021.py1
-rw-r--r--pactest/tests/upgrade022.py1
-rw-r--r--pactest/tests/upgrade023.py1
-rw-r--r--pactest/tests/upgrade024.py15
-rw-r--r--pactest/tests/upgrade025.py17
-rw-r--r--pactest/tests/upgrade031.py19
-rw-r--r--pactest/tests/upgrade056.py1
-rw-r--r--pactest/tests/upgrade059.py28
-rw-r--r--pactest/tests/upgrade060.py22
-rw-r--r--pactest/tests/upgrade061.py23
79 files changed, 1173 insertions, 60 deletions
diff --git a/pactest/tests/add030.py b/pactest/tests/add030.py
deleted file mode 100644
index d36311c0..00000000
--- a/pactest/tests/add030.py
+++ /dev/null
@@ -1,18 +0,0 @@
-self.description = "Freshen a package"
-
-lp = pmpkg("dummy")
-lp.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg2db("local", lp)
-
-p = pmpkg("dummy", "1.0-2")
-p.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg(p)
-
-self.args = "-F %s" % p.filename()
-
-self.addrule("PACMAN_RETCODE=0")
-self.addrule("PKG_VERSION=dummy|1.0-2")
-for f in p.files:
- self.addrule("FILE_MODIFIED=%s" % f)
diff --git a/pactest/tests/add031.py b/pactest/tests/add031.py
deleted file mode 100644
index 38b0485c..00000000
--- a/pactest/tests/add031.py
+++ /dev/null
@@ -1,18 +0,0 @@
-self.description = "Freshen a package (installed is newer)"
-
-lp = pmpkg("dummy", "1.0-2")
-lp.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg2db("local", lp)
-
-p = pmpkg("dummy")
-p.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg(p)
-
-self.args = "-F %s" % p.filename()
-
-self.addrule("PACMAN_RETCODE=1")
-self.addrule("!PKG_MODIFIED=dummy")
-for f in p.files:
- self.addrule("!FILE_MODIFIED=%s" % f)
diff --git a/pactest/tests/add032.py b/pactest/tests/add032.py
deleted file mode 100644
index 2c5a11fa..00000000
--- a/pactest/tests/add032.py
+++ /dev/null
@@ -1,18 +0,0 @@
-self.description = "Freshen a package (installed is same)"
-
-lp = pmpkg("dummy")
-lp.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg2db("local", lp)
-
-p = pmpkg("dummy")
-p.files = ["bin/dummy",
- "usr/man/man1/dummy.1"]
-self.addpkg(p)
-
-self.args = "-F %s" % p.filename()
-
-self.addrule("PACMAN_RETCODE=1")
-self.addrule("!PKG_MODIFIED=dummy")
-for f in p.files:
- self.addrule("!FILE_MODIFIED=%s" % f)
diff --git a/pactest/tests/add043.py b/pactest/tests/add043.py
new file mode 100644
index 00000000..18f732ee
--- /dev/null
+++ b/pactest/tests/add043.py
@@ -0,0 +1,15 @@
+self.description = "provision>=1.0-2 dependency"
+
+p = pmpkg("pkg1", "1.0-2")
+p.depends = ["provision>=1.0-2"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.0-2")
+lp.provides = ["provision"]
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/add044.py b/pactest/tests/add044.py
new file mode 100644
index 00000000..cbc82e9d
--- /dev/null
+++ b/pactest/tests/add044.py
@@ -0,0 +1,15 @@
+self.description = "provision>=1.0-2 dependency (2)"
+
+p = pmpkg("pkg1", "1.0-2")
+p.depends = ["provision>=1.0-2"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.0-2")
+lp.provides = ["provision 1.0-2"]
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/add045.py b/pactest/tests/add045.py
new file mode 100644
index 00000000..b53e0906
--- /dev/null
+++ b/pactest/tests/add045.py
@@ -0,0 +1,15 @@
+self.description = "provision>=1.0-2 dependency (3)"
+
+p = pmpkg("pkg1", "1.0-2")
+p.depends = ["provision>=1.0-2"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.0-2")
+lp.provides = ["provision 1.0-1"]
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/depconflict100.py b/pactest/tests/depconflict100.py
new file mode 100644
index 00000000..948017d9
--- /dev/null
+++ b/pactest/tests/depconflict100.py
@@ -0,0 +1,15 @@
+self.description = "a package conflicts with itself"
+
+sp1 = pmpkg("pkg1")
+sp1.conflicts = ["pkg1"]
+self.addpkg2db("sync", sp1);
+
+sp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("sync", sp2)
+
+self.args = "-S %s" % " ".join([p.name for p in sp1, sp2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
diff --git a/pactest/tests/depconflict110.py b/pactest/tests/depconflict110.py
new file mode 100644
index 00000000..2e326f52
--- /dev/null
+++ b/pactest/tests/depconflict110.py
@@ -0,0 +1,13 @@
+self.description = "conflict with version (conflict)"
+
+p = pmpkg("pkg1")
+p.conflicts = ["pkg2<=1.0-2"]
+self.addpkg(p);
+
+lp = pmpkg("pkg2", "1.0-1")
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/depconflict111.py b/pactest/tests/depconflict111.py
new file mode 100644
index 00000000..6f95733b
--- /dev/null
+++ b/pactest/tests/depconflict111.py
@@ -0,0 +1,13 @@
+self.description = "conflict with version (no conflict)"
+
+p = pmpkg("pkg1")
+p.conflicts = ["pkg2=1.0-2"]
+self.addpkg(p);
+
+lp = pmpkg("pkg2", "1.0-1")
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/depconflict120.py b/pactest/tests/depconflict120.py
new file mode 100644
index 00000000..a9f3f6b3
--- /dev/null
+++ b/pactest/tests/depconflict120.py
@@ -0,0 +1,19 @@
+self.description = "target vs db conflict will disappear after upgrade"
+
+sp1 = pmpkg("pkg1")
+sp1.conflicts = ["imaginary"]
+self.addpkg2db("sync", sp1);
+
+sp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("sync", sp2)
+
+lp = pmpkg("pkg2", "1.0-1")
+lp.provides = ["imaginary"]
+self.addpkg2db("local", lp)
+
+self.args = "-S %s" % " ".join([p.name for p in sp1, sp2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
diff --git a/pactest/tests/deptest001.py b/pactest/tests/deptest001.py
new file mode 100644
index 00000000..db0b7684
--- /dev/null
+++ b/pactest/tests/deptest001.py
@@ -0,0 +1,20 @@
+self.description = "test deptest (-T) functionality"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp1dep = pmpkg("dep")
+self.addpkg2db("sync", sp1dep)
+
+sp2 = pmpkg("pkg2")
+self.addpkg2db("sync", sp2)
+
+lp2 = pmpkg("pkg2")
+self.addpkg2db("local", lp2)
+
+self.args = "-T pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=127")
+self.addrule("PACMAN_OUTPUT=pkg1")
+self.addrule("!PACMAN_OUTPUT=pkg2")
diff --git a/pactest/tests/fileconflict001.py b/pactest/tests/fileconflict001.py
new file mode 100644
index 00000000..8aca9a0a
--- /dev/null
+++ b/pactest/tests/fileconflict001.py
@@ -0,0 +1,20 @@
+self.description = "Fileconflict with symlinks"
+
+lp = pmpkg("dummy")
+lp.files = ["dir/realdir/",
+ "dir/symdir -> realdir"]
+self.addpkg2db("local", lp)
+
+p1 = pmpkg("pkg1")
+p1.files = ["dir/realdir/file"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2")
+p2.files = ["dir/symdir/file"]
+self.addpkg(p2)
+
+self.args = "-A %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/fileconflict002.py b/pactest/tests/fileconflict002.py
new file mode 100644
index 00000000..da04e332
--- /dev/null
+++ b/pactest/tests/fileconflict002.py
@@ -0,0 +1,16 @@
+self.description = "Fileconflict with symlinks (2)"
+
+p1 = pmpkg("pkg1")
+p1.files = ["dir/realdir/file",
+ "dir/symdir -> realdir"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2")
+p2.files = ["dir/symdir/file"]
+self.addpkg(p2)
+
+self.args = "-A %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/mode001.py b/pactest/tests/mode001.py
new file mode 100644
index 00000000..ff245a2c
--- /dev/null
+++ b/pactest/tests/mode001.py
@@ -0,0 +1,12 @@
+self.description = "Check the mode of default files in a package"
+
+p = pmpkg("pkg1")
+p.files = ["bin/foo"
+ "bin/bar"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+for f in p.files:
+ self.addrule("FILE_MODE=%s|644" % f)
diff --git a/pactest/tests/pacman001.py b/pactest/tests/pacman001.py
new file mode 100644
index 00000000..d467e3f2
--- /dev/null
+++ b/pactest/tests/pacman001.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (--version)"
+
+self.args = "--version"
+
+self.addrule("PACMAN_RETCODE=2")
diff --git a/pactest/tests/pacman002.py b/pactest/tests/pacman002.py
new file mode 100644
index 00000000..c0217259
--- /dev/null
+++ b/pactest/tests/pacman002.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (--help)"
+
+self.args = "--help"
+
+self.addrule("PACMAN_RETCODE=2")
diff --git a/pactest/tests/pacman003.py b/pactest/tests/pacman003.py
new file mode 100644
index 00000000..b5275943
--- /dev/null
+++ b/pactest/tests/pacman003.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (-S --help)"
+
+self.args = "-S --help"
+
+self.addrule("PACMAN_RETCODE=2")
diff --git a/pactest/tests/pacman004.py b/pactest/tests/pacman004.py
new file mode 100644
index 00000000..d8d6b102
--- /dev/null
+++ b/pactest/tests/pacman004.py
@@ -0,0 +1,5 @@
+self.description = "Test command line option (-v)"
+
+self.args = "-v"
+
+self.addrule("PACMAN_RETCODE=1")
diff --git a/pactest/tests/query001.py b/pactest/tests/query001.py
index 315af84a..8faf0e15 100644
--- a/pactest/tests/query001.py
+++ b/pactest/tests/query001.py
@@ -7,4 +7,4 @@ self.addpkg2db("local", p)
self.args = "-Q %s" % p.name
self.addrule("PACMAN_RETCODE=0")
-self.addrule("PACMAN_OUTPUT=foobar")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
diff --git a/pactest/tests/query002.py b/pactest/tests/query002.py
new file mode 100644
index 00000000..c6a6c7d3
--- /dev/null
+++ b/pactest/tests/query002.py
@@ -0,0 +1,23 @@
+self.description = "Query info on a package"
+
+p = pmpkg("foobar")
+p.files = ["bin/foobar"]
+p.desc = "test description"
+p.groups = ["foo"]
+p.url = "http://www.archlinux.org"
+p.license = "GPL2"
+p.arch = "i686"
+# test both old style and new style dates
+p.builddate = "Mon Oct 1 01:40:21 2007 UTC"
+p.installdate = "1196640127"
+p.packager = "Arch Linux"
+
+self.addpkg2db("local", p)
+
+self.args = "-Qi %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
+self.addrule("PACMAN_OUTPUT=%s" % p.desc)
+self.addrule("PACMAN_OUTPUT=Oct")
+self.addrule("PACMAN_OUTPUT=Dec")
diff --git a/pactest/tests/query003.py b/pactest/tests/query003.py
new file mode 100644
index 00000000..ea113081
--- /dev/null
+++ b/pactest/tests/query003.py
@@ -0,0 +1,10 @@
+self.description = "Query search for a package"
+
+p = pmpkg("foobar")
+p.files = ["bin/foobar"]
+self.addpkg2db("local", p)
+
+self.args = "-Qs %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
diff --git a/pactest/tests/query004.py b/pactest/tests/query004.py
new file mode 100644
index 00000000..8faf0e15
--- /dev/null
+++ b/pactest/tests/query004.py
@@ -0,0 +1,10 @@
+self.description = "Query a package"
+
+p = pmpkg("foobar")
+p.files = ["bin/foobar"]
+self.addpkg2db("local", p)
+
+self.args = "-Q %s" % p.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % p.name)
diff --git a/pactest/tests/remove040.py b/pactest/tests/remove040.py
index d15984b3..07d3e67d 100644
--- a/pactest/tests/remove040.py
+++ b/pactest/tests/remove040.py
@@ -1,4 +1,4 @@
-self.description = "Remove a package required by another package"
+self.description = "Remove a package that requires another package"
lp1 = pmpkg("pkg1")
lp1.depends = ["imaginary"]
diff --git a/pactest/tests/remove041.py b/pactest/tests/remove041.py
new file mode 100644
index 00000000..9ab7bf74
--- /dev/null
+++ b/pactest/tests/remove041.py
@@ -0,0 +1,21 @@
+self.description = "Remove a no longer needed package (multiple provision)"
+
+lp1 = pmpkg("pkg1")
+lp1.provides = ["imaginary"]
+lp1.requiredby = ["pkg3"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["imaginary"]
+lp2.requiredby = ["pkg3"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.depends = ["imaginary"]
+self.addpkg2db("local", lp3)
+
+self.args = "-R %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove042.py b/pactest/tests/remove042.py
new file mode 100644
index 00000000..5de1fb41
--- /dev/null
+++ b/pactest/tests/remove042.py
@@ -0,0 +1,17 @@
+self.description = "Cascade remove a package required by another package"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["imaginary"]
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+
+self.args = "-Rc %s" % lp2.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove043.py b/pactest/tests/remove043.py
new file mode 100644
index 00000000..a377c58b
--- /dev/null
+++ b/pactest/tests/remove043.py
@@ -0,0 +1,18 @@
+self.description = "Remove a package required by another package"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["imaginary"]
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+
+self.args = "-R %s" % lp2.name
+
+self.addrule("!PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/remove044.py b/pactest/tests/remove044.py
new file mode 100644
index 00000000..720c1fe7
--- /dev/null
+++ b/pactest/tests/remove044.py
@@ -0,0 +1,16 @@
+self.description = "-Rs test"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.1-1"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.reason = 1
+self.addpkg2db("local", lp2)
+
+
+self.args = "-Rs %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/remove045.py b/pactest/tests/remove045.py
new file mode 100644
index 00000000..d8b7845b
--- /dev/null
+++ b/pactest/tests/remove045.py
@@ -0,0 +1,30 @@
+self.description = "-Rs advanced test"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2" , "pkg3"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.reason = 1
+lp2.depends = ["pkg4"]
+lp2.requiredby = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.reason = 1
+lp3.requiredby = ["pkg1", "pkg4"]
+self.addpkg2db("local", lp3)
+
+lp4 = pmpkg("pkg4")
+lp4.reason = 1
+lp4.depends = ["pkg3"]
+lp4.requiredby = ["pkg2"]
+self.addpkg2db("local", lp4)
+
+self.args = "-Rs %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
+self.addrule("!PKG_EXIST=pkg3")
+self.addrule("!PKG_EXIST=pkg4")
diff --git a/pactest/tests/remove046.py b/pactest/tests/remove046.py
new file mode 100644
index 00000000..1ee8be17
--- /dev/null
+++ b/pactest/tests/remove046.py
@@ -0,0 +1,10 @@
+self.description = "Cascade remove a package with a broken required by"
+
+lp1 = pmpkg("pkg1")
+lp1.requiredby = [ "fake" ]
+self.addpkg2db("local", lp1)
+
+self.args = "-Rc %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
diff --git a/pactest/tests/remove047.py b/pactest/tests/remove047.py
new file mode 100644
index 00000000..9606c2e3
--- /dev/null
+++ b/pactest/tests/remove047.py
@@ -0,0 +1,25 @@
+self.description = "Remove a package required by other packages"
+
+lp1 = pmpkg("pkg1")
+lp1.requiredby = ["pkg2", "pkg3", "pkg4"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.depends = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.depends = ["pkg1"]
+self.addpkg2db("local", lp3)
+
+lp4 = pmpkg("pkg4")
+lp4.depends = ["pkg1"]
+self.addpkg2db("local", lp4)
+
+self.args = "-R pkg1 pkg2"
+
+self.addrule("!PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
+self.addrule("PKG_EXIST=pkg4")
diff --git a/pactest/tests/remove048.py b/pactest/tests/remove048.py
new file mode 100644
index 00000000..2d9b4803
--- /dev/null
+++ b/pactest/tests/remove048.py
@@ -0,0 +1,10 @@
+self.description = "Remove a package with a broken required by"
+
+lp1 = pmpkg("pkg1")
+lp1.requiredby = [ "dep" ]
+self.addpkg2db("local", lp1)
+
+self.args = "-R %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
diff --git a/pactest/tests/requiredby001.py b/pactest/tests/requiredby001.py
new file mode 100644
index 00000000..0f05d82c
--- /dev/null
+++ b/pactest/tests/requiredby001.py
@@ -0,0 +1,20 @@
+self.description = "A package is downgraded no longer satisfying a depend"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.1"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.1-1")
+lp2.requiredby = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+p = pmpkg("pkg2", "1.0-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.1-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby002.py b/pactest/tests/requiredby002.py
new file mode 100644
index 00000000..299ec88b
--- /dev/null
+++ b/pactest/tests/requiredby002.py
@@ -0,0 +1,16 @@
+self.description = "A package was removed with -Rd, then downgraded"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.1"]
+self.addpkg2db("local", lp1)
+
+p = pmpkg("pkg2", "1.0-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby003.py b/pactest/tests/requiredby003.py
new file mode 100644
index 00000000..3279c2ab
--- /dev/null
+++ b/pactest/tests/requiredby003.py
@@ -0,0 +1,16 @@
+self.description = "A package was removed with -Rd, then upgraded"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2>=1.1"]
+self.addpkg2db("local", lp1)
+
+p = pmpkg("pkg2", "1.2-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.2-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby004.py b/pactest/tests/requiredby004.py
new file mode 100644
index 00000000..c4fe7687
--- /dev/null
+++ b/pactest/tests/requiredby004.py
@@ -0,0 +1,20 @@
+self.description = "Upgrade a package that no longer needs a depend"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.requiredby = ["pkg1"]
+self.addpkg2db("local", lp2)
+
+p = pmpkg("pkg1", "1.1-1")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg1|1.1-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/requiredby005.py b/pactest/tests/requiredby005.py
new file mode 100644
index 00000000..5b2ce164
--- /dev/null
+++ b/pactest/tests/requiredby005.py
@@ -0,0 +1,21 @@
+self.description = "Remove lp1, requiredby should move from lp1 to lp2"
+
+lp1 = pmpkg("foo")
+lp1.requiredby = ["pkg3"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.provides = ["foo"]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3")
+lp3.depends = ["foo"]
+self.addpkg2db("local", lp3)
+
+
+self.args = "-R %s" % lp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=foo")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg3")
diff --git a/pactest/tests/requiredby006.py b/pactest/tests/requiredby006.py
new file mode 100644
index 00000000..ea14cde5
--- /dev/null
+++ b/pactest/tests/requiredby006.py
@@ -0,0 +1,21 @@
+self.description = "Broken requiredby/depends list"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.requiredby = ["foo", "pkg1"]
+self.addpkg2db("local", lp2)
+
+p = pmpkg("pkg1", "1.1-1")
+p.depends = ["pkg2"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg1|1.1-1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/scriptlet001.py b/pactest/tests/scriptlet001.py
index 73bb7691..3609d167 100644
--- a/pactest/tests/scriptlet001.py
+++ b/pactest/tests/scriptlet001.py
@@ -2,6 +2,10 @@
# validity of the scripts, only that they fire (or try to)
self.description = "Scriptlet test (pre/post install)"
+lpsh = pmpkg("sh")
+lpsh.files = ['bin/sh']
+self.addpkg2db("local", lpsh)
+
p1 = pmpkg("dummy")
p1.files = ['etc/dummy.conf']
p1.install['pre_install'] = "ls /etc";
@@ -12,5 +16,6 @@ self.addpkg(p1)
self.args = "--debug -U %s" % p1.filename()
self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_EXIST=bin/sh")
self.addrule("PACMAN_OUTPUT=pre_install")
self.addrule("PACMAN_OUTPUT=post_install")
diff --git a/pactest/tests/scriptlet002.py b/pactest/tests/scriptlet002.py
new file mode 100644
index 00000000..38ed5fd0
--- /dev/null
+++ b/pactest/tests/scriptlet002.py
@@ -0,0 +1,21 @@
+# quick note here - chroot() is expected to fail. We're not checking the
+# validity of the scripts, only that they fire (or try to)
+self.description = "Scriptlet test (pre/post remove)"
+
+lpsh = pmpkg("sh")
+lpsh.files = ['bin/sh']
+self.addpkg2db("local", lpsh)
+
+p1 = pmpkg("dummy")
+p1.files = ['etc/dummy.conf']
+p1.install['pre_remove'] = "ls /etc";
+p1.install['post_remove'] = "ls /etc";
+self.addpkg2db("local", p1)
+
+# --debug is necessary to check PACMAN_OUTPUT
+self.args = "--debug -R %s" % p1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_EXIST=bin/sh")
+self.addrule("PACMAN_OUTPUT=pre_remove")
+self.addrule("PACMAN_OUTPUT=post_remove")
diff --git a/pactest/tests/symlink001.py b/pactest/tests/symlink001.py
new file mode 100644
index 00000000..cbf71ccc
--- /dev/null
+++ b/pactest/tests/symlink001.py
@@ -0,0 +1,20 @@
+self.description = "Dir symlinks overwritten on install (the perl/git bug)"
+
+lp = pmpkg("dummy")
+lp.files = ["dir/realdir/",
+ "dir/symdir -> realdir"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("pkg1")
+p.files = ["dir/symdir/tmp"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("FILE_EXIST=dir/symdir/tmp")
+self.addrule("FILE_EXIST=dir/realdir/tmp")
+self.addrule("FILE_TYPE=dir/symdir/tmp|file")
+self.addrule("FILE_TYPE=dir/symdir|link")
+self.addrule("FILE_TYPE=dir/realdir|dir")
diff --git a/pactest/tests/sync011.py b/pactest/tests/sync011.py
new file mode 100644
index 00000000..f5b1943a
--- /dev/null
+++ b/pactest/tests/sync011.py
@@ -0,0 +1,20 @@
+self.description = "Install a package from a sync db with cascaded dependencies + provides"
+
+sp1 = pmpkg("dummy", "1.0-2")
+sp1.depends = ["dep1", "dep2=1.0-2"]
+
+sp2 = pmpkg("dep1")
+sp2.files = ["bin/dep1"]
+sp2.provides = ["dep2"]
+
+sp3 = pmpkg("dep2", "1.0-2")
+
+for p in sp1, sp2, sp3:
+ self.addpkg2db("sync", p);
+
+self.args = "-S %s" % sp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=dummy|1.0-2")
+self.addrule("PKG_EXIST=dep1")
+self.addrule("PKG_EXIST=dep2")
diff --git a/pactest/tests/sync012.py b/pactest/tests/sync012.py
new file mode 100644
index 00000000..3aaba376
--- /dev/null
+++ b/pactest/tests/sync012.py
@@ -0,0 +1,20 @@
+self.description = "Install packages from a sync db with circular dependencies"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["pkg2"]
+
+sp2 = pmpkg("pkg2")
+sp2.depends = ["pkg3"]
+
+sp3 = pmpkg("pkg3")
+sp3.depends = ["pkg1"]
+
+for p in sp1, sp2, sp3:
+ self.addpkg2db("sync", p);
+
+self.args = "-S %s" % sp1.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync030.py b/pactest/tests/sync030.py
new file mode 100644
index 00000000..1fd97500
--- /dev/null
+++ b/pactest/tests/sync030.py
@@ -0,0 +1,19 @@
+self.description = "Sync packages non-explicitly"
+
+lp1 = pmpkg("pkg1")
+lp1.reason = 0
+self.addpkg2db("local", lp1)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p2 = pmpkg("pkg2", "1.0-2")
+
+for p in p1, p2:
+ self.addpkg2db("sync", p)
+
+self.args = "-S --asdeps %s" % " ".join([p.name for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
+self.addrule("PKG_REASON=pkg1|1")
+self.addrule("PKG_REASON=pkg2|1")
diff --git a/pactest/tests/sync044.py b/pactest/tests/sync044.py
new file mode 100644
index 00000000..c4ff1549
--- /dev/null
+++ b/pactest/tests/sync044.py
@@ -0,0 +1,20 @@
+self.description = "A dependency induces a replacement"
+
+lp1 = pmpkg("pkg1")
+self.addpkg2db("local", lp1);
+
+sp2 = pmpkg("pkg2")
+sp2.depends = ["pkg3"]
+self.addpkg2db("sync", sp2);
+
+sp3 = pmpkg("pkg3")
+sp3.conflicts = ["pkg1"]
+self.addpkg2db("sync", sp3);
+
+self.args = "-S pkg2"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
+self.addrule("PKG_REASON=pkg3|1")
diff --git a/pactest/tests/sync060.py b/pactest/tests/sync060.py
new file mode 100644
index 00000000..45f0c3e0
--- /dev/null
+++ b/pactest/tests/sync060.py
@@ -0,0 +1,15 @@
+self.description = "Replace a package with a broken required by"
+
+lp1 = pmpkg("pkg1")
+lp1.replaces = [ "pkg2" ]
+self.addpkg2db("sync", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.requiredby = [ "fake" ]
+self.addpkg2db("local", lp2)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
diff --git a/pactest/tests/sync1002.py b/pactest/tests/sync1002.py
new file mode 100644
index 00000000..c158838b
--- /dev/null
+++ b/pactest/tests/sync1002.py
@@ -0,0 +1,19 @@
+self.description = "Test -Se (resolve the dependencies' dependencies )"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = [ "pkg2" ]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.depends = [ "pkg3" ]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+self.addpkg2db("sync", sp3)
+
+self.args = "-Se pkg1 pkg3"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
+self.addrule("!PKG_EXIST=pkg1")
diff --git a/pactest/tests/sync1003.py b/pactest/tests/sync1003.py
new file mode 100644
index 00000000..3fd9799d
--- /dev/null
+++ b/pactest/tests/sync1003.py
@@ -0,0 +1,26 @@
+self.description = "Induced removal would break dependency"
+
+sp1 = pmpkg("pkg1", "1.0-2")
+sp1.replaces = [ "pkg2" ]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3", "1.0-2")
+sp3.depends = ["pkg2=1.0-2"]
+self.addpkg2db("sync", sp3)
+
+lp1 = pmpkg("pkg1", "1.0-1")
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-2")
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3", "1.0-1")
+self.addpkg2db("local", lp3)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=pkg2")
diff --git a/pactest/tests/sync1004.py b/pactest/tests/sync1004.py
new file mode 100644
index 00000000..f87bbe9b
--- /dev/null
+++ b/pactest/tests/sync1004.py
@@ -0,0 +1,18 @@
+self.description = "Induced removal would break dependency (2)"
+
+sp1 = pmpkg("pkg1")
+sp1.conflicts = [ "depend" ]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.depends = ["depend"]
+self.addpkg2db("sync", sp2)
+
+lp = pmpkg("depend")
+self.addpkg2db("local", lp)
+
+self.args = "-S pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=depend")
+
diff --git a/pactest/tests/sync1005.py b/pactest/tests/sync1005.py
new file mode 100644
index 00000000..4fa82478
--- /dev/null
+++ b/pactest/tests/sync1005.py
@@ -0,0 +1,14 @@
+self.description = "Conflicting package names in sync repos"
+
+sp1 = pmpkg("pkg")
+sp1.provides = [ "provision1" ]
+self.addpkg2db("sync1", sp1)
+
+sp2 = pmpkg("pkg")
+sp2.provides = [ "provision2" ]
+self.addpkg2db("sync2", sp2)
+
+self.args = "-S provision1 provision2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg")
diff --git a/pactest/tests/sync1006.py b/pactest/tests/sync1006.py
new file mode 100644
index 00000000..c331f42e
--- /dev/null
+++ b/pactest/tests/sync1006.py
@@ -0,0 +1,14 @@
+self.description = "Conflicting package names in sync repos (diff versions)"
+
+sp1 = pmpkg("pkg", "1.0-1")
+sp1.provides = [ "provision1" ]
+self.addpkg2db("sync1", sp1)
+
+sp2 = pmpkg("pkg", "2.0-1")
+sp2.provides = [ "provision2" ]
+self.addpkg2db("sync2", sp2)
+
+self.args = "-S provision1 provision2"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg")
diff --git a/pactest/tests/sync1100.py b/pactest/tests/sync1100.py
new file mode 100644
index 00000000..f0fb4f64
--- /dev/null
+++ b/pactest/tests/sync1100.py
@@ -0,0 +1,23 @@
+self.description = "Get info on package from a sync db"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+sp.desc = "test description"
+sp.groups = ["foo"]
+sp.url = "http://www.archlinux.org"
+sp.license = "GPL2"
+sp.arch = "i686"
+# test both old style and new style dates
+sp.builddate = "Mon Oct 1 01:40:21 2007 UTC"
+sp.packager = "Arch Linux"
+sp.md5sum = "00000000000000000000000000000000"
+
+self.addpkg2db("sync", sp)
+
+self.args = "-Si %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
+self.addrule("PACMAN_OUTPUT=%s" % sp.desc)
+self.addrule("PACMAN_OUTPUT=Oct")
diff --git a/pactest/tests/sync1101.py b/pactest/tests/sync1101.py
new file mode 100644
index 00000000..ba2ad44f
--- /dev/null
+++ b/pactest/tests/sync1101.py
@@ -0,0 +1,11 @@
+self.description = "Search for package from a sync db"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-Ss %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
diff --git a/pactest/tests/sync1102.py b/pactest/tests/sync1102.py
new file mode 100644
index 00000000..3a27238f
--- /dev/null
+++ b/pactest/tests/sync1102.py
@@ -0,0 +1,12 @@
+self.description = "Get URL on package from a sync db"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-Sp %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
+self.addrule("PACMAN_OUTPUT=file://")
diff --git a/pactest/tests/sync1103.py b/pactest/tests/sync1103.py
new file mode 100644
index 00000000..052c7236
--- /dev/null
+++ b/pactest/tests/sync1103.py
@@ -0,0 +1,11 @@
+self.description = "Get package list from sync dbs"
+
+sp = pmpkg("dummy")
+sp.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-Sl"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PACMAN_OUTPUT=%s" % sp.name)
diff --git a/pactest/tests/sync138.py b/pactest/tests/sync138.py
new file mode 100644
index 00000000..410c7f07
--- /dev/null
+++ b/pactest/tests/sync138.py
@@ -0,0 +1,22 @@
+self.description = "Sysupgrade of packages in 'IgnoreGroup'"
+
+sp1 = pmpkg("pkg1", "1.0-2")
+sp2 = pmpkg("pkg2", "1.0-2")
+sp2.groups = ["grp"]
+
+for p in sp1, sp2:
+ self.addpkg2db("sync", p)
+
+lp1 = pmpkg("pkg1")
+lp2 = pmpkg("pkg2")
+
+for p in lp1, lp2:
+ self.addpkg2db("local", p)
+
+self.option["ignoregroup"] = ["grp"]
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("!PKG_MODIFIED=pkg2")
diff --git a/pactest/tests/sync300.py b/pactest/tests/sync300.py
new file mode 100644
index 00000000..85fb850d
--- /dev/null
+++ b/pactest/tests/sync300.py
@@ -0,0 +1,15 @@
+self.description = "Sync with corrupt database (broken deps)"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["pkg2=1.1"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2", "1.0-1")
+self.addpkg2db("sync", sp2)
+
+self.args = "-S %s" % sp1.name
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
+self.addrule("!PKG_REQUIREDBY=pkg2|pkg1")
diff --git a/pactest/tests/sync301.py b/pactest/tests/sync301.py
new file mode 100644
index 00000000..e8526b93
--- /dev/null
+++ b/pactest/tests/sync301.py
@@ -0,0 +1,25 @@
+self.description = "Sysupgrade : pacman needs to be upgraded and has new deps"
+
+sp = pmpkg("pacman", "1.0-2")
+sp.depends = ["dep"]
+self.addpkg2db("sync", sp)
+
+spdep = pmpkg("dep")
+self.addpkg2db("sync", spdep)
+
+sp1 = pmpkg("pkg1", "1.0-2")
+self.addpkg2db("sync", sp1)
+
+lp = pmpkg("pacman", "1.0-1")
+self.addpkg2db("local", lp)
+
+lp1 = pmpkg("pkg1", "1.0-1")
+self.addpkg2db("local", lp1)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pacman")
+self.addrule("PKG_VERSION=pacman|1.0-2")
+self.addrule("PKG_EXIST=dep")
+self.addrule("PKG_REQUIREDBY=dep|pacman")
diff --git a/pactest/tests/sync400.py b/pactest/tests/sync400.py
new file mode 100644
index 00000000..2ee1095d
--- /dev/null
+++ b/pactest/tests/sync400.py
@@ -0,0 +1,25 @@
+self.description = "Install package with dep that conflicts with older version of package"
+
+sp1 = pmpkg("pkg1", "1.0-2")
+sp1.depends = ["pkg2=1.0-2"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2", "1.0-2")
+sp2.conflicts = [ "pkg1=1.0-1" ]
+self.addpkg2db("sync", sp2)
+
+lp1 = pmpkg("pkg1", "1.0-1")
+lp1.depends = ["pkg2=1.0-1"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+self.args = "-S pkg1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
diff --git a/pactest/tests/sync401.py b/pactest/tests/sync401.py
new file mode 100644
index 00000000..eb816377
--- /dev/null
+++ b/pactest/tests/sync401.py
@@ -0,0 +1,21 @@
+self.description = "Ensure we choose provider already in target list"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.provides = ["dep"]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+sp3.conflicts = ["pkg2"]
+sp3.provides = ["dep"]
+self.addpkg2db("sync", sp3)
+
+self.args = "-S pkg1 pkg2"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync402.py b/pactest/tests/sync402.py
new file mode 100644
index 00000000..6d82f735
--- /dev/null
+++ b/pactest/tests/sync402.py
@@ -0,0 +1,21 @@
+self.description = "Choice between two providers (1)"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.provides = ["dep"]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+sp3.conflicts = ["pkg1"]
+sp3.provides = ["dep"]
+self.addpkg2db("sync", sp3)
+
+self.args = "-S pkg1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("!PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync403.py b/pactest/tests/sync403.py
new file mode 100644
index 00000000..b8d01016
--- /dev/null
+++ b/pactest/tests/sync403.py
@@ -0,0 +1,21 @@
+self.description = "Choice between two providers (2)"
+
+sp1 = pmpkg("pkg1")
+sp1.depends = ["dep"]
+self.addpkg2db("sync", sp1)
+
+sp2 = pmpkg("pkg2")
+sp2.conflicts = [ "pkg1" ]
+sp2.provides = [ "dep" ]
+self.addpkg2db("sync", sp2)
+
+sp3 = pmpkg("pkg3")
+sp3.provides = [ "dep" ]
+self.addpkg2db("sync", sp3)
+
+self.args = "-S pkg1"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
diff --git a/pactest/tests/sync500.py b/pactest/tests/sync500.py
new file mode 100644
index 00000000..36364c16
--- /dev/null
+++ b/pactest/tests/sync500.py
@@ -0,0 +1,10 @@
+self.description = "-S provision"
+
+sp = pmpkg("pkg1")
+sp.provides = ["provision 1.0-1"]
+self.addpkg2db("sync", sp)
+
+self.args = "-S provision"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
diff --git a/pactest/tests/sync900.py b/pactest/tests/sync900.py
new file mode 100644
index 00000000..f21af06a
--- /dev/null
+++ b/pactest/tests/sync900.py
@@ -0,0 +1,28 @@
+self.description = "Replace one package with another providing it"
+
+sp = pmpkg("bar")
+sp.provides = ["foo"]
+sp.conflicts = ["foo"]
+self.addpkg2db("sync", sp)
+
+lp = pmpkg("foo")
+lp.requiredby = ["lp1", "lp2"]
+self.addpkg2db("local", lp)
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["foo"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.depends = ["foo"]
+self.addpkg2db("local", lp2)
+
+self.args = "-S %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=foo")
+self.addrule("PKG_EXIST=bar")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_REQUIREDBY=bar|pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=bar|pkg2")
diff --git a/pactest/tests/sync901.py b/pactest/tests/sync901.py
new file mode 100644
index 00000000..423fe42c
--- /dev/null
+++ b/pactest/tests/sync901.py
@@ -0,0 +1,28 @@
+self.description = "Replace a package providing package with actual package"
+
+sp = pmpkg("foo")
+self.addpkg2db("sync", sp)
+
+lp = pmpkg("bar")
+lp.provides = ["foo"]
+lp.conflicts = ["foo"]
+lp.requiredby = ["lp1", "lp2"]
+self.addpkg2db("local", lp)
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["foo"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.depends = ["foo"]
+self.addpkg2db("local", lp2)
+
+self.args = "-S %s" % sp.name
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=foo")
+self.addrule("!PKG_EXIST=bar")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_REQUIREDBY=foo|pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_REQUIREDBY=foo|pkg2")
diff --git a/pactest/tests/sync990.py b/pactest/tests/sync990.py
index ee6a590b..6ac5a1f6 100644
--- a/pactest/tests/sync990.py
+++ b/pactest/tests/sync990.py
@@ -7,14 +7,13 @@ sp2 = pmpkg("pkg2")
sp3 = pmpkg("pkg3")
sp3.conflicts = ["pkg2"]
-sp3.provides = ["pkg2"]
for p in sp1, sp2, sp3:
self.addpkg2db("sync", p)
self.args = "-S %s" % " ".join([p.name for p in sp1, sp2])
-self.addrule("PACMAN_RETCODE=0")
-self.addrule("PKG_EXIST=pkg1")
-self.addrule("PKG_EXIST=pkg2")
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("!PKG_EXIST=pkg2")
self.addrule("!PKG_EXIST=pkg3")
diff --git a/pactest/tests/trans001.py b/pactest/tests/trans001.py
new file mode 100644
index 00000000..b9889b14
--- /dev/null
+++ b/pactest/tests/trans001.py
@@ -0,0 +1,20 @@
+self.description = "fileconflict error cancels the sync transaction after the removal part"
+
+sp = pmpkg("pkg1")
+sp.replaces = ["pkg3"]
+sp.files = ["dir/file"]
+self.addpkg2db("sync", sp)
+
+lp1 = pmpkg("pkg3")
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2")
+lp2.files = ["dir/file"]
+self.addpkg2db("local", lp2)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("!PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
+self.addrule("PKG_EXIST=pkg3")
diff --git a/pactest/tests/type001.py b/pactest/tests/type001.py
new file mode 100644
index 00000000..d55dcc11
--- /dev/null
+++ b/pactest/tests/type001.py
@@ -0,0 +1,17 @@
+self.description = "Check the types of default files in a package"
+
+p = pmpkg("pkg1")
+p.files = ["foo/file1",
+ "foo/file2",
+ "foo/dir/",
+ "foo/symdir -> dir"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("FILE_TYPE=foo/|dir")
+self.addrule("FILE_TYPE=foo/file1|file")
+self.addrule("FILE_TYPE=foo/file2|file")
+self.addrule("FILE_TYPE=foo/dir|dir")
+self.addrule("FILE_TYPE=foo/symdir|link")
diff --git a/pactest/tests/upgrade010.py b/pactest/tests/upgrade010.py
index 04f3d816..633ef7e4 100644
--- a/pactest/tests/upgrade010.py
+++ b/pactest/tests/upgrade010.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
self.addrule("FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade020.py b/pactest/tests/upgrade020.py
index ab5fe225..6a7994bb 100644
--- a/pactest/tests/upgrade020.py
+++ b/pactest/tests/upgrade020.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("FILE_MODIFIED=etc/dummy.conf")
self.addrule("!FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade021.py b/pactest/tests/upgrade021.py
index 1ac0ceb5..b45ea18a 100644
--- a/pactest/tests/upgrade021.py
+++ b/pactest/tests/upgrade021.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
self.addrule("!FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade022.py b/pactest/tests/upgrade022.py
index 6bf12c15..dcf7ae01 100644
--- a/pactest/tests/upgrade022.py
+++ b/pactest/tests/upgrade022.py
@@ -15,3 +15,4 @@ self.args = "-U %s" % p.filename()
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
self.addrule("FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade023.py b/pactest/tests/upgrade023.py
index 68a29df2..d1d2e314 100644
--- a/pactest/tests/upgrade023.py
+++ b/pactest/tests/upgrade023.py
@@ -15,3 +15,4 @@ self.addrule("PKG_VERSION=dummy|1.1-1")
self.addrule("!FILE_MODIFIED=etc/dummy.conf")
# Do we want this pacnew or not?
self.addrule("FILE_PACNEW=etc/dummy.conf")
+self.addrule("!FILE_PACSAVE=etc/dummy.conf")
diff --git a/pactest/tests/upgrade024.py b/pactest/tests/upgrade024.py
new file mode 100644
index 00000000..ec2f7623
--- /dev/null
+++ b/pactest/tests/upgrade024.py
@@ -0,0 +1,15 @@
+self.description = "Upgrade a package, with a file leaving 'backup'"
+
+lp = pmpkg("dummy")
+lp.files = ["etc/dummy.conf*"]
+lp.backup = ["etc/dummy.conf"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("dummy", "1.0-2")
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PKG_VERSION=dummy|1.0-2")
+self.addrule("FILE_PACSAVE=etc/dummy.conf")
+self.addrule("!FILE_EXIST=etc/dummy.conf")
diff --git a/pactest/tests/upgrade025.py b/pactest/tests/upgrade025.py
new file mode 100644
index 00000000..2c9c06f3
--- /dev/null
+++ b/pactest/tests/upgrade025.py
@@ -0,0 +1,17 @@
+self.description = "Upgrade a package, with a file leaving 'backup' but staying in the pkg"
+
+lp = pmpkg("dummy")
+lp.files = ["etc/dummy.conf*"]
+lp.backup = ["etc/dummy.conf"]
+self.addpkg2db("local", lp)
+
+p = pmpkg("dummy", "1.0-2")
+p.files = ["etc/dummy.conf"]
+self.addpkg(p)
+
+self.args = "-U %s" % p.filename()
+
+self.addrule("PKG_VERSION=dummy|1.0-2")
+self.addrule("FILE_PACSAVE=etc/dummy.conf")
+self.addrule("!FILE_PACNEW=etc/dummy.conf")
+self.addrule("FILE_EXIST=etc/dummy.conf")
diff --git a/pactest/tests/upgrade031.py b/pactest/tests/upgrade031.py
new file mode 100644
index 00000000..856de983
--- /dev/null
+++ b/pactest/tests/upgrade031.py
@@ -0,0 +1,19 @@
+self.description = "Install packages non-explicitly"
+
+lp1 = pmpkg("pkg1")
+lp1.reason = 0
+self.addpkg2db("local", lp1)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p2 = pmpkg("pkg2", "1.0-2")
+
+for p in p1, p2:
+ self.addpkg(p)
+
+self.args = "-U --asdeps %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_VERSION=pkg1|1.0-2")
+self.addrule("PKG_VERSION=pkg2|1.0-2")
+self.addrule("PKG_REASON=pkg1|1")
+self.addrule("PKG_REASON=pkg2|1")
diff --git a/pactest/tests/upgrade056.py b/pactest/tests/upgrade056.py
index 8419731c..b92c38ac 100644
--- a/pactest/tests/upgrade056.py
+++ b/pactest/tests/upgrade056.py
@@ -11,6 +11,7 @@ self.addpkg2db("local", lp2)
lp3 = pmpkg("pkg3")
lp3.provides = ["imaginary"]
+lp3.requiredby = [ "pkg1" ]
self.addpkg2db("local", lp3)
p = pmpkg("pkg2", "1.0-2")
diff --git a/pactest/tests/upgrade059.py b/pactest/tests/upgrade059.py
new file mode 100644
index 00000000..933e4e74
--- /dev/null
+++ b/pactest/tests/upgrade059.py
@@ -0,0 +1,28 @@
+self.description = "Upgrade packages which would break a multiple-depend"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.provides = ["imaginary"]
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+lp3 = pmpkg("pkg3", "1.0-1")
+lp3.provides = ["imaginary"]
+lp3.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp3)
+
+p2 = pmpkg("pkg2", "1.0-2")
+self.addpkg(p2)
+
+p3 = pmpkg("pkg3", "1.0-2")
+self.addpkg(p3)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p2, p3])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
+self.addrule("PKG_VERSION=pkg3|1.0-1")
diff --git a/pactest/tests/upgrade060.py b/pactest/tests/upgrade060.py
new file mode 100644
index 00000000..dd78bba3
--- /dev/null
+++ b/pactest/tests/upgrade060.py
@@ -0,0 +1,22 @@
+self.description = "Try to upgrade two packages which would break deps"
+
+lp1 = pmpkg("pkg1")
+lp1.depends = ["pkg2=1.0"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.requiredby = [ "pkg1" ]
+self.addpkg2db("local", lp2)
+
+p1 = pmpkg("pkg1", "1.1-1")
+p1.depends = ["pkg2=1.0-1"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2", "1.1-1")
+self.addpkg(p2)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_VERSION=pkg1|1.0-1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")
diff --git a/pactest/tests/upgrade061.py b/pactest/tests/upgrade061.py
new file mode 100644
index 00000000..0b1ed4e5
--- /dev/null
+++ b/pactest/tests/upgrade061.py
@@ -0,0 +1,23 @@
+self.description = "Try to upgrade two packages which would break deps"
+
+lp1 = pmpkg("pkg1", "1.0-1")
+lp1.depends = ["imaginary"]
+self.addpkg2db("local", lp1)
+
+lp2 = pmpkg("pkg2", "1.0-1")
+lp2.requiredby = [ "pkg1" ]
+lp2.provides = ["imaginary"]
+self.addpkg2db("local", lp2)
+
+p1 = pmpkg("pkg1", "1.0-2")
+p1.depends = ["imaginary"]
+self.addpkg(p1)
+
+p2 = pmpkg("pkg2", "1.0-2")
+self.addpkg(p2)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p1, p2])
+
+self.addrule("PACMAN_RETCODE=1")
+self.addrule("PKG_VERSION=pkg1|1.0-1")
+self.addrule("PKG_VERSION=pkg2|1.0-1")