summaryrefslogtreecommitdiffstats
path: root/tests/t-switch-dir-to-symlink-abs/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t-switch-dir-to-symlink-abs/Makefile')
-rw-r--r--tests/t-switch-dir-to-symlink-abs/Makefile146
1 files changed, 146 insertions, 0 deletions
diff --git a/tests/t-switch-dir-to-symlink-abs/Makefile b/tests/t-switch-dir-to-symlink-abs/Makefile
new file mode 100644
index 0000000..028cb93
--- /dev/null
+++ b/tests/t-switch-dir-to-symlink-abs/Makefile
@@ -0,0 +1,146 @@
+TESTS_DEB := \
+ pkg-dir-conffile-0 pkg-dir-conffile-1 \
+ pkg-dir-file-other pkg-dir-symlink-int-0 pkg-dir-symlink-int-1 \
+ pkg-dir-file-moved pkg-dir-symlink-ext-0 pkg-dir-symlink-ext-1
+
+include ../Test.mk
+
+build-hook:
+ ln -sfT test-dir pkg-dir-conffile-1/test-path
+ ln -sfT test-dir pkg-dir-symlink-ext-1/test-path
+ ln -sfT test-dir pkg-dir-symlink-int-1/test-path
+
+clean-hook:
+ $(RM) pkg-dir-conffile-1/test-path
+ $(RM) pkg-dir-symlink-ext-1/test-path
+ $(RM) pkg-dir-symlink-int-1/test-path
+
+test-case:
+ # Cannot switch a directory containing conffiles
+ $(DPKG_INSTALL) pkg-dir-conffile-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ ! $(DPKG_INSTALL) pkg-dir-conffile-1.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_PURGE) pkg-dir-conffile
+
+ # Cannot switch a directory containing files owned by another package
+ $(DPKG_INSTALL) pkg-dir-file-other.deb
+ $(DPKG_INSTALL) pkg-dir-symlink-int-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ ! $(DPKG_INSTALL) pkg-dir-symlink-int-1.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_PURGE) pkg-dir-symlink-int
+ $(DPKG_PURGE) pkg-dir-file-other
+
+ # Cannot switch a directory containing local files
+ $(DPKG_INSTALL) pkg-dir-symlink-int-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ touch '$(DPKG_INSTDIR)/test-path/local file'
+ ! $(DPKG_INSTALL) pkg-dir-symlink-int-1.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ rm '$(DPKG_INSTDIR)/test-path/local file'
+ $(DPKG_PURGE) pkg-dir-symlink-int
+
+ #
+ # Otherwise allow the switch
+ #
+
+ # Switch a directory to a symlink, contents moved within the package,
+ # with intermediate full installs.
+ $(DPKG_INSTALL) pkg-dir-symlink-int-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_INSTALL) pkg-dir-symlink-int-1.deb
+ test -h '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_PURGE) pkg-dir-symlink-int
+ ! test -e '$(DPKG_INSTDIR)/test-path'
+
+ # Switch a directory to a symlink, contents moved within the package,
+ # with full install, upgrade with upack and configure.
+ $(DPKG_INSTALL) pkg-dir-symlink-int-0.deb
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_UNPACK) pkg-dir-symlink-int-1.deb
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_CONFIGURE) pkg-dir-symlink-int
+ test -h '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_PURGE) pkg-dir-symlink-int
+ ! test -e '$(DPKG_INSTDIR)/test-path'
+
+ # Switch a directory to a symlink, contents moved within the package,
+ # with two unpacks and configure.
+ $(DPKG_UNPACK) pkg-dir-symlink-int-0.deb
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_UNPACK) pkg-dir-symlink-int-1.deb
+ ! test -h '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_CONFIGURE) pkg-dir-symlink-int
+ test -h '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_PURGE) pkg-dir-symlink-int
+ ! test -e '$(DPKG_INSTDIR)/test-path'
+
+ # Switch a directory to a symlink, contents moved to another package,
+ # with intermediate full installs.
+ $(DPKG_INSTALL) pkg-dir-symlink-ext-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_INSTALL) pkg-dir-file-moved.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ $(DPKG_INSTALL) pkg-dir-symlink-ext-1.deb
+ test -h '$(DPKG_INSTDIR)/test-path'
+ test "`readlink -f '$(DPKG_INSTDIR)/test-path'`" = "/test-dir"
+ ! test -h '$(DPKG_INSTDIR)/test-dir'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ test -f '$(DPKG_INSTDIR)/test-dir/file-normal'
+ $(DPKG_PURGE) pkg-dir-symlink-ext
+ $(DPKG_PURGE) pkg-dir-file-moved
+
+ # Switch a directory to a symlink, contents moved to another package,
+ # with full installs, upgrade with upack and configure.
+ $(DPKG_INSTALL) pkg-dir-symlink-ext-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_INSTALL) pkg-dir-file-moved.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ $(DPKG_UNPACK) pkg-dir-symlink-ext-1.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ $(DPKG_CONFIGURE) -a
+ test -h '$(DPKG_INSTDIR)/test-path'
+ test "`readlink -f '$(DPKG_INSTDIR)/test-path'`" = "/test-dir"
+ ! test -h '$(DPKG_INSTDIR)/test-dir'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ test -f '$(DPKG_INSTDIR)/test-dir/file-normal'
+ $(DPKG_PURGE) pkg-dir-symlink-ext
+ $(DPKG_PURGE) pkg-dir-file-moved
+
+ # Switch a directory to a symlink, contents moved to another package,
+ # with three unpacks and configure.
+ $(DPKG_UNPACK) pkg-dir-symlink-ext-0.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ $(DPKG_UNPACK) pkg-dir-file-moved.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ $(DPKG_UNPACK) pkg-dir-symlink-ext-1.deb
+ test -d '$(DPKG_INSTDIR)/test-path'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ $(DPKG_CONFIGURE) -a
+ test -h '$(DPKG_INSTDIR)/test-path'
+ test "`readlink -f '$(DPKG_INSTDIR)/test-path'`" = "/test-dir"
+ ! test -h '$(DPKG_INSTDIR)/test-dir'
+ test -d '$(DPKG_INSTDIR)/test-dir'
+ test -f '$(DPKG_INSTDIR)/test-dir/file-normal'
+ $(DPKG_PURGE) pkg-dir-symlink-ext
+ $(DPKG_PURGE) pkg-dir-file-moved
+
+test-clean:
+ $(DPKG_PURGE) pkg-dir-conffile
+ $(DPKG_PURGE) pkg-dir-symlink-int
+ $(DPKG_PURGE) pkg-dir-symlink-ext
+ $(DPKG_PURGE) pkg-dir-file-other
+ $(DPKG_PURGE) pkg-dir-file-moved