Module Name: src
Committed By: rillig
Date: Mon Jul 27 18:51:03 UTC 2020
Modified Files:
src/distrib/sets/lists/tests: mi
Added Files:
src/usr.bin/make/unit-tests: archive.exp archive.mk
Log Message:
make(1): add very basic test for archive handling
The whole code in arch.c had been uncovered by tests before.
The code coverage shows that neither the archive name nor the member
contain any $, even though archive.mk looks like it. It could be
necessary to place the variable assignments below the dependency line,
to force late evaluation.
To generate a diff of this commit:
cvs rdiff -u -r1.878 -r1.879 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r0 -r1.1 src/usr.bin/make/unit-tests/archive.exp \
src/usr.bin/make/unit-tests/archive.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.878 src/distrib/sets/lists/tests/mi:1.879
--- src/distrib/sets/lists/tests/mi:1.878 Sun Jul 26 22:15:36 2020
+++ src/distrib/sets/lists/tests/mi Mon Jul 27 18:51:03 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.878 2020/07/26 22:15:36 rillig Exp $
+# $NetBSD: mi,v 1.879 2020/07/27 18:51:03 rillig Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -4522,6 +4522,8 @@
./usr/tests/usr.bin/make/t_make tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/Makefile tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/archive.exp tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/archive.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/comment.exp tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/comment.mk tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/make/unit-tests/cond-late.exp tests-usr.bin-tests compattestfile,atf
Added files:
Index: src/usr.bin/make/unit-tests/archive.exp
diff -u /dev/null src/usr.bin/make/unit-tests/archive.exp:1.1
--- /dev/null Mon Jul 27 18:51:03 2020
+++ src/usr.bin/make/unit-tests/archive.exp Mon Jul 27 18:51:03 2020
@@ -0,0 +1,10 @@
+ar cru libprog.a archive.mk modmisc.mk varmisc.mk
+ranlib libprog.a
+ar t libprog.a
+archive.mk
+modmisc.mk
+varmisc.mk
+depend-on-existing-member
+`depend-on-nonexistent-member' is up to date.
+rm libprog.a
+exit status 0
Index: src/usr.bin/make/unit-tests/archive.mk
diff -u /dev/null src/usr.bin/make/unit-tests/archive.mk:1.1
--- /dev/null Mon Jul 27 18:51:03 2020
+++ src/usr.bin/make/unit-tests/archive.mk Mon Jul 27 18:51:03 2020
@@ -0,0 +1,37 @@
+# $NetBSD: archive.mk,v 1.1 2020/07/27 18:51:03 rillig Exp $
+#
+# Very basic demonstration of handling archives, based on the description
+# in PSD.doc/tutorial.ms.
+
+ARCHIVE= libprog.${EXT.a}
+FILES= archive.${EXT.mk} modmisc.${EXT.mk} varmisc.mk
+
+EXT.a= a
+EXT.mk= mk
+
+MAKE_CMD= ${.MAKE} -f ${MAKEFILE}
+RUN?= @set -eu;
+
+all:
+ ${RUN} ${MAKE_CMD} create-archive
+ ${RUN} ${MAKE_CMD} list-archive
+ ${RUN} ${MAKE_CMD} depend-on-existing-member
+ ${RUN} ${MAKE_CMD} depend-on-nonexistent-member
+ ${RUN} ${MAKE_CMD} remove-archive
+
+create-archive: ${ARCHIVE}
+${ARCHIVE}: ${ARCHIVE}(${FILES})
+ ar cru ${.TARGET} ${.OODATE}
+ ranlib ${.TARGET}
+
+list-archive: ${ARCHIVE}
+ ar t ${.ALLSRC}
+
+depend-on-existing-member: ${ARCHIVE}(archive.mk)
+ ${RUN} echo $@
+
+depend-on-nonexistent-member: ${ARCHIVE}(nonexistent.mk)
+ ${RUN} echo $@
+
+remove-archive: ${ARCHIVE}
+ rm ${ARCHIVE}