Imported Upstream version 4.4
[platform/upstream/make.git] / tests / scripts / options / dash-l
1 #                                                                    -*-perl-*-
2 # Date: Tue, 11 Aug 1992 09:34:26 -0400
3 # From: pds@lemming.webo.dg.com (Paul D. Smith)
4
5 $description = "Test load balancing (-l) option.";
6
7 $details = "\
8 This test creates a makefile where all depends on three rules
9 which contain the same body.  Each rule checks for the existence
10 of a temporary file; if it exists an error is generated.  If it
11 doesn't exist then it is created, the rule sleeps, then deletes
12 the temp file again.  Thus if any of the rules are run in
13 parallel the test will fail.  When make is called in this test,
14 it is given the -l option with a value of 0.0001.  This ensures
15 that the load will be above this number and make will therefore
16 decide that it cannot run more than one job even though -j 4 was
17 also specified on the command line.";
18
19 # On Windows a very different algorithm is used.
20 $port_type eq 'W32' and return -1;
21
22 open(MAKEFILE,"> $makefile");
23 printf MAKEFILE q,
24 define test
25 if [ ! -f test-file ]; then \
26   echo >> test-file; sleep 2; %s test-file; \
27 else \
28   echo $@ FAILED; \
29 fi
30 endef
31
32 all : ONE TWO THREE
33 ONE : ; @$(test)
34 TWO : ; @$(test)
35 THREE : ; @$(test)
36 ,, $CMD_rmfile;
37 close(MAKEFILE);
38
39 $mkoptions = "-l 0.0001";
40 $mkoptions .= " -j 4" if ($parallel_jobs);
41
42 # We have to wait longer than the default (5s).
43 &run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8);
44
45 $slurp = &read_file_into_string(&get_logfile(1));
46 if ($slurp =~ /cannot enforce load limit/) {
47   return -1;
48 }
49 &compare_output("", &get_logfile(1));
50
51 1;