make/tests/scripts/options/dash-e

146 lines
4.6 KiB
Text
Raw Normal View History

# -*-perl-*-
$description = "Test the -e (environment overrides) option";
$ENV{GOOGLE} = 'boggle';
run_make_test(q!
GOOGLE = bazzle
all:; @echo "$(GOOGLE)"
!,
'-e', "boggle\n");
# Ensure variables set on the command line have the origin correct
# See SV 61218
run_make_test(q!
$(info FOO [$(origin FOO)]: $(value FOO))
all: ;
recurse: ; @$(MAKE) -f #MAKEFILE#
!,
'-e --no-print-directory FOO=1 recurse',
"FOO [command line]: 1\nFOO [command line]: 1\n#MAKE#[1]: 'all' is up to date.");
# SV 64803.
# Test that the origin of an env variable is 'enviroment override' when -e
# is set and the makefile does not modify the variable.
# First run the test without -e and then with -e.
mkdir('lib', 0777);
create_file('lib/makefile',
'$(info in submake value=$(hello), origin=$(origin hello))
all:; @echo "value=$(hello), origin=$(origin hello)"'."\n");
# No -e.
$ENV{hello} = 'world';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -C lib
.PHONY: lib all
!,
'-s',
"value=world, origin=environment\nvalue=world, origin=environment\n".
"in submake value=world, origin=environment\nvalue=world, origin=environment");
# -e is specified on the command line.
my @opts = ('-e', '--environment-overrides');
for my $opt (@opts) {
$ENV{hello} = 'world';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -C lib
.PHONY: lib all
!,
"-s $opt",
"value=world, origin=environment override\nvalue=world, origin=environment override\n".
"in submake value=world, origin=environment override\nvalue=world, origin=environment override");
}
# MAKEFLAGS from env affects top level make.
$ENV{hello} = 'world';
$ENV{MAKEFLAGS} = 'e';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -C lib
.PHONY: lib all
!,
"-s",
"value=world, origin=environment override\nvalue=world, origin=environment override\n".
"in submake value=world, origin=environment override\nvalue=world, origin=environment override");
# -e is passed to submake on the command line.
$ENV{hello} = 'world';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -e -C lib
.PHONY: lib all
!,
"-s",
"value=world, origin=environment\nvalue=world, origin=environment\n".
"in submake value=world, origin=environment override\nvalue=world, origin=environment override");
# MAKEFLAGS is reset for submake.
$ENV{hello} = 'world';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -C lib MAKEFLAGS=
.PHONY: lib all
!,
"-se",
"value=world, origin=environment override\nvalue=world, origin=environment override\n".
"in submake value=world, origin=environment\nvalue=world, origin=environment");
# Some MAKEFLAGS in top make env.
# This MAKEFLAGS does not conform to the format that make itself produces for
# submake. However, make still parses and honors this MAKEFLAGS.
# This test checks that make does not confuse 'e' in 'extramk' with '-e'.
$ENV{MAKEFLAGS} = 'r -Iextramk -k bye=moon';
$ENV{hello} = 'world';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -C lib
.PHONY: lib all
!,
"-s",
"value=world, origin=environment\nvalue=world, origin=environment\n".
"in submake value=world, origin=environment\nvalue=world, origin=environment");
# Some MAKEFLAGS in top make env.
# This MAKEFLAGS does not conform to the format that make itself produces for
# submake. However, make still parses and honors this MAKEFLAGS.
# This test checks that make detects '-e' in this MAKEFLAGS.
$ENV{MAKEFLAGS} = 'r -Iextramk -ke bye=moon';
$ENV{hello} = 'world';
run_make_test(q!
.RECIPEPREFIX = >
$(info value=$(hello), origin=$(origin hello))
all:
> @echo "value=$(hello), origin=$(origin hello)"
> @$(MAKE) -C lib
.PHONY: lib all
!,
"-s",
"value=world, origin=environment override\nvalue=world, origin=environment override\n".
"in submake value=world, origin=environment override\nvalue=world, origin=environment override");
1;