On 17/07/12 13:53, Allan McRae wrote: > If a packge has a directory (e.g. /lib -> usr/lib), do not allow
package... directory symlink... > 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 then package s/then/the/ > 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. Typos corrected on my working branch > Signed-off-by: Allan McRae <[email protected]> > --- > test/pacman/tests/sync701.py | 22 ++++++++++++++++++++++ > test/pacman/tests/sync702.py | 22 ++++++++++++++++++++++ > 2 files changed, 44 insertions(+) > create mode 100644 test/pacman/tests/sync701.py > create mode 100644 test/pacman/tests/sync702.py > > diff --git a/test/pacman/tests/sync701.py b/test/pacman/tests/sync701.py > new file mode 100644 > index 0000000..201f602 > --- /dev/null > +++ b/test/pacman/tests/sync701.py > @@ -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 > diff --git a/test/pacman/tests/sync702.py b/test/pacman/tests/sync702.py > new file mode 100644 > index 0000000..ee4eef9 > --- /dev/null > +++ b/test/pacman/tests/sync702.py > @@ -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 >
