diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-07-24 17:08:04 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-07-24 17:10:18 +0200 |
| commit | 63c42afaa43d42def05dfbca1f4e10c7314b1f77 (patch) | |
| tree | b88436d25560b74b7f626739c4ab14c12aff219a /shell | |
| parent | 41ef41b3e0a16c9f8524870a2dc4f768c237939e (diff) | |
| download | busybox-w32-63c42afaa43d42def05dfbca1f4e10c7314b1f77.tar.gz busybox-w32-63c42afaa43d42def05dfbca1f4e10c7314b1f77.tar.bz2 busybox-w32-63c42afaa43d42def05dfbca1f4e10c7314b1f77.zip | |
hush: add "heredoc.tests" from ash, tweak ash "is a function" message
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/ash.c | 3 | ||||
| -rw-r--r-- | shell/ash_test/ash-heredoc/heredoc.right | 2 | ||||
| -rw-r--r-- | shell/hush_test/hush-heredoc/heredoc.right | 20 | ||||
| -rwxr-xr-x | shell/hush_test/hush-heredoc/heredoc.tests | 97 |
4 files changed, 120 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c index 051cc671f..03fbbee53 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -8512,7 +8512,8 @@ describe_command(char *command, const char *path, int describe_command_verbose) | |||
| 8512 | 8512 | ||
| 8513 | case CMDFUNCTION: | 8513 | case CMDFUNCTION: |
| 8514 | if (describe_command_verbose) { | 8514 | if (describe_command_verbose) { |
| 8515 | out1str(" is a shell function"); | 8515 | /*out1str(" is a shell function");*/ |
| 8516 | out1str(" is a function"); /* bash says this */ | ||
| 8516 | } else { | 8517 | } else { |
| 8517 | out1str(command); | 8518 | out1str(command); |
| 8518 | } | 8519 | } |
diff --git a/shell/ash_test/ash-heredoc/heredoc.right b/shell/ash_test/ash-heredoc/heredoc.right index baf115166..85d36dae9 100644 --- a/shell/ash_test/ash-heredoc/heredoc.right +++ b/shell/ash_test/ash-heredoc/heredoc.right | |||
| @@ -16,6 +16,6 @@ tab 3 | |||
| 16 | abc | 16 | abc |
| 17 | def ghi | 17 | def ghi |
| 18 | jkl mno | 18 | jkl mno |
| 19 | fff is a shell function | 19 | fff is a function |
| 20 | hi | 20 | hi |
| 21 | there | 21 | there |
diff --git a/shell/hush_test/hush-heredoc/heredoc.right b/shell/hush_test/hush-heredoc/heredoc.right new file mode 100644 index 000000000..9b9e2aae9 --- /dev/null +++ b/shell/hush_test/hush-heredoc/heredoc.right | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | there | ||
| 2 | one - alpha | ||
| 3 | two - beta | ||
| 4 | three - gamma | ||
| 5 | hi\ | ||
| 6 | there$a | ||
| 7 | stuff | ||
| 8 | hi\ | ||
| 9 | there | ||
| 10 | EO\ | ||
| 11 | F | ||
| 12 | hi | ||
| 13 | hi | ||
| 14 | tab 1 | ||
| 15 | tab 2 | ||
| 16 | tab 3 | ||
| 17 | abc | ||
| 18 | def ghi | ||
| 19 | jkl mno | ||
| 20 | fff is a function | ||
diff --git a/shell/hush_test/hush-heredoc/heredoc.tests b/shell/hush_test/hush-heredoc/heredoc.tests new file mode 100755 index 000000000..39345c51b --- /dev/null +++ b/shell/hush_test/hush-heredoc/heredoc.tests | |||
| @@ -0,0 +1,97 @@ | |||
| 1 | # check order and content of multiple here docs | ||
| 2 | |||
| 3 | cat << EOF1 << EOF2 | ||
| 4 | hi | ||
| 5 | EOF1 | ||
| 6 | there | ||
| 7 | EOF2 | ||
| 8 | |||
| 9 | while read line1; do | ||
| 10 | read line2 <&3 | ||
| 11 | echo $line1 - $line2 | ||
| 12 | done <<EOF1 3<<EOF2 | ||
| 13 | one | ||
| 14 | two | ||
| 15 | three | ||
| 16 | EOF1 | ||
| 17 | alpha | ||
| 18 | beta | ||
| 19 | gamma | ||
| 20 | EOF2 | ||
| 21 | |||
| 22 | |||
| 23 | # check quoted here-doc is protected | ||
| 24 | |||
| 25 | a=foo | ||
| 26 | cat << 'EOF' | ||
| 27 | hi\ | ||
| 28 | there$a | ||
| 29 | stuff | ||
| 30 | EOF | ||
| 31 | |||
| 32 | # check that quoted here-documents don't have \newline processing done | ||
| 33 | |||
| 34 | cat << 'EOF' | ||
| 35 | hi\ | ||
| 36 | there | ||
| 37 | EO\ | ||
| 38 | F | ||
| 39 | EOF | ||
| 40 | true | ||
| 41 | |||
| 42 | # check that \newline is removed at start of here-doc | ||
| 43 | cat << EO\ | ||
| 44 | F | ||
| 45 | hi | ||
| 46 | EOF | ||
| 47 | |||
| 48 | # check that \newline removal works for here-doc delimiter | ||
| 49 | cat << EOF | ||
| 50 | hi | ||
| 51 | EO\ | ||
| 52 | F | ||
| 53 | |||
| 54 | # check operation of tab removal in here documents | ||
| 55 | cat <<- EOF | ||
| 56 | tab 1 | ||
| 57 | tab 2 | ||
| 58 | tab 3 | ||
| 59 | EOF | ||
| 60 | |||
| 61 | # check appending of text to file from here document | ||
| 62 | rm -f /tmp/bash-zzz | ||
| 63 | cat > /tmp/bash-zzz << EOF | ||
| 64 | abc | ||
| 65 | EOF | ||
| 66 | cat >> /tmp/bash-zzz << EOF | ||
| 67 | def ghi | ||
| 68 | jkl mno | ||
| 69 | EOF | ||
| 70 | cat /tmp/bash-zzz | ||
| 71 | rm -f /tmp/bash-zzz | ||
| 72 | |||
| 73 | # make sure command printing puts the here-document as the last redirection | ||
| 74 | # on the line, and the function export code preserves syntactic correctness | ||
| 75 | fff() | ||
| 76 | { | ||
| 77 | ed /tmp/foo <<ENDOFINPUT >/dev/null | ||
| 78 | /^name/d | ||
| 79 | w | ||
| 80 | q | ||
| 81 | ENDOFINPUT | ||
| 82 | aa=1 | ||
| 83 | } | ||
| 84 | |||
| 85 | type fff | ||
| 86 | #ash# export -f fff | ||
| 87 | #ash# ${THIS_SH} -c 'type fff' | ||
| 88 | |||
| 89 | #hush# bash warns: "here-document at line N delimited by end-of-file", | ||
| 90 | #hush# ash allows it, | ||
| 91 | #hush# hush errors out for now: | ||
| 92 | #hush# # check that end of file delimits a here-document | ||
| 93 | #hush# # THIS MUST BE LAST! | ||
| 94 | #hush# | ||
| 95 | #hush# cat << EOF | ||
| 96 | #hush# hi | ||
| 97 | #hush# there | ||
