summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2008-01-01 17:25:12 +0100
committerDan McGee <dan@archlinux.org>2008-01-02 03:03:18 +0100
commitac0605b9c27bf206c99bd73302efeff3ce79797e (patch)
tree04d72cc96f3eb72fcb10a56bacb2d09f56ae67a1
parentdffa0654f2eae1c427a74c647d22f0bbd201ccf7 (diff)
downloadpacman-ac0605b9c27bf206c99bd73302efeff3ce79797e.tar.gz
pacman-ac0605b9c27bf206c99bd73302efeff3ce79797e.tar.xz
new upgade042 pactest + bugfix in chk_filedifference.
This adds a pactest for the relocation of a config file between two packages (case of etc/profile moving from bash to filesystem). While running this pactest, I found out that chk_filedifference didn't work correctly with an empty list as second argument. So that's fixed now. Ref: http://www.archlinux.org/pipermail/pacman-dev/2007-December/010610.html Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/conflict.c4
-rw-r--r--pactest/tests/upgrade042.py28
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
index 91f43602..5c53b961 100644
--- a/lib/libalpm/conflict.c
+++ b/lib/libalpm/conflict.c
@@ -251,6 +251,10 @@ static alpm_list_t *chk_filedifference(alpm_list_t *filesA, alpm_list_t *filesB)
alpm_list_t *ret = NULL;
alpm_list_t *pA = filesA, *pB = filesB;
+ if(pB == NULL) {
+ return(alpm_list_strdup(pA));
+ }
+
while(pA && pB) {
const char *strA = pA->data;
const char *strB = pB->data;
diff --git a/pactest/tests/upgrade042.py b/pactest/tests/upgrade042.py
new file mode 100644
index 00000000..d6140d45
--- /dev/null
+++ b/pactest/tests/upgrade042.py
@@ -0,0 +1,28 @@
+self.description = "Backup file relocation"
+
+lp1 = pmpkg("bash")
+lp1.files = ["etc/profile*"]
+lp1.backup = ["etc/profile"]
+self.addpkg2db("local", lp1)
+
+p1 = pmpkg("bash", "1.0-2")
+self.addpkg(p1)
+
+lp2 = pmpkg("filesystem")
+self.addpkg2db("local", lp2)
+
+p2 = pmpkg("filesystem", "1.0-2")
+p2.files = ["etc/profile**"]
+p2.backup = ["etc/profile"]
+p2.depends = [ "bash" ]
+self.addpkg(p2)
+
+self.args = "-U %s" % " ".join([p.filename() for p in p1, p2])
+
+self.filesystem = ["etc/profile"]
+
+self.addrule("PKG_VERSION=bash|1.0-2")
+self.addrule("PKG_VERSION=filesystem|1.0-2")
+self.addrule("!FILE_PACSAVE=etc/profile")
+self.addrule("FILE_PACNEW=etc/profile")
+self.addrule("FILE_EXIST=etc/profile")