env_parallel.{bash,fish,ksh,zsh} fixes + testsuite.

This commit is contained in:
Ole Tange 2016-11-06 23:01:42 +01:00
parent 3e440983e7
commit f905690898
6 changed files with 103 additions and 13 deletions

View file

@ -65,7 +65,9 @@ env_parallel() {
# --record-env # --record-env
if ! perl -e 'exit grep { /^--record-env$/ } @ARGV' -- "$@"; then if ! perl -e 'exit grep { /^--record-env$/ } @ARGV' -- "$@"; then
(compgen -a; compgen -A function; compgen -A variable) | (compgen -a;
compgen -A function;
compgen -A variable) |
cat > $HOME/.parallel/ignored_vars cat > $HOME/.parallel/ignored_vars
return 0 return 0
fi fi

View file

@ -79,12 +79,20 @@ function env_parallel
end; end;
) )
# --record-env
perl -e 'exit grep { /^--record-env$/ } @ARGV' -- $argv; or begin;
begin;
functions -n | perl -pe 's/,/\n/g';
set -n;
end | cat > $HOME/.parallel/ignored_vars;
end;
# Export function definitions # Export function definitions
functions -n | perl -pe 's/,/\n/g' | grep -E "^$_grep_REGEXP"\$ | grep -vE "^$_ignore_UNDERSCORE"\$ | while read d; functions $d; end; functions -n | perl -pe 's/,/\n/g' | grep -E "^$_grep_REGEXP"\$ | grep -vE "^$_ignore_UNDERSCORE"\$ | while read d; functions $d; end;
# Convert scalar vars to fish \XX quoting # Convert scalar vars to fish \XX quoting
eval (set -L | grep -E "^$_grep_REGEXP " | grep -vE "^$_ignore_UNDERSCORE " | perl -ne 'chomp; eval (set -L | grep -E "^$_grep_REGEXP " | grep -vE "^$_ignore_UNDERSCORE " | perl -ne 'chomp;
($name,$val)=split(/ /,$_,2); ($name,$val)=split(/ /,$_,2);
$name=~/^(HOME|USER|COLUMNS|FISH_VERSION|LINES|PWD|SHLVL|_|history|status|version)$/ and next; $name=~/^(HOME|USER|COLUMNS|FISH_VERSION|LINES|PWD|SHLVL|_|history|status|version)$|\./ and next;
if($val=~/^'"'"'/) { next; } if($val=~/^'"'"'/) { next; }
print "set $name \"\$$name\";\n"; print "set $name \"\$$name\";\n";
') ')
@ -127,7 +135,7 @@ function env_parallel
end |perl -pe 's/\001/\\cb/g and print STDERR "env_parallel: Warning: ASCII value 1 in variables is not supported\n"; end |perl -pe 's/\001/\\cb/g and print STDERR "env_parallel: Warning: ASCII value 1 in variables is not supported\n";
s/\n/\001/' s/\n/\001/'
) )
parallel $argv; perl -e 'exit grep { /^--record-env$/ } @ARGV' -- $argv; and parallel $argv;
set _parallel_exit_CODE $status set _parallel_exit_CODE $status
set -e PARALLEL_ENV set -e PARALLEL_ENV
return $_parallel_exit_CODE return $_parallel_exit_CODE

View file

