#!/bin/sh

# Test for:
#   man chmod.2 => man 2 chmod
#   man 'chmod(2)' => man 2 chmod
#   man chmod.2p => man 2p chmod
#   man 'chmod(2p)' => man 2p chmod

: "${srcdir=.}"
# shellcheck source-path=SCRIPTDIR
. "$srcdir/testlib.sh"

: "${MAN=man}"

init
fake_config /usr/share/man
MANPATH="$tmpdir/usr/share/man"
export MANPATH

page_name="chmod"

write_page "$page_name" 1 "$tmpdir/usr/share/man/man1/${page_name}.1.gz" \
        UTF-8 gz '' "$page_name \- coreutils $page_name manual page"
write_page "$page_name" 2 "$tmpdir/usr/share/man/man2/${page_name}.2.gz" \
        UTF-8 gz '' "$page_name \- $page_name() syscall manual page"

cat >"$tmpdir/2.exp" <<EOF
$abstmpdir/usr/share/man/man2/${page_name}.2.gz
EOF

run $MAN -C "$tmpdir/manpath.config" -aw "$page_name".2 >"$tmpdir/2.out"
expect_files_equal '"man name.2" is the same as "man 2 name"' \
        "$tmpdir/2.exp" "$tmpdir/2.out"
run $MAN -C "$tmpdir/manpath.config" -aw "$page_name(2)" >"$tmpdir/2.out"
expect_files_equal '"man '\''name(2)'\''" is the same as "man 2 name"' \
        "$tmpdir/2.exp" "$tmpdir/2.out"

case $MANDIR_LAYOUT in
	""|GNU)
		mv "$tmpdir/usr/share/man/man2/$page_name.2.gz" \
		   "$tmpdir/usr/share/man/man2/$page_name.2p.gz"

		cat >"$tmpdir/2p.exp" <<EOF
$abstmpdir/usr/share/man/man2/${page_name}.2p.gz
EOF

		run $MAN -C "$tmpdir/manpath.config" -aw "$page_name".2p \
			>"$tmpdir/2p.out"
		expect_files_equal \
			'"man name.2p" is the same as "man 2p name"' \
			"$tmpdir/2p.exp" "$tmpdir/2p.out"
		run $MAN -C "$tmpdir/manpath.config" -aw "$page_name(2p)" \
			>"$tmpdir/2p.out"
		expect_files_equal \
			'"man '\''name(2p)'\''" is the same as "man 2p name"' \
			"$tmpdir/2p.exp" "$tmpdir/2p.out"
		;;
esac

finish
