aboutsummaryrefslogtreecommitdiff
path: root/shell/ash_test (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ash_test: ignore generated filesMike Frysinger2016-03-221-0/+7
| | | | Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* ash_test: printenv: fix missing includesMike Frysinger2016-03-221-0/+1
| | | | Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* ash: fix corruption of ${#var} if $var contains UTF-8 charactersRon Yorston2016-03-222-0/+3
| | | | | | | | | | | | | | | | | | | | | | As reported in bug 8506: $ X=abcdÉfghÍjklmnÓpqrstÚvwcyz $ echo ${#X} abcd26 The result should be 26. This regression was introduced by: <d68d1fb> 2015-05-18 [Ron Yorston] ash: code shrink around varvalue The length in characters was being used to discard the contents of the variable instead of the length in bytes. URL: https://bugs.busybox.net/8506 Reported-by: Martijn Dekker <martijn@inlv.org> Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* ash: add support for bash 'function' keywordRon Yorston2015-11-042-0/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Where the POSIX shell allows functions to be defined as: name () compound-command [ redirections ] bash adds the alternative syntax: function name [()] compound-command [ redirections ] Implement this in ash's bash compatibility mode. Most compound commands work (for/while/until/if/case/[[]]/{}); one exception is: function f (echo "no way!") The other two variants work: f() (echo "ok") function f() (echo "also ok") function old new delta parse_command 1555 1744 +189 tokname_array 232 240 +8 .rodata 155612 155566 -46 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 197/-46) Total: 151 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* hush-misc/func_args1.tests: remove "UNFIXED BUG", it does not failDenys Vlasenko2015-11-041-1/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: copy function tests from hush testsuiteRon Yorston2015-11-0416-0/+119
| | | | | Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: add tests for failures of the exec and command builtinsRon Yorston2015-10-304-0/+13
| | | | | | | | | | | | The exec builtin should return an exit status of 127 if the command can't be found. It doesn't: it returns 2. If the command builtin is used to source a script that runs a second script that doesn't exist ash should issue an error. Instead it seg faults. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix error during recursive processing of here documentRon Yorston2015-10-292-0/+10
| | | | | | | | | | | | | | | | Save the value of the checkkwd flag to prevent it being clobbered during recursion. Based on commit ec2c84d from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu. function old new delta readtoken 190 203 +13 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 13/0) Total: 13 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash tests: make test print test name before it is runDenys Vlasenko2015-10-291-2/+4
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: only allow local variables in functionsRon Yorston2015-10-292-0/+2
| | | | | Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: respect -p flag when command builtin is run with -v/-VRon Yorston2015-10-292-0/+2
| | | | | | | | | | | | | | | | | | The command builtin should only check the default path, not $PATH, when the -p flag is used along with -v/-V. Based on commits 65ae84b (by Harald van Dijk) and 29ee27d (by Herbert Xu) from git://git.kernel.org/pub/scm/utils/dash/dash.git). function old new delta commandcmd 72 87 +15 describe_command 437 450 +13 typecmd 84 86 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 30/0) Total: 30 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: allow newline after variable name in for loopRon Yorston2015-10-292-0/+6
| | | | | | | | | | | | | | | | Newline is a valid delimiter between the variable name and `in` keyword in for loops. Based on commit 22e8fb4 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu. function old new delta parse_command 1568 1563 -5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-5) Total: -5 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: add test for issue with here documentRon Yorston2015-10-292-0/+9
| | | | | | | | | | | | | | | | This used to work but doesn't now: foo () { cat <<EOF && { echo "$1" ; } $1 EOF } foo "bar" Reported-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash,hush: add a test which fails for ash since commit 549deabDenys Vlasenko2015-09-042-0/+4
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: add tests adapted from hush glob tests. glob2.tests currently failsDenys Vlasenko2015-09-048-0/+76
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix file modeDenys Vlasenko2015-07-131-0/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: remove parsebackquote flagRon Yorston2015-07-132-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 503a0b8 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu says: >The parsebackquote flag is only used in a test where it always has the >value zero. So we can remove it altogether. The first statement is incorrect: parsebackquote is non-zero when backquotes (as opposed to $(...)) are used for command substitution. It is possible for the test to be executed with parsebackquote != 0 in that case. The test is question checks whether quotes have been closed, raising the error "unterminated quoted string" if they haven't. There seems to be no good reason to allow unclosed quotes within backquotes. Bash, hush and dash (after commit 503a0b8) all treat the following as an error: XX=`"pwd` whereas BusyBox ash doesn't. It just ignores the unclosed quote and executes pwd. So, parsebackquote should be removed but not for the reason stated. function old new delta parsebackquote 1 - -1 readtoken1 3222 3182 -40 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-41) Total: -41 bytes Signed-off-by: Ron Yorston <rmy@frippery.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* testsuite: add some tests for ashRon Yorston2015-05-1810-0/+15
| | | | | Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: move parse-time quote flag detection to run-timeRon Yorston2015-05-184-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because the parser does not recursively parse parameter expansion with respect to quotes, we can't accurately determine quote status at parse time. This patch works around this by moving the quote detection to run-time where we do interpret it recursively. Test case: foo=\\ echo "<${foo#[\\]}>" Old result: <\> New result: <> Do not quote back slashes in parameter expansions outside quotes. Test case: a=/b/c/* b=\\ echo ${a%$b*} Old result: /b/c/* New result: /b/c/ Based on commits 880d952, 7cfd8be, 0d7d660 and a7c21a6 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu function old new delta argstr 1164 1193 +29 memtodest 147 174 +27 subevalvar 1153 1177 +24 redirect 1279 1282 +3 dolatstr 5 7 +2 static.spclchars 10 9 -1 expandarg 962 960 -2 evalcase 273 271 -2 evalcommand 1204 1197 -7 rmescapes 236 227 -9 preglob 27 8 -19 evalvar 604 582 -22 cmdputs 389 334 -55 readtoken1 3163 3061 -102 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/9 up/down: 85/-219) Total: -134 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: remove arithmetic expansion collapsing at parse timeRon Yorston2015-05-182-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Collapsing arithmetic expansion is incorrect when the inner arithmetic expansion is a part of a parameter expansion. Test case: unset a echo $((3 + ${a:=$((4 + 5))})) echo $a Old result: 12 (4 + 5) New result: 12 9 Based on commit bb777a6 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu function old new delta readtoken1 3180 3163 -17 Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: do not expand tilde in parameter expansion within quotesRon Yorston2015-05-182-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Test case: unset a echo "${a:-~root}" Old result: /root New result: ~root Based on commit 170f44d from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu function old new delta evalvar 598 604 +6 parse_command 1440 1443 +3 localcmd 325 327 +2 readtoken1 3199 3200 +1 argstr 1180 1164 -16 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/1 up/down: 12/-16) Total: -4 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: perform tilde expansion in all parameter expansion wordsRon Yorston2015-05-182-0/+3
| | | | | | | | | | | | | | | | | | | | | Previously tilde expansion was not carried out for =?#% expansion words. Test case: a=~root:~root echo ${a#~root} Old result: /root:/root New result: :/root Based on commit dd721f71 from git://git.kernel.org/pub/scm/utils/dash/dash.git by Herbert Xu function old new delta subevalvar 1152 1153 +1 Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix handling of duplicate "local"Denys Vlasenko2015-04-183-1/+7
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix a SEGV case in an invalid heredocDenys Vlasenko2015-02-052-0/+4
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: make "locak VAR" unset VAR (bash does that)Denys Vlasenko2014-03-162-0/+15
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix a bug in >${varexp} handling. Closes 5282Denys Vlasenko2012-06-092-0/+13
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* slightly better wording in commentsDenys Vlasenko2011-02-211-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix ash-signals/signal8 testcase failureDenys Vlasenko2011-02-212-0/+42
| | | | | | | | | | | function old new delta killcmd 109 224 +115 kill_main 882 910 +28 changepath 194 195 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 144/0) Total: 144 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* echo: do not retry on write errorsDenys Vlasenko2011-02-073-0/+10
| | | | | | | | | | | | | function old new delta echo_main 297 336 +39 stpcpy - 22 +22 run_pipe 1561 1566 +5 pseudo_exec_argv 187 192 +5 hush_exit 75 80 +5 ------------------------------------------------------------------------------ (add/remove: 3/0 grow/shrink: 4/0 up/down: 98/0) Total: 76 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* whitespace cleanupDenys Vlasenko2010-10-292-13/+5
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* ash: fix signal and "set -e" interactionDenys Vlasenko2010-09-254-0/+45
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* shell/math: deconvolute and explain ?: handling. Give better error messageDenys Vlasenko2010-09-161-1/+1
| | | | | | | function old new delta arith_apply 1271 1283 +12 Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* shell/math: return string error indicator, not integerDenys Vlasenko2010-09-151-28/+28
| | | | | | | | | | | | | | | | function old new delta expand_and_evaluate_arith 87 106 +19 expand_one_var 1563 1570 +7 arith 12 18 +6 evaluate_string 678 680 +2 arith_apply 1269 1271 +2 builtin_umask 133 132 -1 ash_arith 118 75 -43 expand_vars_to_list 1094 1038 -56 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/3 up/down: 36/-100) Total: -64 bytes Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* hush: add support for ${var/pattern/repl}, conditional on bash compatDenys Vlasenko2010-09-051-7/+0
| | | | | | | | | | | | function old new delta expand_vars_to_list 2386 2833 +447 expand_string_to_string 69 110 +41 parse_dollar 681 721 +40 hush_main 963 945 -18 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/1 up/down: 528/-18) Total: 510 bytes Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* hush: fix handling of backslashes in variable assignmentDenys Vlasenko2010-09-041-2/+2
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* ash: add another ${v/a/b} test we currently failDenys Vlasenko2010-08-302-0/+15
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* ash: fix another bit of var_bash4 bugDenys Vlasenko2010-08-072-2/+2
| | | | | | | | | | But it _still_ doesn't pass! quoted case is a tough nut to crack function old new delta redirect 1281 1286 +5 subevalvar 1141 1142 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* var_bash4.tests: better wording in commentDenys Vlasenko2010-08-061-4/+4
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* update var_bash4 test. one more bug revealed by it now...Denys Vlasenko2010-08-062-8/+68
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: extend var_bash4.tests; nocode changesDenys Vlasenko2010-08-052-2/+7
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: add a testcase for bug 2281 (currently fails). Small code cleanups.Denys Vlasenko2010-08-055-40/+52
| | | | | | | | | | | function old new delta changepath 195 192 -3 subevalvar 1204 1200 -4 readtoken1 3247 3240 -7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-14) Total: -14 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix $! value when traps are setAlexander Shishkin2010-07-252-0/+19
| | | | | Signed-off-by: Alexander Shishkin <virtuoso@slind.org> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix obscure case of replacing + globbing + backslashesDenys Vlasenko2010-06-262-0/+31
| | | | | | | | | | | | | | | function old new delta subevalvar 1152 1178 +26 readtoken1 3267 3275 +8 redirect 1284 1286 +2 expandarg 957 958 +1 expdir 4 - -4 evalcommand 1219 1209 -10 expmeta 481 469 -12 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 4/2 up/down: 37/-26) Total: 11 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: <> redir should not truncateAndreas Bühmann2010-06-242-0/+6
| | | | | Signed-off-by: Andreas Bühmann <buehmann@users.berlios.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix unset in standalone modeDenys Vlasenko2010-06-182-0/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix redirection of fd 0 in scripts are sourced from interactive ashDenys Vlasenko2010-06-032-3/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix var_leak.tests so that it actually catches the NOFORK bugDenys Vlasenko2010-05-182-1/+7
| | | | | | + document the bug better Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix bug which causes signal6.tests to failDenys Vlasenko2010-05-181-1/+0
| | | | | | | | function old new delta trapcmd 271 277 +6 localcmd 277 275 -2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix var_leak testcaseDenys Vlasenko2010-05-182-6/+16
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash: fix testsuite false positivesDenys Vlasenko2010-05-183-3/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>