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}

Reply via email to