summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2020-03-30 06:40:53 +0000
committerrillig <rillig@pkgsrc.org>2020-03-30 06:40:53 +0000
commit3fa3f38dbb65ebd3c8f7017ba1145cc8cef253b4 (patch)
treec2ce98dcf2aa088b44b416a133ef68dec6b043ad /regress
parent3f41c688039330a59a179b279b9c170d13b4a65a (diff)
downloadpkgsrc-3fa3f38dbb65ebd3c8f7017ba1145cc8cef253b4.tar.gz
regress/infra-unittests: add example tests for mk/help/help.awk
There are many more scenarios that need test cases, but this is a start.
Diffstat (limited to 'regress')
-rw-r--r--regress/infra-unittests/help.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/regress/infra-unittests/help.sh b/regress/infra-unittests/help.sh
new file mode 100644
index 00000000000..98eac24a2f5
--- /dev/null
+++ b/regress/infra-unittests/help.sh
@@ -0,0 +1,94 @@
+#! /bin/sh
+# $NetBSD: help.sh,v 1.1 2020/03/30 06:40:53 rillig Exp $
+#
+# Test cases for "bmake help", mainly implemented in mk/help/help.awk.
+#
+
+set -eu
+
+. "./test.subr"
+
+test_case_set_up() {
+ cd "$tmpdir"
+}
+
+
+if test_case_begin "help topic at the top of a file, with debugging"; then
+
+ # The first line of a file does not count since it usually contains
+ # the CVS Id. Therefore this topic is considered too small.
+
+ create_file_lines "test.help" \
+ "# topic" \
+ "#" \
+ "# Explanation of the topic."
+
+ HELP_DEBUG="yes" TOPIC=":all" awk -f "$pkgsrcdir/mk/help/help.awk" \
+ "test.help" >"out"
+
+ assert_that "out" --file-is-lines \
+ 'test.help:1: Adding keyword "topic"' \
+ 'test.help:1: Ignoring section because of too small comment.' \
+ 'test.help:3: "Explanation" is no keyword because it is mixed case' \
+ 'test.help:3: Ignoring section because of missing keywords.' \
+ 'No help found for :all.'
+
+ test_case_end
+fi
+
+
+if test_case_begin "short help topic with debugging"; then
+
+ # The topic starts in the paragraph in line 3 and has only 3 lines.
+ # It still has enough explanation to be considered valuable.
+ # This form is often used in mk/help/undefined-reference.help.
+
+ create_file_lines "test.help" \
+ "# $""NetBSD: ...$" \
+ "" \
+ "# topic" \
+ "#" \
+ "# Explanation of the topic."
+
+ HELP_DEBUG="yes" TOPIC=":all" awk -f "$pkgsrcdir/mk/help/help.awk" \
+ "test.help" >"out"
+
+ assert_that "out" --file-is-lines \
+ 'test.help:1: "$NetBSD:" is no keyword because it is mixed case' \
+ 'test.help:1: Ignoring section because of missing keywords.' \
+ 'test.help:2: Ignoring section because of missing keywords.' \
+ 'test.help:3: Adding keyword "topic"' \
+ 'test.help:5: "Explanation" is no keyword because it is mixed case' \
+ '===> test.help (keywords: topic):' \
+ '# topic' \
+ '#' \
+ '# Explanation of the topic.' \
+
+ test_case_end
+fi
+
+
+if test_case_begin "short help topic"; then
+
+ # The topic starts in the paragraph in line 3 and has only 3 lines.
+ # It still has enough explanation to be considered valuable.
+ # This form is often used in mk/help/undefined-reference.help.
+
+ create_file_lines "test.help" \
+ "# $""NetBSD: ...$" \
+ "" \
+ "# topic" \
+ "#" \
+ "# Explanation of the topic."
+
+ TOPIC="topic" awk -f "$pkgsrcdir/mk/help/help.awk" \
+ "test.help" >"out"
+
+ assert_that "out" --file-is-lines \
+ '===> test.help (keywords: topic):' \
+ '# topic' \
+ '#' \
+ '# Explanation of the topic.' \
+
+ test_case_end
+fi