summaryrefslogtreecommitdiffstats
path: root/src/tests/mandb-whatis-broken-link-changes
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/mandb-whatis-broken-link-changes')
-rwxr-xr-xsrc/tests/mandb-whatis-broken-link-changes57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/tests/mandb-whatis-broken-link-changes b/src/tests/mandb-whatis-broken-link-changes
new file mode 100755
index 0000000..2facd5d
--- /dev/null
+++ b/src/tests/mandb-whatis-broken-link-changes
@@ -0,0 +1,57 @@
+#! /bin/sh
+
+# Ensure that we don't repeatedly rescan when a whatis entry turns into a
+# broken link.
+
+: "${srcdir=.}"
+# shellcheck source-path=SCRIPTDIR
+. "$srcdir/testlib.sh"
+
+: "${MANDB=mandb}"
+: "${ACCESSDB=accessdb}"
+
+init
+fake_config /usr/share/man
+MANPATH="$tmpdir/usr/share/man"
+export MANPATH
+db_ext="$(db_ext)"
+
+NL='
+'
+
+write_page test 1 "$tmpdir/usr/share/man/man1/test.1.gz" UTF-8 gz t \
+ "test \- test page${NL}.br${NL}testlink \- link to test page"
+run $MANDB -C "$tmpdir/manpath.config" -u -q "$tmpdir/usr/share/man"
+cat >"$tmpdir/1.exp" <<EOF
+test -> "- 1 1 MTIME A - - gz test page"
+testlink -> "- 1 1 MTIME C test - gz "
+EOF
+accessdb_filter "$tmpdir/usr/share/man/index$db_ext" >"$tmpdir/1.out"
+expect_files_equal 'setup' "$tmpdir/1.exp" "$tmpdir/1.out"
+
+./fspause
+echo '.so nonexistent.1' | gzip -9c >"$tmpdir/usr/share/man/man1/testlink.1.gz"
+run $MANDB -C "$tmpdir/manpath.config" -u -q "$tmpdir/usr/share/man"
+cat >"$tmpdir/2.exp" <<EOF
+test -> "- 1 1 MTIME A - - gz test page"
+testlink -> "- 1 1 MTIME C test - gz "
+EOF
+accessdb_filter "$tmpdir/usr/share/man/index$db_ext" >"$tmpdir/2.out"
+expect_files_equal 'broken whatis' "$tmpdir/2.exp" "$tmpdir/2.out"
+
+./fspause
+LC_ALL=C run $MANDB -C "$tmpdir/manpath.config" -u \
+ "$tmpdir/usr/share/man" >"$tmpdir/3.out" 2>/dev/null
+cat >"$tmpdir/3.exp" <<EOF
+Purging old database entries in $abstmpdir/usr/share/man...
+Processing manual pages under $abstmpdir/usr/share/man...
+Checking for stray cats under $abstmpdir/usr/share/man...
+Processing manual pages under $abstmpdir/usr/share/man/cat1...
+0 man subdirectories contained newer manual pages.
+0 manual pages were added.
+0 stray cats were added.
+0 old database entries were purged.
+EOF
+expect_files_equal 'mandb does not rescan' "$tmpdir/3.exp" "$tmpdir/3.out"
+
+finish