summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2020-05-19 06:09:53 +0000
committerrillig <rillig@pkgsrc.org>2020-05-19 06:09:53 +0000
commitd5dee8f1acb8fc8081808467f6e08f1912b86917 (patch)
tree8a82a3dea45f62768a0cd251e78b0d4d1a9600b1 /regress
parent084138c7f2cf501d4af620767d39c821d67ccf8b (diff)
downloadpkgsrc-d5dee8f1acb8fc8081808467f6e08f1912b86917.tar.gz
regress/infra-unittests: demonstrate relative paths in +BUILD_VERSION
Pointed out by wiz@. This occured in math/libixion/Makefile.common until 2020-05-19, and still occurs in math/xyconvert/Makefile. In all other packages, PKGDIR is prefixed with ${.CURDIR} and is thus an absolute path. It should not be necessary to always specify PATCHDIR as an absolute path, and the code in mk/pkgformat/pkg/metadata.mk seems to be the only place where relative paths are handled wrong.
Diffstat (limited to 'regress')
-rw-r--r--regress/infra-unittests/pkgformat-pkg-metadata.sh116
1 files changed, 116 insertions, 0 deletions
diff --git a/regress/infra-unittests/pkgformat-pkg-metadata.sh b/regress/infra-unittests/pkgformat-pkg-metadata.sh
new file mode 100644
index 00000000000..93c878327cf
--- /dev/null
+++ b/regress/infra-unittests/pkgformat-pkg-metadata.sh
@@ -0,0 +1,116 @@
+#! /bin/sh
+# $NetBSD: pkgformat-pkg-metadata.sh,v 1.1 2020/05/19 06:09:53 rillig Exp $
+#
+# Demonstrates how mk/pkgformat/pkg/metadata.mk creates the versioning
+# information in +BUILD_VERSION.
+#
+# As of May 2020, several directories must be prefixed with ${.CURDIR},
+# since otherwise +BUILD_VERSION ends up containing corrupt data.
+#
+
+set -eu
+
+. './test.subr'
+
+test_case_set_up() {
+ create_file 'setup.mk' <<-EOF
+ AWK= awk
+ CAT= cat
+ ECHO= echo
+ GREP= grep
+ MKDIR= mkdir -p
+ RM= rm
+ SED= sed
+ SORT= sort
+ TEST= test
+
+ RUN= @set -e;
+ INIT_SYSTEM= rc.d
+ WRKDIR= $PWD
+ WRKSRC= $PWD
+ PKGSRCDIR= $mocked_pkgsrcdir
+ EOF
+}
+
+
+if test_case_begin 'absolute paths'; then
+
+ wrkdir="$PWD"
+ pkgdir="$mocked_pkgsrcdir/category/package"
+ mkdir -p "$pkgdir"
+ cd "$pkgdir"
+
+ cvsid='$''NetBSD: marker ''$'
+ create_file 'Makefile' <<-EOF
+ # $cvsid
+
+ PKGDIR= \${.CURDIR}
+ FILESDIR= \${.CURDIR}/files
+ PATCHDIR= \${.CURDIR}/patches
+ DISTINFO_FILE= \${.CURDIR}/distinfo
+
+ .include "$wrkdir/setup.mk"
+ .include "$pkgsrcdir/mk/pkgformat/pkg/metadata.mk"
+ EOF
+ create_file_lines 'patches/patch-aa' \
+ "$cvsid"
+ create_file_lines 'files/README' \
+ "$cvsid"
+
+ run_bmake 'Makefile' "$wrkdir/.pkgdb/+BUILD_VERSION" \
+ 1> "$tmpdir/output" 2>&1 \
+ && exitcode=0 || exitcode=$?
+
+ assert_that "$exitcode" --equals '0'
+ assert_that "$tmpdir/output" --file-is-empty
+ assert_that "$wrkdir/.pkgdb/+BUILD_VERSION" --file-is-lines \
+ "category/package/Makefile: $cvsid" \
+ "category/package/files/README: $cvsid" \
+ "category/package/patches/patch-aa: $cvsid"
+
+ test_case_end
+fi
+
+
+if test_case_begin 'relative paths'; then
+
+ # As of May 2020, the +BUILD_VERSION contains corrupt data.
+
+ wrkdir="$PWD"
+ pkgdir="$mocked_pkgsrcdir/category/package"
+ mkdir -p "$pkgdir"
+ cd "$pkgdir"
+
+ cvsid='$''NetBSD: marker ''$'
+ create_file 'Makefile' <<-EOF
+ # $cvsid
+
+ PKGDIR= .
+ FILESDIR= files
+ PATCHDIR= patches
+ DISTINFO_FILE= distinfo
+
+ .include "$wrkdir/setup.mk"
+ .include "$pkgsrcdir/mk/pkgformat/pkg/metadata.mk"
+ EOF
+ create_file_lines 'patches/patch-aa' \
+ "$cvsid"
+ create_file_lines 'files/README' \
+ "$cvsid"
+
+ run_bmake 'Makefile' "$wrkdir/.pkgdb/+BUILD_VERSION" \
+ 1> "$tmpdir/output" 2>&1 \
+ && exitcode=0 || exitcode=$?
+
+ assert_that "$exitcode" --equals '0'
+ assert_that "$tmpdir/output" --file-is-empty
+ # FIXME: All files listed here are supposed to be relative to
+ # the pkgsrc root directory.
+ assert_that "$wrkdir/.pkgdb/+BUILD_VERSION" --file-is-lines \
+ "./Makefile: $cvsid" \
+ "category/package/Makefile: $cvsid" \
+ "files/README: $cvsid" \
+ "patches/patch-aa: $cvsid"
+
+ test_case_end
+fi