@ -65,7 +65,9 @@ env_parallel() {
# --record-env # --record-env
if ! perl -e 'exit grep { /^--record-env$/ } @ARGV' -- "$@"; then if ! perl -e 'exit grep { /^--record-env$/ } @ARGV' -- "$@"; then
(compgen -a; compgen -A function; compgen -A variable) | (alias | perl -pe 's/=.*//';
typeset +p -f | perl -pe 's/\(\).*//';
typeset +p | perl -pe 's/^typeset .. //') |
cat > $HOME/.parallel/ignored_vars cat > $HOME/.parallel/ignored_vars
return 0 return 0
fi fi

View file

@ -65,7 +65,9 @@ env_parallel() {
# --record-env # --record-env
if ! perl -e 'exit grep { /^--record-env$/ } @ARGV' -- "$@"; then if ! perl -e 'exit grep { /^--record-env$/ } @ARGV' -- "$@"; then
(compgen -a; compgen -A function; compgen -A variable) | (print -l ${(k)aliases};
print -l ${(k)functions};
print -l ${(k)parameters}) |
cat > $HOME/.parallel/ignored_vars cat > $HOME/.parallel/ignored_vars
return 0 return 0
fi fi

View file

@ -4,6 +4,10 @@ echo '### test --env _'
echo 'Both test that variables are copied,' echo 'Both test that variables are copied,'
echo 'but also that they are NOT copied, if ignored' echo 'but also that they are NOT copied, if ignored'
#
## par_*_man = tests from the man page
#
par_bash_man() { par_bash_man() {
echo '### bash' echo '### bash'
@ -289,6 +293,10 @@ _EOF
} }
#
## par_*_underscore = tests with --env _
#
par_bash_underscore() { par_bash_underscore() {
echo '### bash' echo '### bash'
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
@ -296,6 +304,10 @@ par_bash_underscore() {
. `which env_parallel.bash`; . `which env_parallel.bash`;
alias not_copied_alias="echo BAD"
not_copied_func() { echo BAD; };
not_copied_var=BAD
not_copied_array=(BAD BAD BAD);
env_parallel --record-env; env_parallel --record-env;
alias myecho="echo \$myvar aliases in"; alias myecho="echo \$myvar aliases in";
myfunc() { myecho ${myarray[@]} functions $*; }; myfunc() { myecho ${myarray[@]} functions $*; };
@ -308,6 +320,11 @@ par_bash_underscore() {
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
env_parallel --env _ -S server not_copied_alias ::: error=OK;
env_parallel --env _ -S server not_copied_func ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_var ::: error=OK;
env_parallel --env _ -S server echo \${not_copied_array[@]} ::: error=OK;
echo myvar >> ~/.parallel/ignored_vars; echo myvar >> ~/.parallel/ignored_vars;
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
@ -336,6 +353,10 @@ par_zsh_underscore() {
. `which env_parallel.zsh`; . `which env_parallel.zsh`;
alias not_copied_alias="echo BAD"
not_copied_func() { echo BAD; };
not_copied_var=BAD
not_copied_array=(BAD BAD BAD);
env_parallel --record-env; env_parallel --record-env;
alias myecho="echo \$myvar aliases in"; alias myecho="echo \$myvar aliases in";
eval `cat <<"_EOS"; eval `cat <<"_EOS";
@ -349,6 +370,11 @@ par_zsh_underscore() {
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
env_parallel --env _ -S server not_copied_alias ::: error=OK;
env_parallel --env _ -S server not_copied_func ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_var ::: error=OK;
env_parallel --env _ -S server echo \$\{not_copied_array\[\@\]\} ::: error=OK;
echo myvar >> ~/.parallel/ignored_vars; echo myvar >> ~/.parallel/ignored_vars;
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
@ -377,6 +403,10 @@ par_ksh_underscore() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo "### Testing of --env _" echo "### Testing of --env _"
alias not_copied_alias="echo BAD"
not_copied_func() { echo BAD; };
not_copied_var=BAD
not_copied_array=(BAD BAD BAD);
. `which env_parallel.ksh`; . `which env_parallel.ksh`;
env_parallel --record-env; env_parallel --record-env;
alias myecho="echo \$myvar aliases in"; alias myecho="echo \$myvar aliases in";
@ -390,6 +420,11 @@ par_ksh_underscore() {
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
env_parallel --env _ -S server not_copied_alias ::: error=OK;
env_parallel --env _ -S server not_copied_func ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_var ::: error=OK;
env_parallel --env _ -S server echo \${not_copied_array[@]} ::: error=OK;
echo myvar >> ~/.parallel/ignored_vars; echo myvar >> ~/.parallel/ignored_vars;
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
@ -416,6 +451,10 @@ _disabled_pdksh_underscore() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo "### Testing of --env _" echo "### Testing of --env _"
alias not_copied_alias="echo BAD"
not_copied_func() { echo BAD; };
not_copied_var=BAD
not_copied_array=(BAD BAD BAD);
. `which env_parallel.pdksh`; . `which env_parallel.pdksh`;
env_parallel --record-env; env_parallel --record-env;
alias myecho="echo \$myvar aliases in"; alias myecho="echo \$myvar aliases in";
@ -429,6 +468,11 @@ _disabled_pdksh_underscore() {
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
env_parallel --env _ -S server not_copied_alias ::: error=OK;
env_parallel --env _ -S server not_copied_func ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_var ::: error=OK;
env_parallel --env _ -S server echo \${not_copied_array[@]} ::: error=OK;
echo myvar >> ~/.parallel/ignored_vars; echo myvar >> ~/.parallel/ignored_vars;
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
@ -526,6 +570,13 @@ par_fish_underscore() {
echo "### Testing of --env _" echo "### Testing of --env _"
# . `which env_parallel.fish`; # . `which env_parallel.fish`;
alias not_copied_alias="echo BAD"
function not_copied_func
echo BAD
end
set not_copied_var "BAD";
set not_copied_array BAD BAD BAD;
env_parallel --record-env; env_parallel --record-env;
alias myecho="echo \$myvar aliases"; alias myecho="echo \$myvar aliases";
function myfunc function myfunc
@ -540,6 +591,11 @@ par_fish_underscore() {
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;
env_parallel --env _ -S server not_copied_alias ::: error=OK;
env_parallel --env _ -S server not_copied_func ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_var ::: error=OK;
env_parallel --env _ -S server echo \$not_copied_array ::: error=OK;
echo myvar >> ~/.parallel/ignored_vars; echo myvar >> ~/.parallel/ignored_vars;
env_parallel --env _ myfunc ::: work; env_parallel --env _ myfunc ::: work;
env_parallel --env _ -S server myfunc ::: work; env_parallel --env _ -S server myfunc ::: work;

View file

@ -61,17 +61,21 @@ par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work
par_bash_underscore /bin/bash: line 57: not_copied_alias: command not found
par_bash_underscore /bin/bash: line 57: not_copied_func: command not found
par_bash_underscore error=OK
par_bash_underscore error=OK
par_bash_underscore aliases in and arrays in functions work par_bash_underscore aliases in and arrays in functions work
par_bash_underscore aliases in and arrays in functions work par_bash_underscore aliases in and arrays in functions work
par_bash_underscore aliases in functions work par_bash_underscore aliases in functions work
par_bash_underscore aliases in functions work par_bash_underscore aliases in functions work
par_bash_underscore /bin/bash: line 71: myecho: command not found par_bash_underscore /bin/bash: line 52: myecho: command not found
par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 71: myecho: command not found par_bash_underscore /bin/bash: line 52: myecho: command not found
par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 69: myfunc: command not found par_bash_underscore /bin/bash: line 50: myfunc: command not found
par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 69: myfunc: command not found par_bash_underscore /bin/bash: line 50: myfunc: command not found
par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_csh_funky 3 arg alias_works par_csh_funky 3 arg alias_works
par_csh_funky myvar works par_csh_funky myvar works
@ -237,6 +241,14 @@ par_fish_underscore variables in aliases and arrays in functions work
par_fish_underscore variables in aliases and arrays in functions work par_fish_underscore variables in aliases and arrays in functions work
par_fish_underscore variables in aliases and arrays in functions work par_fish_underscore variables in aliases and arrays in functions work
par_fish_underscore variables in aliases and arrays in functions work par_fish_underscore variables in aliases and arrays in functions work
par_fish_underscore fish: Unknown command 'not_copied_alias error=OK'
par_fish_underscore fish: not_copied_alias error\=OK
par_fish_underscore ^
par_fish_underscore fish: Unknown command 'not_copied_func error=OK'
par_fish_underscore fish: not_copied_func error\=OK
par_fish_underscore ^
par_fish_underscore error=OK
par_fish_underscore error=OK
par_fish_underscore aliases and arrays in functions work par_fish_underscore aliases and arrays in functions work
par_fish_underscore aliases and arrays in functions work par_fish_underscore aliases and arrays in functions work
par_fish_underscore aliases functions work par_fish_underscore aliases functions work
@ -319,17 +331,21 @@ par_ksh_underscore variables in aliases in and arrays in functions work
par_ksh_underscore variables in aliases in and arrays in functions work par_ksh_underscore variables in aliases in and arrays in functions work
par_ksh_underscore variables in aliases in and arrays in functions work par_ksh_underscore variables in aliases in and arrays in functions work
par_ksh_underscore variables in aliases in and arrays in functions work par_ksh_underscore variables in aliases in and arrays in functions work
par_ksh_underscore /usr/bin/ksh: line 8: not_copied_alias: not found
par_ksh_underscore /usr/bin/ksh: line 8: not_copied_func: not found
par_ksh_underscore error=OK
par_ksh_underscore error=OK
par_ksh_underscore aliases in and arrays in functions work par_ksh_underscore aliases in and arrays in functions work
par_ksh_underscore aliases in and arrays in functions work par_ksh_underscore aliases in and arrays in functions work
par_ksh_underscore aliases in functions work par_ksh_underscore aliases in functions work
par_ksh_underscore aliases in functions work par_ksh_underscore aliases in functions work
par_ksh_underscore /usr/bin/ksh[114]: myecho: not found [No such file or directory] par_ksh_underscore /usr/bin/ksh[4]: myecho: not found [No such file or directory]
par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^
par_ksh_underscore /usr/bin/ksh[114]: myecho: not found [No such file or directory] par_ksh_underscore /usr/bin/ksh[4]: myecho: not found [No such file or directory]
par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^
par_ksh_underscore /usr/bin/ksh: line 114: myfunc: not found par_ksh_underscore /usr/bin/ksh: line 4: myfunc: not found
par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^
par_ksh_underscore /usr/bin/ksh: line 114: myfunc: not found par_ksh_underscore /usr/bin/ksh: line 4: myfunc: not found
par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^
par_tcsh_funky par_tcsh_funky
par_tcsh_funky par_tcsh_funky
@ -484,6 +500,10 @@ par_zsh_underscore variables in aliases in and arrays in functions work
par_zsh_underscore variables in aliases in and arrays in functions work par_zsh_underscore variables in aliases in and arrays in functions work
par_zsh_underscore variables in aliases in and arrays in functions work par_zsh_underscore variables in aliases in and arrays in functions work
par_zsh_underscore variables in aliases in and arrays in functions work par_zsh_underscore variables in aliases in and arrays in functions work
par_zsh_underscore (eval):1: command not found: not_copied_alias
par_zsh_underscore (eval):1: command not found: not_copied_func
par_zsh_underscore BAD error=OK
par_zsh_underscore error=OK
par_zsh_underscore aliases in and arrays in functions work par_zsh_underscore aliases in and arrays in functions work
par_zsh_underscore aliases in and arrays in functions work par_zsh_underscore aliases in and arrays in functions work
par_zsh_underscore aliases in functions work par_zsh_underscore aliases in functions work