]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* tests/scripts/options/dash-l: Simplify the test via the helper
authorPaul Smith <psmith@gnu.org>
Sun, 26 Feb 2023 17:43:27 +0000 (12:43 -0500)
committerPaul Smith <psmith@gnu.org>
Sun, 26 Feb 2023 18:46:02 +0000 (13:46 -0500)
* tests/thelp.pl: Add "exist" and "noexist" operators.

tests/scripts/options/dash-l
tests/thelp.pl

index d1e604947f44b2d1ba67b8e8c485e2b7a68156b7..a89da78c218379db10d68000db93c156a19bac70 100644 (file)
@@ -20,32 +20,27 @@ also specified on the command line.";
 $port_type eq 'W32' and return -1;
 
 open(MAKEFILE,"> $makefile");
-printf MAKEFILE q,
-define test
-if [ ! -f test-file ]; then \
-  echo >> test-file; sleep 2; %s test-file; \
-else \
-  echo $@ FAILED; \
-fi
-endef
+printf MAKEFILE subst_make_string(q!
+test = #HELPER# noexist test-file file test-file sleep 2 rm test-file
 
 all : ONE TWO THREE
 ONE : ; @$(test)
 TWO : ; @$(test)
 THREE : ; @$(test)
-,, $CMD_rmfile;
+!);
 close(MAKEFILE);
+my $ans = "noexist test-file\nfile test-file\nsleep 2\nrm test-file\n";
 
 $mkoptions = "-l 0.0001";
 $mkoptions .= " -j 4" if ($parallel_jobs);
 
 # We have to wait longer than the default (5s).
-&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8);
+&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 10);
 
 $slurp = &read_file_into_string(&get_logfile(1));
 if ($slurp =~ /cannot enforce load limit/) {
   return -1;
 }
-&compare_output("", &get_logfile(1));
+&compare_output("$ans$ans$ans", &get_logfile(1));
 
 1;
index 55650521990d3cce1fc43eae86738ab8737cbcba..da042aa41da3c9d76fa9a8e2ed032230512134e2 100755 (executable)
@@ -8,17 +8,19 @@
 # Each step consists of an operator and argument.
 #
 # It supports the following operators:
-#  out <word>   : echo <word> to stdout with a newline
-#  raw <word>   : echo <word> to stdout without adding anything
-#  env <word>   : echo the value of the env.var. <word>, or "<unset>"
-#  file <word>  : echo <word> to stdout AND create the file <word>
-#  dir <word>   : echo <word> to stdout AND create the directory <word>
-#  rm <word>    : echo <word> to stdout AND delete the file/directory <word>
-#  wait <word>  : wait for a file named <word> to exist
-#  tmout <secs> : Change the timeout for waiting.  Default is 4 seconds.
-#  sleep <secs> : Sleep for <secs> seconds then echo <secs>
-#  term <pid>   : send SIGTERM to PID <pid>
-#  fail <err>   : echo <err> to stdout then exit with error code err
+#  out <word>     : echo <word> to stdout with a newline
+#  raw <word>     : echo <word> to stdout without adding anything
+#  env <word>     : echo the value of the env.var. <word>, or "<unset>"
+#  file <word>    : echo <word> to stdout AND create the file <word>
+#  dir <word>     : echo <word> to stdout AND create the directory <word>
+#  rm <word>      : echo <word> to stdout AND delete the file/directory <word>
+#  wait <word>    : wait for a file named <word> to exist
+#  exist <word>   : echo <word> AND fail if a file named <word> doesn't exist
+#  noexist <word> : echo <word> AND fail if a file named <word> exists
+#  tmout <secs>   : Change the timeout for waiting.  Default is 4 seconds.
+#  sleep <secs>   : Sleep for <secs> seconds then echo <secs>
+#  term <pid>     : send SIGTERM to PID <pid>
+#  fail <err>     : echo <err> to stdout then exit with error code err
 #
 # If given -q only the "out", "raw", and "env" commands generate output.
 
@@ -60,6 +62,18 @@ sub op {
         return 1;
     }
 
+    if ($op eq 'exist') {
+        -f "$nm" || die "$nm: file should exist: $!\n";
+        print "exist $nm\n" unless $quiet;
+        return 1
+    }
+
+    if ($op eq 'noexist') {
+        -f "$nm" && die "$nm: file exists\n";
+        print "noexist $nm\n" unless $quiet;
+        return 1
+    }
+
     # Show the output before creating the directory
     if ($op eq 'dir') {
         print "dir $nm\n" unless $quiet;