diff options
author | Nagy Gabor <ngaba@bibl.u-szeged.hu> | 2009-09-12 20:50:03 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-10-11 22:30:52 +0200 |
commit | 72bc947cbb8ba752f021f28ec9e9a85c354918e3 (patch) | |
tree | d26f3572ac04e75243ae119fce09cf16e1b508c8 /pactest | |
parent | 3dc87851cc5990d358cf985d8e79dffeb2d91a21 (diff) | |
download | pacman-72bc947cbb8ba752f021f28ec9e9a85c354918e3.tar.gz pacman-72bc947cbb8ba752f021f28ec9e9a85c354918e3.tar.xz |
Fix "-Sd conflict_pkg" bug
If the -d switch was invoked with -S (or -U), the removes list was simply
lost, because trans->remove was computed in an
"if(!(trans->flags & PM_TRANS_FLAG_NODEPS))" block.
I've added a new pactest file, sync045.py (derived from sync043.py) to test
this.
Additionally, I did some other minor cleanups in sync_prepare:
* preferred list is not needed anymore
* I removed a needless alpm_list_remove_dupes line (the target list should
not contain dupes at all)
* I moved alpm_list_free(remove); to cleanup part to eliminate a possible
memleak
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'pactest')
-rw-r--r-- | pactest/tests/sync045.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/pactest/tests/sync045.py b/pactest/tests/sync045.py new file mode 100644 index 00000000..574c0a52 --- /dev/null +++ b/pactest/tests/sync045.py @@ -0,0 +1,18 @@ +self.description = "Install a sync package conflicting with two local ones (-d)" + +sp = pmpkg("pkg1") +sp.conflicts = ["pkg2", "pkg3"] +self.addpkg2db("sync", sp); + +lp1 = pmpkg("pkg2") +self.addpkg2db("local", lp1); + +lp2 = pmpkg("pkg3") +self.addpkg2db("local", lp2); + +self.args = "-Sd %s --ask=4" % sp.name + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_EXIST=pkg1") +self.addrule("!PKG_EXIST=pkg2") +self.addrule("!PKG_EXIST=pkg3") |