mirror of
https://github.com/moparisthebest/pacman
synced 2024-11-15 13:55:09 -05:00
pactest: Do not remove symlink to directory if a to be installed package uses it
If a pacakge has a directory symlink (e.g. /lib -> usr/lib), do not allow it to be removed if any other package is trying to install a file into that path (e.g. /lib/foo). This is because the local database can become invalidated if the symlink is removed after the package with file /lib/foo is installed (sync702.py). If the symlink is removed before the file is installed (sync701.py), the upgrade is actually a success, but we can not guarantee the ordering so both cases should fail. Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
fa2eadcec7
commit
41dae68952
22
test/pacman/tests/sync701.py
Normal file
22
test/pacman/tests/sync701.py
Normal file
@ -0,0 +1,22 @@
|
||||
self.description = "do not remove directory symlink if incoming package has file in its path (order 1)"
|
||||
|
||||
lp = pmpkg("pkg1")
|
||||
lp.files = ["usr/lib/foo",
|
||||
"lib -> usr/lib"]
|
||||
self.addpkg2db("local", lp)
|
||||
|
||||
p1 = pmpkg("pkg1", "1.0-2")
|
||||
p1.files = ["usr/lib/foo"]
|
||||
self.addpkg2db("sync", p1)
|
||||
|
||||
p2 = pmpkg("pkg2")
|
||||
p2.files = ["lib/bar"]
|
||||
self.addpkg2db("sync", p2)
|
||||
|
||||
self.args = "-S pkg1 pkg2"
|
||||
|
||||
self.addrule("PACMAN_RETCODE=1")
|
||||
self.addrule("PKG_VERSION=pkg1|1.0-1")
|
||||
self.addrule("!PKG_EXIST=pkg2")
|
||||
|
||||
self.expectfailure = True
|
22
test/pacman/tests/sync702.py
Normal file
22
test/pacman/tests/sync702.py
Normal file
@ -0,0 +1,22 @@
|
||||
self.description = "do not remove directory symlink if incoming package has file in its path (order 2)"
|
||||
|
||||
lp = pmpkg("pkg2")
|
||||
lp.files = ["usr/lib/foo",
|
||||
"lib -> usr/lib"]
|
||||
self.addpkg2db("local", lp)
|
||||
|
||||
p1 = pmpkg("pkg1")
|
||||
p1.files = ["lib/bar"]
|
||||
self.addpkg2db("sync", p1)
|
||||
|
||||
p2 = pmpkg("pkg2", "1.0-2")
|
||||
p2.files = ["usr/lib/foo"]
|
||||
self.addpkg2db("sync", p2)
|
||||
|
||||
self.args = "-S pkg1 pkg2"
|
||||
|
||||
self.addrule("PACMAN_RETCODE=1")
|
||||
self.addrule("PKG_VERSION=pkg2|1.0-1")
|
||||
self.addrule("!PKG_EXIST=pkg1")
|
||||
|
||||
self.expectfailure = True
|
Loading…
Reference in New Issue
Block a user