/
niceSOFT
/
make
Обзор
Документация
Войти
/
niceSOFT
/
make
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/scripts/targets/ONESHELL
139 строк
3 KB
Paul Smith
* tests/*: Quote backticked command paths
27 авг 2025, 05:54
27 авг 2025, 05:54
ac2142e
Код
Авторство
О чём код?
# -*-perl-*- $description = "Test the behaviour of the .ONESHELL target."; $details = ""; my $multi_ok = 0; if ($port_type ne 'W32') { # Some shells (*shakes fist at Solaris*) cannot handle multiple flags in # separate arguments. my $t = `"$sh_name" -e -c true 2>/dev/null`; $multi_ok = $? == 0; } # Simple run_make_test(q! .ONESHELL: all: #TAB#a=$$$$ #TAB#[ 0"$$a" -eq "$$$$" ] || echo fail !, '', 'a=$$ [ 0"$a" -eq "$$" ] || echo fail '); # Simple but use multi-word SHELLFLAGS if ($multi_ok) { run_make_test(q! .ONESHELL: .SHELLFLAGS = -e -c all: #TAB#a=$$$$ #TAB#[ 0"$$a" -eq "$$$$" ] || echo fail !, '', 'a=$$ [ 0"$a" -eq "$$" ] || echo fail '); } # Again, but this time with inner prefix chars run_make_test(q! .ONESHELL: all: #TAB#a=$$$$ #TAB#@-+ [ 0"$$a" -eq "$$$$" ] || echo fail !, '', 'a=$$ [ 0"$a" -eq "$$" ] || echo fail '); # This time with outer prefix chars run_make_test(q! .ONESHELL: all: #TAB# @a=$$$$ #TAB# [ 0"$$a" -eq "$$$$" ] || echo fail !, '', ''); # This time with outer and inner prefix chars run_make_test(q! .ONESHELL: all: #TAB# @a=$$$$ #TAB# -@ +[ 0"$$a" -eq "$$$$" ] || echo fail !, '', ''); # Now try using a different interpreter # This doesn't work on Windows right now if ($port_type ne 'W32') { run_make_test(q! .RECIPEPREFIX = > .ONESHELL: SHELL = #PERL# .SHELLFLAGS = -e all: >#TAB# @$$a=5 >#TAB# +7; >#TAB#@y=qw(a b c); >print "a = $$a, y = (@y)\n"; !, '', "a = 12, y = (a b c)\n"); # Simple .SHELLFLAGS, no quotes. # sv 61805. run_make_test(q! .ONESHELL: SHELL = #PERL# .SHELLFLAGS = -e all:; @print "it works\n" !, '', 'it works'); # Pass a quoted string with spaces to oneshell. # sv 61805. run_make_test(q! .ONESHELL: SHELL = #PERL# .SHELLFLAGS = -w -E 'use warnings FATAL => "all";' -E all:; @print "it works\n" !, '', 'it works'); # Empty .SHELLFLAGS. # sv 61805. run_make_test(q! .ONESHELL: SHELL = #PERL# .SHELLFLAGS = all:; @print "it works" !, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: all] Error $ERR_no_such_file_code", 512); # No .SHELLFLAGS. # sv 61805. run_make_test(q! .ONESHELL: SHELL = #PERL# all:; @print "it works" !, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:4: all] Error $ERR_no_such_file_code", 512); # Pass a quoted string with spaces to oneshell. # sv 61805. run_make_test(q! .ONESHELL: SHELL = #PERL# .SHELLFLAGS = -w -E 'use warnings FATAL => "all";' -E 'my $$foo = "bar";' -E all:; @print "it works: $$foo\n" !, '', 'it works: bar'); } # This tells the test driver that the perl test script executed properly. 1;