diff options
author | Chantry Xavier <shiningxc@gmail.com> | 2008-01-01 17:25:12 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-01-02 03:03:18 +0100 |
commit | ac0605b9c27bf206c99bd73302efeff3ce79797e (patch) | |
tree | 04d72cc96f3eb72fcb10a56bacb2d09f56ae67a1 | |
parent | dffa0654f2eae1c427a74c647d22f0bbd201ccf7 (diff) | |
download | pacman-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.c | 4 | ||||
-rw-r--r-- | pactest/tests/upgrade042.py | 28 |
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") |