pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/regress/subst regress/subst: demonstrate that SUBST_VA...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/efa24cb78844
branches:  trunk
changeset: 321159:efa24cb78844
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sun Mar 17 11:28:13 2019 +0000

description:
regress/subst: demonstrate that SUBST_VARS doesn't pass newlines

Sure, it's an edge case and has not been necessary until now.
Nevertheless it's good to see how this can be done.

Variables having dots in their names are also not handled completely
correct. This also didn't occur in practice since the variable names
passed to SUBST_VARS are usually A-Za-z0-9_ only.

diffstat:

 regress/subst/Makefile       |  44 ++++++++++++++++++++++++++++++++++++--------
 regress/subst/PLIST          |   2 ++
 regress/subst/files/expected |  23 +++++++++++++++++++++++
 regress/subst/vars.mk        |   5 -----
 4 files changed, 61 insertions(+), 13 deletions(-)

diffs (112 lines):

diff -r bddf68db45dc -r efa24cb78844 regress/subst/Makefile
--- a/regress/subst/Makefile    Sun Mar 17 11:18:55 2019 +0000
+++ b/regress/subst/Makefile    Sun Mar 17 11:28:13 2019 +0000
@@ -1,30 +1,58 @@
-# $NetBSD: Makefile,v 1.4 2019/03/17 10:19:36 rillig Exp $
+# $NetBSD: Makefile,v 1.5 2019/03/17 11:28:13 rillig Exp $
 #
 
-DISTNAME=      subst-1.0
+DISTNAME=      subst-19.03
 CATEGORIES=    regress
 DISTFILES=     # none
 
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
 COMMENT=       Test the SUBST framework
+LICENSE=       2-clause-bsd
 
 WRKSRC=                ${WRKDIR}
-USE_TOOLS+=    diff
+USE_TOOLS+=    diff printf
 
 SUBST_CLASSES+=                vars
 SUBST_STAGE.vars=      do-build
-SUBST_FILES.vars=      vars
-SUBST_VARS.vars=       PLAIN DQUOT SQUOT DELIM EVIL1
+SUBST_FILES.vars=      vars.after
+SUBST_VARS.vars=       PLAIN DQUOT SQUOT DELIM PRINTABLE
+SUBST_VARS.vars+=      UNDEFINED
+SUBST_VARS.vars+=      BETWEEN_SPACE BETWEEN_TAB BETWEEN_NL
+SUBST_VARS.vars+=      BACKSLASHES VAR...... VAR.abcde
+
+PLAIN=         hello_world
+DQUOT=         "hello   world"
+SQUOT=         'hello     world'
+DELIM=         hello,  world
+PRINTABLE=     !"\#$$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}
+
+#UNDEFINED=    # undefined
 
-.include "vars.mk"
+# Ensure that leading and trailing whitespace is preserved.
+BETWEEN_SPACE= ${:U }between spaces${:U }
+BETWEEN_TAB=   ${:U    }between tabs${:U       }
+# TODO: currently fails; needs to be fixed in subst.mk
+#BETWEEN_NL=   ${.newline}between newlines${.newline}
+
+BACKSLASHES=   \" \, \\, \" \' \0\000 \x40 \089 \a \$$
+
+# Ensure that special regex characters may appear in variable names.
+VAR......=     dots
+VAR.abcde=     letters
+
+do-extract:
+       ${RUN} ${SED} -e /^\#/d -e /^$$/d ${FILESDIR}/expected \
+       > ${WRKSRC}/expected
 
 pre-build:
-       for v in ${SUBST_VARS.vars}; do echo "$$v=@$$v@"; done > ${WRKSRC}/vars
+       ${RUN} printf '%s: <@%s@>\n' ${SUBST_VARS.vars:@var@ ${var:Q} ${var:Q} @} \
+       > ${WRKSRC}/vars.before
+       ${RUN} ${CAT} ${WRKSRC}/vars.before > ${WRKSRC}/vars.after
 
 do-build:
        @${DO_NADA}
 
 post-build:
-       diff -u vars.mk ${WRKSRC}/vars
+       ${RUN} diff -u ${WRKSRC}/expected ${WRKSRC}/vars.after
 
 .include "../../mk/bsd.pkg.mk"
diff -r bddf68db45dc -r efa24cb78844 regress/subst/PLIST
--- a/regress/subst/PLIST       Sun Mar 17 11:18:55 2019 +0000
+++ b/regress/subst/PLIST       Sun Mar 17 11:28:13 2019 +0000
@@ -0,0 +1,2 @@
+@comment $NetBSD: PLIST,v 1.2 2019/03/17 11:28:13 rillig Exp $
+@comment unused
diff -r bddf68db45dc -r efa24cb78844 regress/subst/files/expected
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/regress/subst/files/expected      Sun Mar 17 11:28:13 2019 +0000
@@ -0,0 +1,23 @@
+# $NetBSD: expected,v 1.1 2019/03/17 11:28:13 rillig Exp $
+#
+# The expected output from the SUBST_VARS test.
+# Each substituted value is enclosed in <angle brackets> to clearly
+# show where it begins and ends.
+
+PLAIN: <hello_world>
+DQUOT: <"hello   world">
+SQUOT: <'hello     world'>
+DELIM: <hello,  world>
+PRINTABLE: <!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}>
+
+UNDEFINED: <>
+
+BETWEEN_SPACE: < between spaces >
+BETWEEN_TAB: < between tabs    >
+BETWEEN_NL: <>
+
+BACKSLASHES: <\" \, \\, \" \' \0\000 \x40 \089 \a \$>
+
+VAR......: <dots>
+# FIXME: must be <letters> instead of <dots>
+VAR.abcde: <dots>
diff -r bddf68db45dc -r efa24cb78844 regress/subst/vars.mk
--- a/regress/subst/vars.mk     Sun Mar 17 11:18:55 2019 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-PLAIN=hello_world
-DQUOT="hello   world"
-SQUOT='hello     world'
-DELIM=hello,  world
-EVIL1=h\ello \0\0\0  \\\"\' foo && bar



Home | Main Index | Thread Index | Old Index