summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-06-27 16:07:06 +0200
committerDan McGee <dan@archlinux.org>2011-06-27 16:15:31 +0200
commite378170c2555b656ef87715d8284d038037ced5f (patch)
treeec6987dcd3f351903881bedee0a3bd846aa7fbe4 /test
parentf8f4c2a6f301ab423f3ca702ebc24854cc701683 (diff)
downloadpacman-e378170c2555b656ef87715d8284d038037ced5f.tar.gz
pacman-e378170c2555b656ef87715d8284d038037ced5f.tar.xz
Ensure a file can be replaced by a directory
This addresses FS#24904. In a normal upgrade case, this replacement seems to work just fine. However, when doing a sync "replace" type upgrade, we weren't properly handling this edge case due to path comparison not ignoring trailing slashes. Fix this by pruning any trailing slashes past a certain point of file conflict resolution where we no longer need them, which allows us to safely detect cases such as now tested in the new pactest. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'test')
-rw-r--r--test/pacman/tests/fileconflict008.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/pacman/tests/fileconflict008.py b/test/pacman/tests/fileconflict008.py
new file mode 100644
index 00000000..24ea8852
--- /dev/null
+++ b/test/pacman/tests/fileconflict008.py
@@ -0,0 +1,21 @@
+self.description = "Fileconflict file -> dir on package replacement (FS#24904)"
+
+lp = pmpkg("dummy")
+lp.files = ["dir/filepath",
+ "dir/file"]
+self.addpkg2db("local", lp)
+
+p1 = pmpkg("replace")
+p1.provides = ["dummy"]
+p1.replaces = ["dummy"]
+p1.files = ["dir/filepath/",
+ "dir/filepath/file",
+ "dir/file",
+ "dir/file2"]
+self.addpkg2db("sync", p1)
+
+self.args = "-Su"
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("!PKG_EXIST=dummy")
+self.addrule("PKG_EXIST=replace")