mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-28 15:57:48 +00:00
047bd5a16f
While displaying line numbers, show the relevant line number inside the recipe not just the first line of the entire recipe. Sample changes suggested by Brian Vandenberg <phantall@gmail.com> * gnumake.h (gmk_floc): Add an 'offset' to track the recipe offset. * read.c (eval, eval_makefile, eval_buffer): Initialize 'offset'. (record_files, install_pattern_rule): Ditto. * job.c (new_job, job_next_command): Update 'offset' based on the line of the recipe we're expanding or invoking. (child_error): Add 'offset' when showing the line number. * function.c (func_shell_base): Ditto. * output.c (error, fatal): Ditto. * NEWS: Mention the new ability. * tests/scripts/features/errors: Check the line number on errors. * tests/scripts/functions/warning: Check the line number on warnings. * tests/scripts/features/output-sync, tests/scripts/features/parallelism, tests/scripts/functions/shell, tests/scripts/functions/error: Update line numbers.
71 lines
1.6 KiB
Perl
71 lines
1.6 KiB
Perl
# -*-Perl-*-
|
|
|
|
$description = "\
|
|
The following test creates a makefile to test the error function.";
|
|
|
|
$details = "";
|
|
|
|
open(MAKEFILE,"> $makefile");
|
|
|
|
print MAKEFILE 'err = $(error Error found!)
|
|
|
|
ifdef ERROR1
|
|
$(error error is $(ERROR1))
|
|
endif
|
|
|
|
ifdef ERROR2
|
|
$(error error is $(ERROR2))
|
|
endif
|
|
|
|
ifdef ERROR3
|
|
all: some; @echo $(error error is $(ERROR3))
|
|
endif
|
|
|
|
ifdef ERROR4
|
|
all: some; @echo error is $(ERROR4)
|
|
@echo $(error error is $(ERROR4))
|
|
endif
|
|
|
|
some: ; @echo Some stuff
|
|
|
|
testvar: ; @: $(err)
|
|
';
|
|
|
|
close(MAKEFILE);
|
|
|
|
# Test #1
|
|
|
|
&run_make_with_options($makefile, "ERROR1=yes", &get_logfile, 512);
|
|
$answer = "$makefile:4: *** error is yes. Stop.\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
# Test #2
|
|
|
|
&run_make_with_options($makefile, "ERROR2=no", &get_logfile, 512);
|
|
$answer = "$makefile:8: *** error is no. Stop.\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
# Test #3
|
|
|
|
&run_make_with_options($makefile, "ERROR3=maybe", &get_logfile, 512);
|
|
$answer = "Some stuff\n$makefile:12: *** error is maybe. Stop.\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
# Test #4
|
|
|
|
&run_make_with_options($makefile, "ERROR4=definitely", &get_logfile, 512);
|
|
$answer = "Some stuff\n$makefile:17: *** error is definitely. Stop.\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
# Test #5
|
|
|
|
&run_make_with_options($makefile, "testvar", &get_logfile, 512);
|
|
$answer = "$makefile:22: *** Error found!. Stop.\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
# This tells the test driver that the perl test script executed properly.
|
|
1;
|
|
|
|
### Local Variables:
|
|
### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
|
|
### End:
|