diff options
author | Andrew Gregory <andrew.gregory.8@gmail.com> | 2013-04-12 22:26:14 -0400 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2013-06-03 13:33:47 +1000 |
commit | cbbd3781c249c8318934fe0810a09546c2760f53 (patch) | |
tree | 8cdbfbdef89f5a4a58f8c62878c85ddf13f537a9 /test | |
parent | 47762ab687959e48acc2de8592fcf3ba3cfa502b (diff) | |
download | pacman-cbbd3781c249c8318934fe0810a09546c2760f53.tar.xz |
improve dir->file transition conflict resolution
Packages removed due to conflicts are always removed at the beginning of
the transaction and as such can be included in the check for whether all
owners of a directory will be removed in a transaction. Installed
versions of packages being upgraded, other than the one with the
conflict, cannot be used because our transaction ordering is not
intelligent enough to ensure that they are removed prior to the
installation of the conflicted package.
Also, return false from dir_belongsto_pkgs on errors. Previously, we
simply continued which could return true even if we were unable to
actually establish that the package owned the entire tree.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/pacman/tests/fileconflict030.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/pacman/tests/fileconflict030.py b/test/pacman/tests/fileconflict030.py new file mode 100644 index 00000000..1de77813 --- /dev/null +++ b/test/pacman/tests/fileconflict030.py @@ -0,0 +1,17 @@ +self.description = "Dir->file transition filesystem conflict resolved by removal" + +lp1 = pmpkg("foo") +lp1.files = ["foo/"] +self.addpkg2db("local", lp1) + +sp1 = pmpkg("bar") +sp1.conflicts = ["foo"] +sp1.files = ["foo"] +self.addpkg2db("sync", sp1) + +self.args = "-S %s --ask=4" % sp1.name + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_EXIST=bar") +self.addrule("!PKG_EXIST=foo") +self.addrule("FILE_EXIST=foo") |