aboutsummaryrefslogtreecommitdiff
path: root/contrib/bmake/unit-tests/compat-error.mk
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bmake/unit-tests/compat-error.mk')
-rw-r--r--contrib/bmake/unit-tests/compat-error.mk37
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/bmake/unit-tests/compat-error.mk b/contrib/bmake/unit-tests/compat-error.mk
new file mode 100644
index 000000000000..4cbc48d4b6bb
--- /dev/null
+++ b/contrib/bmake/unit-tests/compat-error.mk
@@ -0,0 +1,37 @@
+# $NetBSD: compat-error.mk,v 1.3 2020/12/13 19:33:53 rillig Exp $
+#
+# Test detailed error handling in compat mode.
+#
+# Until 2020-12-13, .ERROR_TARGET was success3, which was wrong.
+# Since compat.c 1.215 from 2020-12-13, it is 'fail1', which is the first
+# failed top-level target. XXX: Even better would be if .ERROR_TARGET were
+# the smallest target that caused the build to fail, even if it were a
+# sub-sub-sub-dependency of a top-level target.
+#
+# XXX: As of 2020-12-13, .ERROR_CMD is empty, which is wrong.
+#
+# See also:
+# Compat_Run
+#
+# The commit that added the NULL command to gn->commands:
+# CVS: 1994.06.06.22.45.??
+# Git: 26a8972fd7f982502c5fbfdabd34578b99d77ca5
+# 1994: Lst_Replace (cmdNode, (ClientData) NULL);
+# 2020: LstNode_SetNull(cmdNode);
+#
+# The commit that skipped NULL commands for .ERROR_CMD:
+# CVS: 2016.08.11.19.53.??
+# Git: 58b23478b7353d46457089e726b07a49197388e4
+
+.MAKEFLAGS: success1 fail1 success2 fail2 success3
+
+success1 success2 success3:
+ : Making ${.TARGET} out of nothing.
+
+fail1 fail2:
+ : Making ${.TARGET} out of nothing.
+ false '${.TARGET}' '$${.TARGET}' '$$$${.TARGET}'
+
+.ERROR:
+ @echo ${.TARGET} target: '<'${.ERROR_TARGET:Q}'>'
+ @echo ${.TARGET} command: '<'${.ERROR_CMD:Q}'>'