pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/regress
Module Name: pkgsrc
Committed By: rillig
Date: Wed Jul 1 08:15:59 UTC 2020
Added Files:
pkgsrc/regress/infra-unittests: show-all.sh
Removed Files:
pkgsrc/regress/show-all: DESCR Makefile PLIST spec
Log Message:
regress/show-all: migrate to regress/infra-unittests
The test framework over there makes it easier to run several independent
tests. The previous way of squeezing all tests into a single package
Makefile did not scale well and made it invonvenient to add new tests.
In addition, there was no need to create a full-fledged package just to
test this tiny piece of the pkgsrc infrastructure, since that can be
used in categories and the top-level as well.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 pkgsrc/regress/infra-unittests/show-all.sh
cvs rdiff -u -r1.1 -r0 pkgsrc/regress/show-all/DESCR \
pkgsrc/regress/show-all/PLIST
cvs rdiff -u -r1.5 -r0 pkgsrc/regress/show-all/Makefile \
pkgsrc/regress/show-all/spec
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: pkgsrc/regress/infra-unittests/show-all.sh
diff -u /dev/null pkgsrc/regress/infra-unittests/show-all.sh:1.1
--- /dev/null Wed Jul 1 08:15:59 2020
+++ pkgsrc/regress/infra-unittests/show-all.sh Wed Jul 1 08:15:58 2020
@@ -0,0 +1,157 @@
+#! /bin/sh
+# $NetBSD: show-all.sh,v 1.1 2020/07/01 08:15:58 rillig Exp $
+#
+# Tests for the show-all target from mk/misc/show.mk.
+#
+# Ensures that the show-all target prints all variants of variable
+# values as intended. This involves sorted multi-valued variables (like
+# CONFIGURE_ENV), other multi-valued variables (like CONFIGURE_ARGS),
+# variables containing special characters that need to be escaped, and
+# various other edge cases.
+#
+
+. './test.subr'
+
+
+if test_case_begin 'show all'; then
+
+ # Ensures that the output of the show-all target is easily
+ # recognizable by pkgsrc developers.
+ #
+ # The variable values are aligned in column 24 by default. The
+ # variable assignments have the same form as those that are
+ # written in Makefiles.
+ #
+ # For lists of values, each value is written on a line of its
+ # own, to aid readability. The final line only contains the
+ # comment marker, for ease of implementation. This comment
+ # marker also provides a convenient place for remarks like
+ # "sorted" or "ends with space".
+
+ create_file 'test.mk' <<'EOF'
+REGRESS.empty= # empty
+REGRESS.space= ${:U } # a single space
+REGRESS.value= All * kinds of `strange' \escape $$characters
+
+REGRESS_ENV.empty= # empty
+REGRESS_ENV.space= ${:U } # a single space
+REGRESS_ENV.value= VAR1=value1 VAR2=`command execution via backticks` *=all
+
+REGRESS_ARGS.empty= # empty
+REGRESS_ARGS.space= ${:U } # a single space
+REGRESS_ARGS.value= VAR1=value1 VAR2=`command execution via backticks` *=all
+
+# Variable names may also contain special characters that must be escaped.
+#
+# The "*" variable is built-in into bmake and expands to the current
+# make target, which in this case is "show-all-regress".
+#
+# The "**" variable ensures that show-all doesn't accidentally expand
+# filenames.
+*= bmake built-in
+**= asterisk
+
+_VARGROUPS+= regress
+_PKG_VARS.regress+= REGRESS_ENV.undefined REGRESS_ENV.empty REGRESS_ENV.space REGRESS_ENV.value
+_PKG_VARS.regress+= REGRESS_ARGS.undefined REGRESS_ARGS.empty REGRESS_ARGS.space REGRESS_ARGS.value
+_PKG_VARS.regress+= REGRESS.undefined REGRESS.empty REGRESS.space REGRESS.value
+_PKG_VARS.regress+= * **
+_SORTED_VARS.regress= *_ENV.*
+_LISTED_VARS.regress= *_ARGS.*
+
+RUN= @set -eu;
+.include "${PKGSRCDIR}/mk/misc/show.mk"
+EOF
+
+ PKGSRCDIR="$pkgsrcdir" \
+ "$make" -f 'test.mk' 'show-all-regress' 1> 'output' 2>&1 \
+ && exitcode=0 || exitcode=$?
+
+ create_file 'expected' <<'EOF'
+regress:
+ pkg REGRESS_ENV.undefined # undefined
+ pkg REGRESS_ENV.empty= # empty
+ pkg REGRESS_ENV.space= # empty
+ pkg REGRESS_ENV.value= \
+ *=all \
+ VAR1=value1 \
+ VAR2=`command \
+ backticks` \
+ execution \
+ via \
+ # end of REGRESS_ENV.value (sorted)
+ pkg REGRESS_ARGS.undefined # undefined
+ pkg REGRESS_ARGS.empty= # empty
+ pkg REGRESS_ARGS.space= # empty
+ pkg REGRESS_ARGS.value= \
+ VAR1=value1 \
+ VAR2=`command \
+ execution \
+ via \
+ backticks` \
+ *=all \
+ # end of REGRESS_ARGS.value
+ pkg REGRESS.undefined # undefined
+ pkg REGRESS.empty= # empty
+ pkg REGRESS.space= # ends with space
+ pkg REGRESS.value= All * kinds of `strange' \escape $$characters
+ pkg *= show-all-regress
+ pkg **= asterisk
+
+EOF
+
+ # On first sight it may seem strange that bmake doesn't handle
+ # the backticks command as a single word. Luckily, this is a
+ # rare case.
+ #
+ # On the other hand, if it did, bmake would also have to handle
+ # variable expansion and all the other syntactic difficulties
+ # from parsing shell commands, and that would be just too much.
+
+ assert_that "$exitcode" --equals '0'
+ assert_that 'output' --file-equals 'expected'
+
+ test_case_end
+fi
+
+
+if test_case_begin 'show dollars in variable values'; then
+
+ create_file 'test.mk' <<'EOF'
+SHELLVAR_PLAIN= "$$var $${var} $$other $$$$"
+SHELLVAR_ENV= "$$var $${var} $$other $$$$"
+SHELLVAR_ARGS= "$$var $${var} $$other $$$$"
+
+_VARGROUPS+= shellvar
+_PKG_VARS.shellvar= SHELLVAR_PLAIN SHELLVAR_ENV SHELLVAR_ARGS
+_SORTED_VARS.shellvar= *_ENV
+_LISTED_VARS.shellvar= *_ARGS
+
+RUN= @set -eu;
+.include "${PKGSRCDIR}/mk/misc/show.mk"
+EOF
+
+ PKGSRCDIR="$pkgsrcdir" \
+ "$make" -f 'test.mk' 'show-all-shellvar' 1> 'output' 2>&1 \
+ && exitcode=0 || exitcode=$?
+
+ # Up to 2020-03-20, the output of the ENV and ARGS variables differed
+ # a lot from the PLAIN variable.
+ #
+ create_file 'expected' <<'EOF'
+shellvar:
+ pkg SHELLVAR_PLAIN= "$$var $${var} $$other $$$$"
+ pkg SHELLVAR_ENV= \
+ "$$var $${var} $$other $$$$" \
+ # end of SHELLVAR_ENV (sorted)
+ pkg SHELLVAR_ARGS= \
+ "$$var $${var} $$other $$$$" \
+ # end of SHELLVAR_ARGS
+
+EOF
+
+ assert_that "$exitcode" --equals '0'
+ assert_that 'output' --file-equals 'expected'
+
+ test_case_end
+fi
Home |
Main Index |
Thread Index |
Old Index