pkgsrc/regress/infra-unittests/pkgformat-pkg-metadata.sh
rillig e45d2e3458 mk/pkgformat/metadata.mk: fix relative paths in PATCHDIR and FILESDIR
Before, relative paths had been stored as-is.  This affected those
packages that defined PATCHDIR or FILESDIR as relative directory instead
of prefixing it with ${.CURDIR}.

Since there are already several other paths that are interpreted relative
to the package directory (CONFLICTS, DEPENDS), allow PATCHDIR and
FILESDIR to be specified as relative paths, too.  This makes the package
Makefiles a bit shorter.
2020-05-21 18:48:43 +00:00

114 lines
2.5 KiB
Bash

#! /bin/sh
# $NetBSD: pkgformat-pkg-metadata.sh,v 1.2 2020/05/21 18:48:43 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
# Up to 2020-05-21, relative paths were stored wrong in the
# +BUILD_VERSION file.
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
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