From 7503583bb2329b7c1d85beee8085d295f2314789 Mon Sep 17 00:00:00 2001 From: jmmv Date: Sun, 9 Mar 2014 17:04:31 +0000 Subject: [PATCH] Sync sh(1) in stable/10 to head. This is a MFC of all the commits listed below. My original goal of this change was to only merge the move of the tests from tools/regression/bin/ into the new layout (which include tests for sh(1) and other tools as well). However, doing so is tricky due to the ongoing work in sh(1) and, especially, the many changes to its tests since stable/10 was first branched. Merging everything is the simplest way to achieve this goal and, as a bonus point, we get various fixes and miscellaneous improvements into the branch. Per jilles' suggestion, I'm avoiding the merge of a couple of changes (r256850 and r257506) that required depending kernel changes. I'm also avoiding very recent changes that have not had a long enough time to be validated in current. This is "make tinderbox" clean. r256735 sh: Remove one syscall when waiting for a foreground job. r257399 sh: Allow trapping SIGINT/SIGQUIT after ignore because of '&'. r257504 sh: Reorder union node to reduce its size on 64-bit platforms. r257920 sh: Add a test case for would-be assignments that are not due to quoting. r257929 sh: Properly quote alias output from command -v. r258489 sh: Add tests for the bin/mv/tests/legacy_test.sh | 0 bin/pax/Makefile | 6 + bin/pax/tests/Makefile | 9 ++ .../regress.t => bin/pax/tests/legacy_test.pl | 2 - bin/sh/Makefile | 7 +- bin/sh/alias.c | 44 ------ bin/sh/cd.c | 12 +- bin/sh/eval.c | 75 +++++---- bin/sh/exec.c | 22 +-- bin/sh/expand.c | 111 ++++++------- bin/sh/expand.h | 1 - bin/sh/input.c | 37 ++--- bin/sh/jobs.c | 3 +- bin/sh/memalloc.c | 6 +- bin/sh/mystring.c | 5 - bin/sh/mystring.h | 1 - bin/sh/nodetypes | 6 +- bin/sh/parser.c | 6 + bin/sh/parser.h | 1 + bin/sh/redir.c | 9 +- bin/sh/sh.1 | 24 ++- bin/sh/show.c | 4 +- bin/sh/tests/Makefile | 18 +++ bin/sh/tests/builtins/Makefile | 148 ++++++++++++++++++ .../bin/sh => bin/sh/tests}/builtins/alias.0 | 0 .../sh/tests}/builtins/alias.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/alias.1 | 0 .../sh/tests}/builtins/alias.1.stderr | 0 .../bin/sh => bin/sh/tests}/builtins/alias3.0 | 0 .../sh/tests}/builtins/alias3.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/alias4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/break1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/break2.0 | 0 .../sh/tests}/builtins/break2.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/break3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/break4.4 | 0 .../bin/sh => bin/sh/tests}/builtins/break5.4 | 0 .../sh => bin/sh/tests}/builtins/builtin1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case10.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case11.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case12.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case13.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case14.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case15.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case16.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case17.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case18.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case19.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case5.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case6.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case7.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case8.0 | 0 .../bin/sh => bin/sh/tests}/builtins/case9.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd5.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd6.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd7.0 | 0 .../bin/sh => bin/sh/tests}/builtins/cd8.0 | 0 .../sh => bin/sh/tests}/builtins/command1.0 | 0 .../sh => bin/sh/tests}/builtins/command10.0 | 0 .../sh => bin/sh/tests}/builtins/command11.0 | 0 bin/sh/tests/builtins/command12.0 | 7 + .../sh => bin/sh/tests}/builtins/command2.0 | 0 .../sh => bin/sh/tests}/builtins/command3.0 | 0 .../sh/tests}/builtins/command3.0.stdout | 2 +- .../sh => bin/sh/tests}/builtins/command4.0 | 0 .../sh => bin/sh/tests}/builtins/command5.0 | 0 .../sh/tests}/builtins/command5.0.stdout | 2 +- .../sh => bin/sh/tests}/builtins/command6.0 | 0 .../sh/tests}/builtins/command6.0.stdout | 2 +- .../sh => bin/sh/tests}/builtins/command7.0 | 0 .../sh => bin/sh/tests}/builtins/command8.0 | 0 .../sh => bin/sh/tests}/builtins/command9.0 | 0 .../bin/sh => bin/sh/tests}/builtins/dot1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/dot2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/dot3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/dot4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/eval1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/eval2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/eval3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/eval4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/eval5.0 | 0 .../bin/sh => bin/sh/tests}/builtins/eval6.0 | 0 .../bin/sh => bin/sh/tests}/builtins/exec1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/exec2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/exit1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/exit2.8 | 0 .../bin/sh => bin/sh/tests}/builtins/exit3.0 | 0 .../sh => bin/sh/tests}/builtins/export1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/fc1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/fc2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/for1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/for2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/for3.0 | 0 .../sh => bin/sh/tests}/builtins/getopts1.0 | 0 .../sh/tests}/builtins/getopts1.0.stdout | 0 .../sh => bin/sh/tests}/builtins/getopts2.0 | 0 .../sh/tests}/builtins/getopts2.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/hash1.0 | 0 .../sh/tests}/builtins/hash1.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/hash2.0 | 0 .../sh/tests}/builtins/hash2.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/hash3.0 | 0 .../sh/tests}/builtins/hash3.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/hash4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/jobid1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/jobid2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/lineno.0 | 0 .../sh/tests}/builtins/lineno.0.stdout | 0 bin/sh/tests/builtins/lineno2.0 | 10 ++ .../bin/sh => bin/sh/tests}/builtins/local1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/local2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/local3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/local4.0 | 0 .../sh => bin/sh/tests}/builtins/locale1.0 | 0 .../sh => bin/sh/tests}/builtins/printf1.0 | 0 .../sh => bin/sh/tests}/builtins/printf2.0 | 0 .../sh => bin/sh/tests}/builtins/printf3.0 | 0 .../sh => bin/sh/tests}/builtins/printf4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/read1.0 | 0 .../sh/tests}/builtins/read1.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/read2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/read3.0 | 0 .../sh/tests}/builtins/read3.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/read4.0 | 0 .../sh/tests}/builtins/read4.0.stdout | 0 .../bin/sh => bin/sh/tests}/builtins/read5.0 | 0 .../bin/sh => bin/sh/tests}/builtins/read6.0 | 0 .../bin/sh => bin/sh/tests}/builtins/read7.0 | 0 .../sh => bin/sh/tests}/builtins/return1.0 | 0 .../sh => bin/sh/tests}/builtins/return2.1 | 0 .../sh => bin/sh/tests}/builtins/return3.1 | 0 .../sh => bin/sh/tests}/builtins/return4.0 | 0 .../sh => bin/sh/tests}/builtins/return5.0 | 0 .../sh => bin/sh/tests}/builtins/return6.4 | 0 .../sh => bin/sh/tests}/builtins/return7.4 | 0 .../sh => bin/sh/tests}/builtins/return8.0 | 0 .../bin/sh => bin/sh/tests}/builtins/set1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/set2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap10.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap11.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap12.0 | 0 bin/sh/tests/builtins/trap13.0 | 8 + bin/sh/tests/builtins/trap14.0 | 10 ++ .../bin/sh => bin/sh/tests}/builtins/trap2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap5.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap6.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap7.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap8.0 | 0 .../bin/sh => bin/sh/tests}/builtins/trap9.0 | 0 .../bin/sh => bin/sh/tests}/builtins/type1.0 | 0 .../sh/tests}/builtins/type1.0.stderr | 0 .../bin/sh => bin/sh/tests}/builtins/type2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/type3.0 | 0 .../sh => bin/sh/tests}/builtins/unalias.0 | 0 .../sh => bin/sh/tests}/builtins/var-assign.0 | 0 .../sh/tests}/builtins/var-assign2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait1.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait10.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait2.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait3.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait4.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait5.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait6.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait7.0 | 0 .../bin/sh => bin/sh/tests}/builtins/wait8.0 | 0 .../sh => bin/sh/tests}/builtins/wait9.127 | 0 bin/sh/tests/errors/Makefile | 30 ++++ .../sh/tests}/errors/assignment-error1.0 | 0 .../sh/tests}/errors/assignment-error2.0 | 0 .../sh/tests}/errors/backquote-error1.0 | 0 .../sh/tests}/errors/backquote-error2.0 | 0 .../sh/tests}/errors/bad-binary1.126 | 0 .../sh => bin/sh/tests}/errors/bad-keyword1.0 | 0 .../sh/tests}/errors/bad-parm-exp1.0 | 0 .../sh/tests}/errors/bad-parm-exp2.2 | 0 .../sh/tests}/errors/bad-parm-exp2.2.stderr | 0 .../sh/tests}/errors/bad-parm-exp3.2 | 0 .../sh/tests}/errors/bad-parm-exp3.2.stderr | 0 .../sh/tests}/errors/bad-parm-exp4.2 | 0 .../sh/tests}/errors/bad-parm-exp4.2.stderr | 0 .../sh/tests}/errors/bad-parm-exp5.2 | 0 .../sh/tests}/errors/bad-parm-exp5.2.stderr | 0 .../sh/tests}/errors/bad-parm-exp6.2 | 0 .../sh/tests}/errors/bad-parm-exp6.2.stderr | 0 .../sh => bin/sh/tests}/errors/option-error.0 | 0 .../sh/tests}/errors/redirection-error.0 | 0 .../sh/tests}/errors/redirection-error2.2 | 0 .../sh/tests}/errors/redirection-error3.0 | 0 .../sh/tests}/errors/redirection-error4.0 | 0 .../sh/tests}/errors/redirection-error5.0 | 0 .../sh/tests}/errors/redirection-error6.0 | 0 .../sh/tests}/errors/redirection-error7.0 | 0 .../sh => bin/sh/tests}/errors/write-error1.0 | 0 bin/sh/tests/execution/Makefile | 53 +++++++ .../bin/sh => bin/sh/tests}/execution/bg1.0 | 0 bin/sh/tests/execution/bg10.0 | 4 + bin/sh/tests/execution/bg10.0.stdout | 1 + .../bin/sh => bin/sh/tests}/execution/bg2.0 | 0 .../bin/sh => bin/sh/tests}/execution/bg3.0 | 0 .../bin/sh => bin/sh/tests}/execution/bg4.0 | 0 bin/sh/tests/execution/bg5.0 | 4 + bin/sh/tests/execution/bg6.0 | 4 + bin/sh/tests/execution/bg6.0.stdout | 1 + bin/sh/tests/execution/bg7.0 | 5 + bin/sh/tests/execution/bg8.0 | 5 + bin/sh/tests/execution/bg9.0 | 5 + .../bin/sh => bin/sh/tests}/execution/fork1.0 | 0 .../bin/sh => bin/sh/tests}/execution/fork2.0 | 0 .../bin/sh => bin/sh/tests}/execution/fork3.0 | 0 .../bin/sh => bin/sh/tests}/execution/func1.0 | 0 .../bin/sh => bin/sh/tests}/execution/func2.0 | 0 .../bin/sh => bin/sh/tests}/execution/func3.0 | 0 .../bin/sh => bin/sh/tests}/execution/hash1.0 | 0 .../sh => bin/sh/tests}/execution/int-cmd1.0 | 0 .../sh => bin/sh/tests}/execution/killed1.0 | 0 .../sh => bin/sh/tests}/execution/killed2.0 | 0 .../bin/sh => bin/sh/tests}/execution/not1.0 | 0 .../bin/sh => bin/sh/tests}/execution/not2.0 | 0 .../bin/sh => bin/sh/tests}/execution/path1.0 | 0 .../sh => bin/sh/tests}/execution/redir1.0 | 0 .../sh => bin/sh/tests}/execution/redir2.0 | 0 .../sh => bin/sh/tests}/execution/redir3.0 | 0 .../sh => bin/sh/tests}/execution/redir4.0 | 0 .../sh => bin/sh/tests}/execution/redir5.0 | 0 .../sh => bin/sh/tests}/execution/redir6.0 | 0 .../sh => bin/sh/tests}/execution/redir7.0 | 0 .../sh => bin/sh/tests}/execution/set-n1.0 | 0 .../sh => bin/sh/tests}/execution/set-n2.0 | 0 .../sh => bin/sh/tests}/execution/set-n3.0 | 0 .../sh => bin/sh/tests}/execution/set-n4.0 | 0 .../sh => bin/sh/tests}/execution/set-x1.0 | 0 .../sh => bin/sh/tests}/execution/set-x2.0 | 0 .../sh => bin/sh/tests}/execution/set-x3.0 | 0 .../sh/tests}/execution/shellproc1.0 | 0 .../sh => bin/sh/tests}/execution/subshell1.0 | 0 .../sh/tests}/execution/subshell1.0.stdout | 0 .../sh => bin/sh/tests}/execution/subshell2.0 | 0 .../sh => bin/sh/tests}/execution/subshell3.0 | 0 .../sh => bin/sh/tests}/execution/subshell4.0 | 0 .../sh => bin/sh/tests}/execution/unknown1.0 | 0 .../sh/tests}/execution/var-assign1.0 | 0 bin/sh/tests/expansion/Makefile | 86 ++++++++++ .../sh => bin/sh/tests}/expansion/arith1.0 | 0 .../sh => bin/sh/tests}/expansion/arith10.0 | 0 .../sh => bin/sh/tests}/expansion/arith11.0 | 0 .../sh => bin/sh/tests}/expansion/arith12.0 | 0 .../sh => bin/sh/tests}/expansion/arith13.0 | 0 .../sh => bin/sh/tests}/expansion/arith2.0 | 0 .../sh => bin/sh/tests}/expansion/arith3.0 | 0 .../sh => bin/sh/tests}/expansion/arith4.0 | 0 .../sh => bin/sh/tests}/expansion/arith5.0 | 0 .../sh => bin/sh/tests}/expansion/arith6.0 | 0 .../sh => bin/sh/tests}/expansion/arith7.0 | 0 .../sh => bin/sh/tests}/expansion/arith8.0 | 0 .../sh => bin/sh/tests}/expansion/arith9.0 | 0 .../sh => bin/sh/tests}/expansion/assign1.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst1.0 | 0 .../sh/tests}/expansion/cmdsubst10.0 | 0 .../sh/tests}/expansion/cmdsubst11.0 | 0 .../sh/tests}/expansion/cmdsubst12.0 | 0 .../sh/tests}/expansion/cmdsubst13.0 | 0 .../sh/tests}/expansion/cmdsubst14.0 | 0 .../sh/tests}/expansion/cmdsubst15.0 | 0 .../sh/tests}/expansion/cmdsubst16.0 | 0 .../sh/tests}/expansion/cmdsubst17.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst2.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst3.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst4.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst5.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst6.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst7.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst8.0 | 0 .../sh => bin/sh/tests}/expansion/cmdsubst9.0 | 0 .../sh => bin/sh/tests}/expansion/export1.0 | 0 .../sh => bin/sh/tests}/expansion/export2.0 | 0 .../sh => bin/sh/tests}/expansion/export3.0 | 0 .../sh => bin/sh/tests}/expansion/heredoc1.0 | 0 .../sh => bin/sh/tests}/expansion/heredoc2.0 | 0 .../bin/sh => bin/sh/tests}/expansion/ifs1.0 | 0 .../bin/sh => bin/sh/tests}/expansion/ifs2.0 | 0 .../bin/sh => bin/sh/tests}/expansion/ifs3.0 | 0 .../bin/sh => bin/sh/tests}/expansion/ifs4.0 | 0 .../sh => bin/sh/tests}/expansion/length1.0 | 0 .../sh => bin/sh/tests}/expansion/length2.0 | 0 .../sh => bin/sh/tests}/expansion/length3.0 | 0 .../sh => bin/sh/tests}/expansion/length4.0 | 0 .../sh => bin/sh/tests}/expansion/length5.0 | 0 .../sh => bin/sh/tests}/expansion/length6.0 | 0 .../sh => bin/sh/tests}/expansion/length7.0 | 0 .../sh => bin/sh/tests}/expansion/length8.0 | 0 .../sh => bin/sh/tests}/expansion/local1.0 | 0 .../sh => bin/sh/tests}/expansion/local2.0 | 0 .../sh => bin/sh/tests}/expansion/pathname1.0 | 0 .../sh => bin/sh/tests}/expansion/pathname2.0 | 0 .../sh => bin/sh/tests}/expansion/pathname3.0 | 0 .../sh => bin/sh/tests}/expansion/pathname4.0 | 0 .../sh/tests}/expansion/plus-minus1.0 | 0 .../sh/tests}/expansion/plus-minus2.0 | 0 .../sh/tests}/expansion/plus-minus3.0 | 0 .../sh/tests}/expansion/plus-minus4.0 | 0 .../sh/tests}/expansion/plus-minus5.0 | 0 .../sh/tests}/expansion/plus-minus6.0 | 0 .../sh/tests}/expansion/plus-minus7.0 | 0 .../sh/tests}/expansion/plus-minus8.0 | 0 .../sh => bin/sh/tests}/expansion/question1.0 | 0 .../sh => bin/sh/tests}/expansion/readonly1.0 | 0 .../sh => bin/sh/tests}/expansion/set-u1.0 | 0 .../sh => bin/sh/tests}/expansion/set-u2.0 | 0 .../sh => bin/sh/tests}/expansion/set-u3.0 | 0 .../sh => bin/sh/tests}/expansion/tilde1.0 | 0 .../sh => bin/sh/tests}/expansion/tilde2.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim1.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim2.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim3.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim4.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim5.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim6.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim7.0 | 0 .../bin/sh => bin/sh/tests}/expansion/trim8.0 | 0 .../regress.sh => bin/sh/tests/legacy_test.sh | 16 +- bin/sh/tests/parameters/Makefile | 19 +++ .../bin/sh => bin/sh/tests}/parameters/env1.0 | 0 .../sh/tests}/parameters/exitstatus1.0 | 0 .../sh => bin/sh/tests}/parameters/mail1.0 | 0 .../sh => bin/sh/tests}/parameters/mail2.0 | 0 .../sh => bin/sh/tests}/parameters/optind1.0 | 0 bin/sh/tests/parameters/optind2.0 | 3 + .../sh/tests}/parameters/positional1.0 | 0 .../sh/tests}/parameters/positional2.0 | 0 .../bin/sh => bin/sh/tests}/parameters/pwd1.0 | 0 .../bin/sh => bin/sh/tests}/parameters/pwd2.0 | 0 bin/sh/tests/parser/Makefile | 64 ++++++++ .../bin/sh => bin/sh/tests}/parser/alias1.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias10.0 | 0 bin/sh/tests/parser/alias11.0 | 6 + bin/sh/tests/parser/alias12.0 | 6 + bin/sh/tests/parser/alias13.0 | 6 + bin/sh/tests/parser/alias14.0 | 6 + bin/sh/tests/parser/alias15.0 | 12 ++ bin/sh/tests/parser/alias15.0.stdout | 4 + .../bin/sh => bin/sh/tests}/parser/alias2.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias3.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias4.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias5.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias6.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias7.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias8.0 | 0 .../bin/sh => bin/sh/tests}/parser/alias9.0 | 0 .../sh => bin/sh/tests}/parser/and-pipe-not.0 | 0 .../bin/sh => bin/sh/tests}/parser/case1.0 | 0 .../bin/sh => bin/sh/tests}/parser/case2.0 | 0 .../sh/tests}/parser/dollar-quote1.0 | 0 .../sh/tests}/parser/dollar-quote10.0 | 0 .../sh/tests}/parser/dollar-quote11.0 | 0 .../sh/tests}/parser/dollar-quote2.0 | 0 .../sh/tests}/parser/dollar-quote3.0 | 0 .../sh/tests}/parser/dollar-quote4.0 | 0 .../sh/tests}/parser/dollar-quote5.0 | 0 .../sh/tests}/parser/dollar-quote6.0 | 0 .../sh/tests}/parser/dollar-quote7.0 | 0 .../sh/tests}/parser/dollar-quote8.0 | 0 .../sh/tests}/parser/dollar-quote9.0 | 0 .../sh/tests}/parser/empty-braces1.0 | 0 .../sh => bin/sh/tests}/parser/empty-cmd1.0 | 0 .../bin/sh => bin/sh/tests}/parser/for1.0 | 0 .../bin/sh => bin/sh/tests}/parser/for2.0 | 0 .../bin/sh => bin/sh/tests}/parser/func1.0 | 0 .../bin/sh => bin/sh/tests}/parser/func2.0 | 0 .../bin/sh => bin/sh/tests}/parser/func3.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc1.0 | 0 .../sh => bin/sh/tests}/parser/heredoc10.0 | 0 .../sh => bin/sh/tests}/parser/heredoc11.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc2.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc3.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc4.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc5.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc6.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc7.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc8.0 | 0 .../bin/sh => bin/sh/tests}/parser/heredoc9.0 | 0 .../sh => bin/sh/tests}/parser/no-space1.0 | 0 .../sh => bin/sh/tests}/parser/no-space2.0 | 0 .../sh => bin/sh/tests}/parser/only-redir1.0 | 0 .../sh => bin/sh/tests}/parser/only-redir2.0 | 0 .../sh => bin/sh/tests}/parser/only-redir3.0 | 0 .../sh => bin/sh/tests}/parser/only-redir4.0 | 0 .../sh => bin/sh/tests}/parser/pipe-not1.0 | 0 bin/sh/tests/parser/var-assign1.0 | 19 +++ bin/sh/tests/set-e/Makefile | 44 ++++++ .../bin/sh => bin/sh/tests}/set-e/and1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/and2.1 | 0 .../bin/sh => bin/sh/tests}/set-e/and3.0 | 0 .../bin/sh => bin/sh/tests}/set-e/and4.0 | 0 .../sh => bin/sh/tests}/set-e/background1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/cmd1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/cmd2.1 | 0 .../bin/sh => bin/sh/tests}/set-e/elif1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/elif2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/eval1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/eval2.1 | 0 .../bin/sh => bin/sh/tests}/set-e/for1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/func1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/func2.1 | 0 .../bin/sh => bin/sh/tests}/set-e/if1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/if2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/if3.0 | 0 .../bin/sh => bin/sh/tests}/set-e/not1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/not2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/or1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/or2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/or3.1 | 0 .../bin/sh => bin/sh/tests}/set-e/pipe1.1 | 0 .../bin/sh => bin/sh/tests}/set-e/pipe2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/return1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/semi1.1 | 0 .../bin/sh => bin/sh/tests}/set-e/semi2.1 | 0 .../bin/sh => bin/sh/tests}/set-e/subshell1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/subshell2.1 | 0 .../bin/sh => bin/sh/tests}/set-e/until1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/until2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/until3.0 | 0 .../bin/sh => bin/sh/tests}/set-e/while1.0 | 0 .../bin/sh => bin/sh/tests}/set-e/while2.0 | 0 .../bin/sh => bin/sh/tests}/set-e/while3.0 | 0 bin/sh/trap.c | 19 +-- bin/sh/trap.h | 1 - bin/sh/var.c | 24 ++- bin/sh/var.h | 1 - bin/test/Makefile | 6 + bin/test/tests/Makefile | 15 ++ .../test/tests/legacy_test.sh | 0 bin/tests/Makefile | 10 ++ etc/mtree/BSD.tests.dist | 26 +++ tools/regression/bin/Makefile | 5 - tools/regression/bin/date/Makefile | 4 - tools/regression/bin/date/regress.t | 6 - tools/regression/bin/mv/Makefile | 4 - tools/regression/bin/mv/regress.t | 6 - tools/regression/bin/pax/Makefile | 8 - tools/regression/bin/sh/Makefile | 7 - tools/regression/bin/sh/regress.t | 8 - tools/regression/bin/test/Makefile | 4 - tools/regression/bin/test/regress.t | 6 - 460 files changed, 907 insertions(+), 288 deletions(-) create mode 100644 bin/date/tests/Makefile rename tools/regression/bin/date/regress.sh => bin/date/tests/legacy_test.sh (100%) create mode 100644 bin/mv/tests/Makefile rename tools/regression/bin/mv/regress.sh => bin/mv/tests/legacy_test.sh (100%) create mode 100644 bin/pax/tests/Makefile rename tools/regression/bin/pax/regress.t => bin/pax/tests/legacy_test.pl (99%) mode change 100755 => 100644 create mode 100644 bin/sh/tests/Makefile create mode 100644 bin/sh/tests/builtins/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias.1.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias3.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/alias4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/break1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/break2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/break2.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/break3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/break4.4 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/break5.4 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/builtin1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case11.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case12.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case13.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case14.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case15.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case16.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case17.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case18.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case19.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/case9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/cd8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command11.0 (100%) create mode 100644 bin/sh/tests/builtins/command12.0 rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command3.0.stdout (66%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command5.0.stdout (86%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command6.0.stdout (85%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/command9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/dot1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/dot2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/dot3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/dot4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/eval1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/eval2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/eval3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/eval4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/eval5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/eval6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/exec1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/exec2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/exit1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/exit2.8 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/exit3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/export1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/fc1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/fc2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/for1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/for2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/for3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/getopts1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/getopts1.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/getopts2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/getopts2.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash1.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash2.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash3.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/hash4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/jobid1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/jobid2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/lineno.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/lineno.0.stdout (100%) create mode 100644 bin/sh/tests/builtins/lineno2.0 rename {tools/regression/bin/sh => bin/sh/tests}/builtins/local1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/local2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/local3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/local4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/locale1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/printf1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/printf2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/printf3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/printf4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read1.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read3.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read4.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/read7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return3.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return6.4 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return7.4 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/return8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/set1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/set2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap11.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap12.0 (100%) create mode 100644 bin/sh/tests/builtins/trap13.0 create mode 100644 bin/sh/tests/builtins/trap14.0 rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/trap9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/type1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/type1.0.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/type2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/type3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/unalias.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/var-assign.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/var-assign2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/builtins/wait9.127 (100%) create mode 100644 bin/sh/tests/errors/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/errors/assignment-error1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/assignment-error2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/backquote-error1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/backquote-error2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-binary1.126 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-keyword1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp2.2 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp2.2.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp3.2 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp3.2.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp4.2 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp4.2.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp5.2 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp5.2.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp6.2 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/bad-parm-exp6.2.stderr (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/option-error.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error2.2 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/redirection-error7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/errors/write-error1.0 (100%) create mode 100644 bin/sh/tests/execution/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/execution/bg1.0 (100%) create mode 100644 bin/sh/tests/execution/bg10.0 create mode 100644 bin/sh/tests/execution/bg10.0.stdout rename {tools/regression/bin/sh => bin/sh/tests}/execution/bg2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/bg3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/bg4.0 (100%) create mode 100644 bin/sh/tests/execution/bg5.0 create mode 100644 bin/sh/tests/execution/bg6.0 create mode 100644 bin/sh/tests/execution/bg6.0.stdout create mode 100644 bin/sh/tests/execution/bg7.0 create mode 100644 bin/sh/tests/execution/bg8.0 create mode 100644 bin/sh/tests/execution/bg9.0 rename {tools/regression/bin/sh => bin/sh/tests}/execution/fork1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/fork2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/fork3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/func1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/func2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/func3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/hash1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/int-cmd1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/killed1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/killed2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/not1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/not2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/path1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/redir7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-n1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-n2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-n3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-n4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-x1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-x2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/set-x3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/shellproc1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/subshell1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/subshell1.0.stdout (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/subshell2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/subshell3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/subshell4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/unknown1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/execution/var-assign1.0 (100%) create mode 100644 bin/sh/tests/expansion/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith11.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith12.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith13.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/arith9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/assign1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst11.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst12.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst13.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst14.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst15.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst16.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst17.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/cmdsubst9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/export1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/export2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/export3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/heredoc1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/heredoc2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/ifs1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/ifs2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/ifs3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/ifs4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/length8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/local1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/local2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/pathname1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/pathname2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/pathname3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/pathname4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/plus-minus8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/question1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/readonly1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/set-u1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/set-u2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/set-u3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/tilde1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/tilde2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/expansion/trim8.0 (100%) rename tools/regression/bin/sh/regress.sh => bin/sh/tests/legacy_test.sh (64%) create mode 100644 bin/sh/tests/parameters/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/parameters/env1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/exitstatus1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/mail1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/mail2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/optind1.0 (100%) create mode 100644 bin/sh/tests/parameters/optind2.0 rename {tools/regression/bin/sh => bin/sh/tests}/parameters/positional1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/positional2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/pwd1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parameters/pwd2.0 (100%) create mode 100644 bin/sh/tests/parser/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias10.0 (100%) create mode 100644 bin/sh/tests/parser/alias11.0 create mode 100644 bin/sh/tests/parser/alias12.0 create mode 100644 bin/sh/tests/parser/alias13.0 create mode 100644 bin/sh/tests/parser/alias14.0 create mode 100644 bin/sh/tests/parser/alias15.0 create mode 100644 bin/sh/tests/parser/alias15.0.stdout rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/alias9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/and-pipe-not.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/case1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/case2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote11.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/dollar-quote9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/empty-braces1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/empty-cmd1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/for1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/for2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/func1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/func2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/func3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc10.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc11.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc5.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc6.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc7.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc8.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/heredoc9.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/no-space1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/no-space2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/only-redir1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/only-redir2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/only-redir3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/only-redir4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/parser/pipe-not1.0 (100%) create mode 100644 bin/sh/tests/parser/var-assign1.0 create mode 100644 bin/sh/tests/set-e/Makefile rename {tools/regression/bin/sh => bin/sh/tests}/set-e/and1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/and2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/and3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/and4.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/background1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/cmd1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/cmd2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/elif1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/elif2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/eval1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/eval2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/for1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/func1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/func2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/if1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/if2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/if3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/not1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/not2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/or1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/or2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/or3.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/pipe1.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/pipe2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/return1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/semi1.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/semi2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/subshell1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/subshell2.1 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/until1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/until2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/until3.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/while1.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/while2.0 (100%) rename {tools/regression/bin/sh => bin/sh/tests}/set-e/while3.0 (100%) create mode 100644 bin/test/tests/Makefile rename tools/regression/bin/test/regress.sh => bin/test/tests/legacy_test.sh (100%) create mode 100644 bin/tests/Makefile delete mode 100644 tools/regression/bin/Makefile delete mode 100644 tools/regression/bin/date/Makefile delete mode 100644 tools/regression/bin/date/regress.t delete mode 100644 tools/regression/bin/mv/Makefile delete mode 100644 tools/regression/bin/mv/regress.t delete mode 100644 tools/regression/bin/pax/Makefile delete mode 100644 tools/regression/bin/sh/Makefile delete mode 100644 tools/regression/bin/sh/regress.t delete mode 100644 tools/regression/bin/test/Makefile delete mode 100644 tools/regression/bin/test/regress.t diff --git a/bin/Makefile b/bin/Makefile index 7b6a4ab8c..e4bc281db 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -52,6 +52,10 @@ SUBDIR+= rmail SUBDIR+= csh .endif +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include SUBDIR:= ${SUBDIR:O} diff --git a/bin/date/Makefile b/bin/date/Makefile index 4f5c3fea3..6da5848e1 100644 --- a/bin/date/Makefile +++ b/bin/date/Makefile @@ -1,7 +1,13 @@ # @(#)Makefile 8.1 (Berkeley) 5/31/93 # $FreeBSD$ +.include + PROG= date SRCS= date.c netdate.c vary.c +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include diff --git a/bin/date/tests/Makefile b/bin/date/tests/Makefile new file mode 100644 index 000000000..540008be2 --- /dev/null +++ b/bin/date/tests/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/date + +TAP_TESTS_SH= legacy_test + +.include diff --git a/tools/regression/bin/date/regress.sh b/bin/date/tests/legacy_test.sh similarity index 100% rename from tools/regression/bin/date/regress.sh rename to bin/date/tests/legacy_test.sh diff --git a/bin/mv/Makefile b/bin/mv/Makefile index 840578276..ad8cc4f02 100644 --- a/bin/mv/Makefile +++ b/bin/mv/Makefile @@ -1,6 +1,12 @@ # @(#)Makefile 8.2 (Berkeley) 4/2/94 # $FreeBSD$ +.include + PROG= mv +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include diff --git a/bin/mv/tests/Makefile b/bin/mv/tests/Makefile new file mode 100644 index 000000000..051a3b617 --- /dev/null +++ b/bin/mv/tests/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/mv + +TAP_TESTS_SH= legacy_test + +.include diff --git a/tools/regression/bin/mv/regress.sh b/bin/mv/tests/legacy_test.sh similarity index 100% rename from tools/regression/bin/mv/regress.sh rename to bin/mv/tests/legacy_test.sh diff --git a/bin/pax/Makefile b/bin/pax/Makefile index 9e8d4e111..95f18bba1 100644 --- a/bin/pax/Makefile +++ b/bin/pax/Makefile @@ -1,6 +1,8 @@ # @(#)Makefile 8.1 (Berkeley) 5/31/93 # $FreeBSD$ +.include + # To install on versions prior to BSD 4.4 the following may have to be # defined with CFLAGS += # @@ -30,4 +32,8 @@ SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c ftree.c \ gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \ tables.c tar.c tty_subs.c +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include diff --git a/bin/pax/tests/Makefile b/bin/pax/tests/Makefile new file mode 100644 index 000000000..f4f81eea8 --- /dev/null +++ b/bin/pax/tests/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/pax + +TAP_TESTS_PERL= legacy_test + +.include diff --git a/tools/regression/bin/pax/regress.t b/bin/pax/tests/legacy_test.pl old mode 100755 new mode 100644 similarity index 99% rename from tools/regression/bin/pax/regress.t rename to bin/pax/tests/legacy_test.pl index 7c392cbb7..dabba42b3 --- a/tools/regression/bin/pax/regress.t +++ b/bin/pax/tests/legacy_test.pl @@ -1,5 +1,3 @@ -#! /usr/bin/perl -# # $FreeBSD$ use strict; diff --git a/bin/sh/Makefile b/bin/sh/Makefile index 00d34fa74..e1ce5feb1 100644 --- a/bin/sh/Makefile +++ b/bin/sh/Makefile @@ -1,6 +1,8 @@ # @(#)Makefile 8.4 (Berkeley) 5/5/95 # $FreeBSD$ +.include + PROG= sh INSTALLFLAGS= -S SHSRCS= alias.c arith_yacc.c arith_yylex.c cd.c echo.c error.c eval.c \ @@ -59,7 +61,8 @@ syntax.c syntax.h: mksyntax token.h: mktokens sh ${.CURDIR}/mktokens -regress: - cd ${.CURDIR}/../../tools/regression/bin/sh && ${MAKE} SH=${.OBJDIR}/sh +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif .include diff --git a/bin/sh/alias.c b/bin/sh/alias.c index 044c869ed..9ebdcb54a 100644 --- a/bin/sh/alias.c +++ b/bin/sh/alias.c @@ -68,18 +68,7 @@ setalias(const char *name, const char *val) if (equal(name, ap->name)) { INTOFF; ckfree(ap->val); - /* See HACK below. */ -#ifdef notyet ap->val = savestr(val); -#else - { - size_t len = strlen(val); - ap->val = ckmalloc(len + 2); - memcpy(ap->val, val, len); - ap->val[len] = ' '; - ap->val[len+1] = '\0'; - } -#endif INTON; return; } @@ -88,34 +77,7 @@ setalias(const char *name, const char *val) INTOFF; ap = ckmalloc(sizeof (struct alias)); ap->name = savestr(name); - /* - * XXX - HACK: in order that the parser will not finish reading the - * alias value off the input before processing the next alias, we - * dummy up an extra space at the end of the alias. This is a crock - * and should be re-thought. The idea (if you feel inclined to help) - * is to avoid alias recursions. The mechanism used is: when - * expanding an alias, the value of the alias is pushed back on the - * input as a string and a pointer to the alias is stored with the - * string. The alias is marked as being in use. When the input - * routine finishes reading the string, it marks the alias not - * in use. The problem is synchronization with the parser. Since - * it reads ahead, the alias is marked not in use before the - * resulting token(s) is next checked for further alias sub. The - * H A C K is that we add a little fluff after the alias value - * so that the string will not be exhausted. This is a good - * idea ------- ***NOT*** - */ -#ifdef notyet ap->val = savestr(val); -#else /* hack */ - { - size_t len = strlen(val); - ap->val = ckmalloc(len + 2); - memcpy(ap->val, val, len); - ap->val[len] = ' '; /* fluff */ - ap->val[len+1] = '\0'; - } -#endif ap->flag = 0; ap->next = *app; *app = ap; @@ -207,14 +169,8 @@ comparealiases(const void *p1, const void *p2) static void printalias(const struct alias *a) { - char *p; - out1fmt("%s=", a->name); - /* Don't print the space added above. */ - p = a->val + strlen(a->val) - 1; - *p = '\0'; out1qstr(a->val); - *p = ' '; out1c('\n'); } diff --git a/bin/sh/cd.c b/bin/sh/cd.c index fa6f4925a..7720fad7d 100644 --- a/bin/sh/cd.c +++ b/bin/sh/cd.c @@ -182,6 +182,7 @@ cdlogical(char *dest) struct stat statb; int first; int badstat; + size_t len; /* * Check each component of the path. If we find a symlink or @@ -189,8 +190,9 @@ cdlogical(char *dest) * next time we get the value of the current directory. */ badstat = 0; - cdcomppath = stalloc(strlen(dest) + 1); - scopy(dest, cdcomppath); + len = strlen(dest); + cdcomppath = stalloc(len + 1); + memcpy(cdcomppath, dest, len + 1); STARTSTACKSTR(p); if (*dest == '/') { STPUTC('/', p); @@ -275,6 +277,7 @@ findcwd(char *dir) { char *new; char *p; + size_t len; /* * If our argument is NULL, we don't know the current directory @@ -283,8 +286,9 @@ findcwd(char *dir) */ if (dir == NULL || curdir == NULL) return getpwd2(); - cdcomppath = stalloc(strlen(dir) + 1); - scopy(dir, cdcomppath); + len = strlen(dir); + cdcomppath = stalloc(len + 1); + memcpy(cdcomppath, dir, len + 1); STARTSTACKSTR(new); if (*dir != '/') { STPUTS(curdir, new); diff --git a/bin/sh/eval.c b/bin/sh/eval.c index b8f76d57f..4f7559e18 100644 --- a/bin/sh/eval.c +++ b/bin/sh/eval.c @@ -750,6 +750,45 @@ isdeclarationcmd(struct narg *arg) (have_command || !isfunc("local")))); } +static void +xtracecommand(struct arglist *varlist, struct arglist *arglist) +{ + struct strlist *sp; + char sep = 0; + const char *p, *ps4; + + ps4 = expandstr(ps4val()); + out2str(ps4 != NULL ? ps4 : ps4val()); + for (sp = varlist->list ; sp ; sp = sp->next) { + if (sep != 0) + out2c(' '); + p = strchr(sp->text, '='); + if (p != NULL) { + p++; + outbin(sp->text, p - sp->text, out2); + out2qstr(p); + } else + out2qstr(sp->text); + sep = ' '; + } + for (sp = arglist->list ; sp ; sp = sp->next) { + if (sep != 0) + out2c(' '); + /* Disambiguate command looking like assignment. */ + if (sp == arglist->list && + strchr(sp->text, '=') != NULL && + strchr(sp->text, '\'') == NULL) { + out2c('\''); + out2str(sp->text); + out2c('\''); + } else + out2qstr(sp->text); + sep = ' '; + } + out2c('\n'); + flushout(&errout); +} + /* * Check if a builtin can safely be executed in the same process, * even though it should be in a subshell (command substitution). @@ -847,40 +886,8 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd) argv -= argc; /* Print the command if xflag is set. */ - if (xflag) { - char sep = 0; - const char *p, *ps4; - ps4 = expandstr(ps4val()); - out2str(ps4 != NULL ? ps4 : ps4val()); - for (sp = varlist.list ; sp ; sp = sp->next) { - if (sep != 0) - out2c(' '); - p = strchr(sp->text, '='); - if (p != NULL) { - p++; - outbin(sp->text, p - sp->text, out2); - out2qstr(p); - } else - out2qstr(sp->text); - sep = ' '; - } - for (sp = arglist.list ; sp ; sp = sp->next) { - if (sep != 0) - out2c(' '); - /* Disambiguate command looking like assignment. */ - if (sp == arglist.list && - strchr(sp->text, '=') != NULL && - strchr(sp->text, '\'') == NULL) { - out2c('\''); - out2str(sp->text); - out2c('\''); - } else - out2qstr(sp->text); - sep = ' '; - } - out2c('\n'); - flushout(&errout); - } + if (xflag) + xtracecommand(&varlist, &arglist); /* Now locate the command. */ if (argc == 0) { diff --git a/bin/sh/exec.c b/bin/sh/exec.c index 9f8e02993..5f30ec6ab 100644 --- a/bin/sh/exec.c +++ b/bin/sh/exec.c @@ -187,14 +187,15 @@ padvance(const char **path, const char *name) { const char *p, *start; char *q; - size_t len; + size_t len, namelen; if (*path == NULL) return NULL; start = *path; for (p = start; *p && *p != ':' && *p != '%'; p++) ; /* nothing */ - len = p - start + strlen(name) + 2; /* "2" is for '/' and '\0' */ + namelen = strlen(name); + len = p - start + namelen + 2; /* "2" is for '/' and '\0' */ STARTSTACKSTR(q); CHECKSTRSPACE(len, q); if (p != start) { @@ -202,7 +203,7 @@ padvance(const char **path, const char *name) q += p - start; *q++ = '/'; } - strcpy(q, name); + memcpy(q, name, namelen + 1); pathopt = NULL; if (*p == '%') { pathopt = ++p; @@ -527,6 +528,7 @@ cmdlookup(const char *name, int add) const char *p; struct tblentry *cmdp; struct tblentry **pp; + size_t len; p = name; hashval = *p << 4; @@ -541,11 +543,11 @@ cmdlookup(const char *name, int add) } if (add && cmdp == NULL) { INTOFF; - cmdp = *pp = ckmalloc(sizeof (struct tblentry) - + strlen(name) + 1); + len = strlen(name); + cmdp = *pp = ckmalloc(sizeof (struct tblentry) + len + 1); cmdp->next = NULL; cmdp->cmdtype = CMDUNKNOWN; - strcpy(cmdp->cmdname, name); + memcpy(cmdp->cmdname, name, len + 1); INTON; } lastcmdentry = pp; @@ -672,9 +674,11 @@ typecmd_impl(int argc, char **argv, int cmd, const char *path) /* Then look at the aliases */ if ((ap = lookupalias(argv[i], 1)) != NULL) { - if (cmd == TYPECMD_SMALLV) - out1fmt("alias %s='%s'\n", argv[i], ap->val); - else + if (cmd == TYPECMD_SMALLV) { + out1fmt("alias %s=", argv[i]); + out1qstr(ap->val); + outcslow('\n', out1); + } else out1fmt("%s is an alias for %s\n", argv[i], ap->val); continue; diff --git a/bin/sh/expand.c b/bin/sh/expand.c index 414bfa7a1..cad0116fb 100644 --- a/bin/sh/expand.c +++ b/bin/sh/expand.c @@ -100,6 +100,7 @@ static struct arglist exparg; /* holds expanded arg list */ static void argstr(char *, int); static char *exptilde(char *, int); +static char *expari(char *); static void expbackq(union node *, int, int); static int subevalvar(char *, char *, int, int, int, int, int); static char *evalvar(char *, int); @@ -206,7 +207,7 @@ expandarg(union node *arg, struct arglist *arglist, int flag) /* * Perform parameter expansion, command substitution and arithmetic * expansion, and tilde expansion if requested via EXP_TILDE/EXP_VARTILDE. - * Processing ends at a CTLENDVAR character as well as '\0'. + * Processing ends at a CTLENDVAR or CTLENDARI character as well as '\0'. * This is used to expand word in ${var+word} etc. * If EXP_FULL, EXP_CASE or EXP_REDIR are set, keep and/or generate CTLESC * characters to allow for further processing. @@ -231,6 +232,7 @@ argstr(char *p, int flag) switch (c = *p++) { case '\0': case CTLENDVAR: + case CTLENDARI: goto breakloop; case CTLQUOTEMARK: lit_quoted = 1; @@ -261,8 +263,8 @@ argstr(char *p, int flag) expbackq(argbackq->n, c & CTLQUOTE, flag); argbackq = argbackq->next; break; - case CTLENDARI: - expari(flag); + case CTLARI: + p = expari(p); break; case ':': case '=': @@ -387,59 +389,56 @@ removerecordregions(int endoff) } /* - * Expand arithmetic expression. Backup to start of expression, - * evaluate, place result in (backed up) result, adjust string position. + * Expand arithmetic expression. + * Note that flag is not required as digits never require CTLESC characters. */ -void -expari(int flag) +static char * +expari(char *p) { - char *p, *q, *start; + char *q, *start; arith_t result; int begoff; - int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR); int quoted; + int c; + int nesting; + int adj; - /* - * This routine is slightly over-complicated for - * efficiency. First we make sure there is - * enough space for the result, which may be bigger - * than the expression. Next we - * scan backwards looking for the start of arithmetic. If the - * next previous character is a CTLESC character, then we - * have to rescan starting from the beginning since CTLESC - * characters have to be processed left to right. - */ - CHECKSTRSPACE(DIGITS(result) - 2, expdest); - USTPUTC('\0', expdest); - start = stackblock(); - p = expdest - 2; - while (p >= start && *p != CTLARI) - --p; - if (p < start || *p != CTLARI) - error("missing CTLARI (shouldn't happen)"); - if (p > start && *(p - 1) == CTLESC) - for (p = start; *p != CTLARI; p++) - if (*p == CTLESC) - p++; - - if (p[1] == '"') - quoted=1; - else - quoted=0; - begoff = p - start; + quoted = *p++ == '"'; + begoff = expdest - stackblock(); + argstr(p, 0); removerecordregions(begoff); - if (quotes) - rmescapes(p+2); + STPUTC('\0', expdest); + start = stackblock() + begoff; + q = grabstackstr(expdest); - result = arith(p+2); + result = arith(start); ungrabstackstr(q, expdest); - fmtstr(p, DIGITS(result), ARITH_FORMAT_STR, result); - while (*p++) - ; - if (quoted == 0) - recordregion(begoff, p - 1 - start, 0); - result = expdest - p + 1; - STADJUST(-result, expdest); + + start = stackblock() + begoff; + adj = start - expdest; + STADJUST(adj, expdest); + + CHECKSTRSPACE((int)(DIGITS(result) + 1), expdest); + fmtstr(expdest, DIGITS(result), ARITH_FORMAT_STR, result); + adj = strlen(expdest); + STADJUST(adj, expdest); + if (!quoted) + recordregion(begoff, expdest - stackblock(), 0); + nesting = 1; + while (nesting > 0) { + c = *p++; + if (c == CTLESC) + p++; + else if (c == CTLARI) + nesting++; + else if (c == CTLENDARI) + nesting--; + else if (c == CTLVAR) + p++; /* ignore variable substitution byte */ + else if (c == '\0') + return p - 1; + } + return p; } @@ -671,10 +670,8 @@ evalvar(char *p, int flag) again: /* jump here after setting a variable with ${var=text} */ if (varflags & VSLINENO) { set = 1; - special = 0; - val = var; - p[-1] = '\0'; /* temporarily overwrite '=' to have \0 - terminated string */ + special = 1; + val = NULL; } else if (special) { set = varisset(var, varflags & VSNUL); val = NULL; @@ -703,7 +700,10 @@ evalvar(char *p, int flag) if (set && subtype != VSPLUS) { /* insert the value of the variable */ if (special) { - varvalue(var, varflags & VSQUOTE, subtype, flag); + if (varflags & VSLINENO) + STPUTBIN(var, p - var - 1, expdest); + else + varvalue(var, varflags & VSQUOTE, subtype, flag); if (subtype == VSLENGTH) { varlenb = expdest - stackblock() - startloc; varlen = varlenb; @@ -815,7 +815,6 @@ evalvar(char *p, int flag) default: abort(); } - p[-1] = '='; /* recover overwritten '=' */ if (subtype != VSNORMAL) { /* skip to end of alternative */ int nesting = 1; @@ -1307,9 +1306,11 @@ addfname(char *name) { char *p; struct strlist *sp; + size_t len; - p = stalloc(strlen(name) + 1); - scopy(name, p); + len = strlen(name); + p = stalloc(len + 1); + memcpy(p, name, len + 1); sp = (struct strlist *)stalloc(sizeof *sp); sp->text = p; *exparg.lastp = sp; diff --git a/bin/sh/expand.h b/bin/sh/expand.h index 8d4432158..7495a633e 100644 --- a/bin/sh/expand.h +++ b/bin/sh/expand.h @@ -58,6 +58,5 @@ struct arglist { union node; void expandarg(union node *, struct arglist *, int); -void expari(int); void rmescapes(char *); int casematch(union node *, const char *); diff --git a/bin/sh/input.c b/bin/sh/input.c index e46095d5e..05cc1ebe6 100644 --- a/bin/sh/input.c +++ b/bin/sh/input.c @@ -162,20 +162,16 @@ preadfd(void) int nr; parsenextc = parsefile->buf; -#ifndef NO_HISTORY - if (el != NULL && gotwinch) { - gotwinch = 0; - el_resize(el); - } -#endif retry: #ifndef NO_HISTORY if (parsefile->fd == 0 && el) { static const char *rl_cp; static int el_len; - if (rl_cp == NULL) + if (rl_cp == NULL) { + el_resize(el); rl_cp = el_gets(el, &el_len); + } if (rl_cp == NULL) nr = el_len == 0 ? 0 : -1; else { @@ -228,10 +224,16 @@ preadbuffer(void) { char *p, *q; int more; - int something; char savec; - if (parsefile->strpush) { + while (parsefile->strpush) { + /* + * Add a space to the end of an alias to ensure that the + * alias remains in use while parsing its last word. + * This avoids alias recursions. + */ + if (parsenleft == -1 && parsefile->strpush->ap != NULL) + return ' '; popstring(); if (--parsenleft >= 0) return (*parsenextc++); @@ -252,24 +254,18 @@ preadbuffer(void) q = p = parsefile->buf + (parsenextc - parsefile->buf); /* delete nul characters */ - something = 0; for (more = 1; more;) { switch (*p) { case '\0': p++; /* Skip nul */ goto check; - case '\t': - case ' ': - break; - case '\n': parsenleft = q - parsenextc; more = 0; /* Stop processing here */ break; default: - something = 1; break; } @@ -288,7 +284,8 @@ preadbuffer(void) *q = '\0'; #ifndef NO_HISTORY - if (parsefile->fd == 0 && hist && something) { + if (parsefile->fd == 0 && hist && + parsenextc[strspn(parsenextc, " \t\n")] != '\0') { HistEvent he; INTOFF; history(hist, &he, whichprompt == 1 ? H_ENTER : H_ADD, @@ -370,12 +367,16 @@ popstring(void) struct strpush *sp = parsefile->strpush; INTOFF; + if (sp->ap) { + if (parsenextc != sp->ap->val && + (parsenextc[-1] == ' ' || parsenextc[-1] == '\t')) + forcealias(); + sp->ap->flag &= ~ALIASINUSE; + } parsenextc = sp->prevstring; parsenleft = sp->prevnleft; parselleft = sp->prevlleft; /*out2fmt_flush("*** calling popstring: restoring to '%s'\n", parsenextc);*/ - if (sp->ap) - sp->ap->flag &= ~ALIASINUSE; parsefile->strpush = sp->prev; if (sp != &(parsefile->basestrpush)) ckfree(sp); diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c index bbb954ac0..1c0c6bd22 100644 --- a/bin/sh/jobs.c +++ b/bin/sh/jobs.c @@ -978,7 +978,6 @@ int waitforjob(struct job *jp, int *origstatus) { #if JOBS - pid_t mypgrp = getpgrp(); int propagate_int = jp->jobctl && jp->foreground; #endif int status; @@ -992,7 +991,7 @@ waitforjob(struct job *jp, int *origstatus) dotrap(); #if JOBS if (jp->jobctl) { - if (tcsetpgrp(ttyfd, mypgrp) < 0) + if (tcsetpgrp(ttyfd, rootpid) < 0) error("tcsetpgrp failed, errno=%d\n", errno); } if (jp->state == JOBSTOPPED) diff --git a/bin/sh/memalloc.c b/bin/sh/memalloc.c index cb330d0ec..119f12e9f 100644 --- a/bin/sh/memalloc.c +++ b/bin/sh/memalloc.c @@ -98,9 +98,11 @@ char * savestr(const char *s) { char *p; + size_t len; - p = ckmalloc(strlen(s) + 1); - scopy(s, p); + len = strlen(s); + p = ckmalloc(len + 1); + memcpy(p, s, len + 1); return p; } diff --git a/bin/sh/mystring.c b/bin/sh/mystring.c index 67617ec04..de7e9b648 100644 --- a/bin/sh/mystring.c +++ b/bin/sh/mystring.c @@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$"); * String functions. * * equal(s1, s2) Return true if strings are equal. - * scopy(from, to) Copy a string. * number(s) Convert a string of digits to an integer. * is_number(s) Return true if s is a string of digits. */ @@ -60,10 +59,6 @@ char nullstr[1]; /* zero length string */ * equal - #defined in mystring.h */ -/* - * scopy - #defined in mystring.h - */ - /* * prefix -- see if pfx is a prefix of string. diff --git a/bin/sh/mystring.h b/bin/sh/mystring.h index 5a6e3d8a4..87b76c8ac 100644 --- a/bin/sh/mystring.h +++ b/bin/sh/mystring.h @@ -40,4 +40,3 @@ int number(const char *); int is_number(const char *); #define equal(s1, s2) (strcmp(s1, s2) == 0) -#define scopy(s1, s2) ((void)strcpy(s2, s1)) diff --git a/bin/sh/nodetypes b/bin/sh/nodetypes index 5e70c64e7..603c77707 100644 --- a/bin/sh/nodetypes +++ b/bin/sh/nodetypes @@ -118,16 +118,16 @@ NFROMTO nfile # fd<> fname NAPPEND nfile # fd>> fname NCLOBBER nfile # fd>| fname type int - next nodeptr # next redirection in list fd int # file descriptor being redirected + next nodeptr # next redirection in list fname nodeptr # file name, in a NARG node expfname temp char *expfname # actual file name NTOFD ndup # fd<&dupfd NFROMFD ndup # fd>&dupfd type int - next nodeptr # next redirection in list fd int # file descriptor being redirected + next nodeptr # next redirection in list dupfd int # file descriptor to duplicate vname nodeptr # file name if fd>&$var @@ -135,8 +135,8 @@ NFROMFD ndup # fd>&dupfd NHERE nhere # fd<<\! NXHERE nhere # fd<renamed[i] = EMPTY; + sv->fd0_redirected = fd0_redirected; sv->next = redirlist; redirlist = sv; } for (n = redir ; n ; n = n->nfile.next) { fd = n->nfile.fd; + if (fd == 0) + fd0_redirected = 1; if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) && n->ndup.dupfd == fd) continue; /* redirect from/to same file descriptor */ @@ -134,8 +138,6 @@ redirect(union node *redir, int flags) sv->renamed[fd] = i; INTON; } - if (fd == 0) - fd0_redirected++; openredirect(n, memory); } if (memory[1]) @@ -303,8 +305,6 @@ popredir(void) for (i = 0 ; i < 10 ; i++) { if (rp->renamed[i] != EMPTY) { - if (i == 0) - fd0_redirected--; if (rp->renamed[i] >= 0) { dup2(rp->renamed[i], i); close(rp->renamed[i]); @@ -314,6 +314,7 @@ popredir(void) } } INTOFF; + fd0_redirected = rp->fd0_redirected; redirlist = rp->next; ckfree(rp); INTON; diff --git a/bin/sh/sh.1 b/bin/sh/sh.1 index ff29be627..b5916a84a 100644 --- a/bin/sh/sh.1 +++ b/bin/sh/sh.1 @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 14, 2013 +.Dd January 26, 2014 .Dt SH 1 .Os .Sh NAME @@ -235,10 +235,16 @@ or .Dq Li || operator; or if the command is a pipeline preceded by the .Ic !\& -operator. +keyword. If a shell function is executed and its exit status is explicitly tested, all commands of the function are considered to be tested as well. +.Pp +It is recommended to check for failures explicitly +instead of relying on +.Fl e +because it tends to behave in unexpected ways, +particularly in larger scripts. .It Fl f Li noglob Disable pathname expansion. .It Fl h Li trackall @@ -527,6 +533,20 @@ would become .Pp .Dl "ls -F foobar" .Pp +Aliases are also recognized after an alias +whose value ends with a space or tab. +For example, if there is also an alias called +.Dq Li nohup +with the value +.Dq Li "nohup " , +then the input +.Pp +.Dl "nohup lf foobar" +.Pp +would become +.Pp +.Dl "nohup ls -F foobar" +.Pp Aliases provide a convenient way for naive users to create shorthands for commands without having to learn how to create functions with arguments. diff --git a/bin/sh/show.c b/bin/sh/show.c index 7cb354707..db18ae970 100644 --- a/bin/sh/show.c +++ b/bin/sh/show.c @@ -390,11 +390,11 @@ opentrace(void) else p = "/tmp"; } - scopy(p, s); + strcpy(s, p); strcat(s, "/trace"); } #else - scopy("./trace", s); + strcpy(s, "./trace"); #endif /* not_this_way */ if ((tracefile = fopen(s, "a")) == NULL) { fprintf(stderr, "Can't open %s: %s\n", s, strerror(errno)); diff --git a/bin/sh/tests/Makefile b/bin/sh/tests/Makefile new file mode 100644 index 000000000..f6ddb8a07 --- /dev/null +++ b/bin/sh/tests/Makefile @@ -0,0 +1,18 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/sh + +TAP_TESTS_SH= legacy_test +TAP_TESTS_SH_SED_legacy_test= -e 's,__SH__,/bin/sh,g' +# Some tests in here are silently not run when the tests are executed as +# root. Explicitly tell Kyua to drop privileges. +# +# TODO(jmmv): Kyua needs to do this by default, not only when explicitly +# requested. See https://code.google.com/p/kyua/issues/detail?id=6 +TEST_METADATA.legacy_test+= required_user="unprivileged" + +SUBDIR+= builtins errors execution expansion parameters parser set-e + +.include diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile new file mode 100644 index 000000000..6f60f8493 --- /dev/null +++ b/bin/sh/tests/builtins/Makefile @@ -0,0 +1,148 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/builtins +KYUAFILE= no + +FILES= alias.0 alias.0.stdout +FILES+= alias.1 alias.1.stderr +FILES+= alias3.0 alias3.0.stdout +FILES+= alias4.0 +FILES+= break1.0 +FILES+= break2.0 break2.0.stdout +FILES+= break3.0 +FILES+= break4.4 +FILES+= break5.4 +FILES+= builtin1.0 +FILES+= case1.0 +FILES+= case2.0 +FILES+= case3.0 +FILES+= case4.0 +FILES+= case5.0 +FILES+= case6.0 +FILES+= case7.0 +FILES+= case8.0 +FILES+= case9.0 +FILES+= case10.0 +FILES+= case11.0 +FILES+= case12.0 +FILES+= case13.0 +FILES+= case14.0 +FILES+= case15.0 +FILES+= case16.0 +FILES+= case17.0 +FILES+= case18.0 +FILES+= case19.0 +FILES+= cd1.0 +FILES+= cd2.0 +FILES+= cd3.0 +FILES+= cd4.0 +FILES+= cd5.0 +FILES+= cd6.0 +FILES+= cd7.0 +FILES+= cd8.0 +FILES+= command1.0 +FILES+= command2.0 +FILES+= command3.0 +FILES+= command3.0.stdout +FILES+= command4.0 +FILES+= command5.0 +FILES+= command5.0.stdout +FILES+= command6.0 +FILES+= command6.0.stdout +FILES+= command7.0 +FILES+= command8.0 +FILES+= command9.0 +FILES+= command10.0 +FILES+= command11.0 +FILES+= command12.0 +FILES+= dot1.0 +FILES+= dot2.0 +FILES+= dot3.0 +FILES+= dot4.0 +FILES+= eval1.0 +FILES+= eval2.0 +FILES+= eval3.0 +FILES+= eval4.0 +FILES+= eval5.0 +FILES+= eval6.0 +FILES+= exec1.0 +FILES+= exec2.0 +FILES+= exit1.0 +FILES+= exit2.8 +FILES+= exit3.0 +FILES+= export1.0 +FILES+= fc1.0 +FILES+= fc2.0 +FILES+= for1.0 +FILES+= for2.0 +FILES+= for3.0 +FILES+= getopts1.0 getopts1.0.stdout +FILES+= getopts2.0 getopts2.0.stdout +FILES+= hash1.0 hash1.0.stdout +FILES+= hash2.0 hash2.0.stdout +FILES+= hash3.0 hash3.0.stdout +FILES+= hash4.0 +FILES+= jobid1.0 +FILES+= jobid2.0 +FILES+= lineno.0 lineno.0.stdout +FILES+= lineno2.0 +FILES+= local1.0 +FILES+= local2.0 +FILES+= local3.0 +FILES+= local4.0 +FILES+= locale1.0 +FILES+= printf1.0 +FILES+= printf2.0 +FILES+= printf3.0 +FILES+= printf4.0 +FILES+= read1.0 read1.0.stdout +FILES+= read2.0 +FILES+= read3.0 read3.0.stdout +FILES+= read4.0 read4.0.stdout +FILES+= read5.0 +FILES+= read6.0 +FILES+= read7.0 +FILES+= return1.0 +FILES+= return2.1 +FILES+= return3.1 +FILES+= return4.0 +FILES+= return5.0 +FILES+= return6.4 +FILES+= return7.4 +FILES+= return8.0 +FILES+= set1.0 +FILES+= set2.0 +FILES+= trap1.0 +FILES+= trap10.0 +FILES+= trap11.0 +FILES+= trap12.0 +FILES+= trap13.0 +FILES+= trap14.0 +FILES+= trap2.0 +FILES+= trap3.0 +FILES+= trap4.0 +FILES+= trap5.0 +FILES+= trap6.0 +FILES+= trap7.0 +FILES+= trap8.0 +FILES+= trap9.0 +FILES+= type1.0 type1.0.stderr +FILES+= type2.0 +FILES+= type3.0 +FILES+= unalias.0 +FILES+= var-assign.0 +FILES+= var-assign2.0 +FILES+= wait1.0 +FILES+= wait2.0 +FILES+= wait3.0 +FILES+= wait4.0 +FILES+= wait5.0 +FILES+= wait6.0 +FILES+= wait7.0 +FILES+= wait8.0 +FILES+= wait9.127 +FILES+= wait10.0 + +.include diff --git a/tools/regression/bin/sh/builtins/alias.0 b/bin/sh/tests/builtins/alias.0 similarity index 100% rename from tools/regression/bin/sh/builtins/alias.0 rename to bin/sh/tests/builtins/alias.0 diff --git a/tools/regression/bin/sh/builtins/alias.0.stdout b/bin/sh/tests/builtins/alias.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/alias.0.stdout rename to bin/sh/tests/builtins/alias.0.stdout diff --git a/tools/regression/bin/sh/builtins/alias.1 b/bin/sh/tests/builtins/alias.1 similarity index 100% rename from tools/regression/bin/sh/builtins/alias.1 rename to bin/sh/tests/builtins/alias.1 diff --git a/tools/regression/bin/sh/builtins/alias.1.stderr b/bin/sh/tests/builtins/alias.1.stderr similarity index 100% rename from tools/regression/bin/sh/builtins/alias.1.stderr rename to bin/sh/tests/builtins/alias.1.stderr diff --git a/tools/regression/bin/sh/builtins/alias3.0 b/bin/sh/tests/builtins/alias3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/alias3.0 rename to bin/sh/tests/builtins/alias3.0 diff --git a/tools/regression/bin/sh/builtins/alias3.0.stdout b/bin/sh/tests/builtins/alias3.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/alias3.0.stdout rename to bin/sh/tests/builtins/alias3.0.stdout diff --git a/tools/regression/bin/sh/builtins/alias4.0 b/bin/sh/tests/builtins/alias4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/alias4.0 rename to bin/sh/tests/builtins/alias4.0 diff --git a/tools/regression/bin/sh/builtins/break1.0 b/bin/sh/tests/builtins/break1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/break1.0 rename to bin/sh/tests/builtins/break1.0 diff --git a/tools/regression/bin/sh/builtins/break2.0 b/bin/sh/tests/builtins/break2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/break2.0 rename to bin/sh/tests/builtins/break2.0 diff --git a/tools/regression/bin/sh/builtins/break2.0.stdout b/bin/sh/tests/builtins/break2.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/break2.0.stdout rename to bin/sh/tests/builtins/break2.0.stdout diff --git a/tools/regression/bin/sh/builtins/break3.0 b/bin/sh/tests/builtins/break3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/break3.0 rename to bin/sh/tests/builtins/break3.0 diff --git a/tools/regression/bin/sh/builtins/break4.4 b/bin/sh/tests/builtins/break4.4 similarity index 100% rename from tools/regression/bin/sh/builtins/break4.4 rename to bin/sh/tests/builtins/break4.4 diff --git a/tools/regression/bin/sh/builtins/break5.4 b/bin/sh/tests/builtins/break5.4 similarity index 100% rename from tools/regression/bin/sh/builtins/break5.4 rename to bin/sh/tests/builtins/break5.4 diff --git a/tools/regression/bin/sh/builtins/builtin1.0 b/bin/sh/tests/builtins/builtin1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/builtin1.0 rename to bin/sh/tests/builtins/builtin1.0 diff --git a/tools/regression/bin/sh/builtins/case1.0 b/bin/sh/tests/builtins/case1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case1.0 rename to bin/sh/tests/builtins/case1.0 diff --git a/tools/regression/bin/sh/builtins/case10.0 b/bin/sh/tests/builtins/case10.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case10.0 rename to bin/sh/tests/builtins/case10.0 diff --git a/tools/regression/bin/sh/builtins/case11.0 b/bin/sh/tests/builtins/case11.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case11.0 rename to bin/sh/tests/builtins/case11.0 diff --git a/tools/regression/bin/sh/builtins/case12.0 b/bin/sh/tests/builtins/case12.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case12.0 rename to bin/sh/tests/builtins/case12.0 diff --git a/tools/regression/bin/sh/builtins/case13.0 b/bin/sh/tests/builtins/case13.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case13.0 rename to bin/sh/tests/builtins/case13.0 diff --git a/tools/regression/bin/sh/builtins/case14.0 b/bin/sh/tests/builtins/case14.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case14.0 rename to bin/sh/tests/builtins/case14.0 diff --git a/tools/regression/bin/sh/builtins/case15.0 b/bin/sh/tests/builtins/case15.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case15.0 rename to bin/sh/tests/builtins/case15.0 diff --git a/tools/regression/bin/sh/builtins/case16.0 b/bin/sh/tests/builtins/case16.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case16.0 rename to bin/sh/tests/builtins/case16.0 diff --git a/tools/regression/bin/sh/builtins/case17.0 b/bin/sh/tests/builtins/case17.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case17.0 rename to bin/sh/tests/builtins/case17.0 diff --git a/tools/regression/bin/sh/builtins/case18.0 b/bin/sh/tests/builtins/case18.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case18.0 rename to bin/sh/tests/builtins/case18.0 diff --git a/tools/regression/bin/sh/builtins/case19.0 b/bin/sh/tests/builtins/case19.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case19.0 rename to bin/sh/tests/builtins/case19.0 diff --git a/tools/regression/bin/sh/builtins/case2.0 b/bin/sh/tests/builtins/case2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case2.0 rename to bin/sh/tests/builtins/case2.0 diff --git a/tools/regression/bin/sh/builtins/case3.0 b/bin/sh/tests/builtins/case3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case3.0 rename to bin/sh/tests/builtins/case3.0 diff --git a/tools/regression/bin/sh/builtins/case4.0 b/bin/sh/tests/builtins/case4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case4.0 rename to bin/sh/tests/builtins/case4.0 diff --git a/tools/regression/bin/sh/builtins/case5.0 b/bin/sh/tests/builtins/case5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case5.0 rename to bin/sh/tests/builtins/case5.0 diff --git a/tools/regression/bin/sh/builtins/case6.0 b/bin/sh/tests/builtins/case6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case6.0 rename to bin/sh/tests/builtins/case6.0 diff --git a/tools/regression/bin/sh/builtins/case7.0 b/bin/sh/tests/builtins/case7.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case7.0 rename to bin/sh/tests/builtins/case7.0 diff --git a/tools/regression/bin/sh/builtins/case8.0 b/bin/sh/tests/builtins/case8.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case8.0 rename to bin/sh/tests/builtins/case8.0 diff --git a/tools/regression/bin/sh/builtins/case9.0 b/bin/sh/tests/builtins/case9.0 similarity index 100% rename from tools/regression/bin/sh/builtins/case9.0 rename to bin/sh/tests/builtins/case9.0 diff --git a/tools/regression/bin/sh/builtins/cd1.0 b/bin/sh/tests/builtins/cd1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd1.0 rename to bin/sh/tests/builtins/cd1.0 diff --git a/tools/regression/bin/sh/builtins/cd2.0 b/bin/sh/tests/builtins/cd2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd2.0 rename to bin/sh/tests/builtins/cd2.0 diff --git a/tools/regression/bin/sh/builtins/cd3.0 b/bin/sh/tests/builtins/cd3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd3.0 rename to bin/sh/tests/builtins/cd3.0 diff --git a/tools/regression/bin/sh/builtins/cd4.0 b/bin/sh/tests/builtins/cd4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd4.0 rename to bin/sh/tests/builtins/cd4.0 diff --git a/tools/regression/bin/sh/builtins/cd5.0 b/bin/sh/tests/builtins/cd5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd5.0 rename to bin/sh/tests/builtins/cd5.0 diff --git a/tools/regression/bin/sh/builtins/cd6.0 b/bin/sh/tests/builtins/cd6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd6.0 rename to bin/sh/tests/builtins/cd6.0 diff --git a/tools/regression/bin/sh/builtins/cd7.0 b/bin/sh/tests/builtins/cd7.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd7.0 rename to bin/sh/tests/builtins/cd7.0 diff --git a/tools/regression/bin/sh/builtins/cd8.0 b/bin/sh/tests/builtins/cd8.0 similarity index 100% rename from tools/regression/bin/sh/builtins/cd8.0 rename to bin/sh/tests/builtins/cd8.0 diff --git a/tools/regression/bin/sh/builtins/command1.0 b/bin/sh/tests/builtins/command1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command1.0 rename to bin/sh/tests/builtins/command1.0 diff --git a/tools/regression/bin/sh/builtins/command10.0 b/bin/sh/tests/builtins/command10.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command10.0 rename to bin/sh/tests/builtins/command10.0 diff --git a/tools/regression/bin/sh/builtins/command11.0 b/bin/sh/tests/builtins/command11.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command11.0 rename to bin/sh/tests/builtins/command11.0 diff --git a/bin/sh/tests/builtins/command12.0 b/bin/sh/tests/builtins/command12.0 new file mode 100644 index 000000000..f981db324 --- /dev/null +++ b/bin/sh/tests/builtins/command12.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +alias aa=echo\ \'\"\' +cmd=$(command -v aa) +alias aa=echo\ bad +eval "$cmd" +[ "$(eval aa)" = \" ] diff --git a/tools/regression/bin/sh/builtins/command2.0 b/bin/sh/tests/builtins/command2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command2.0 rename to bin/sh/tests/builtins/command2.0 diff --git a/tools/regression/bin/sh/builtins/command3.0 b/bin/sh/tests/builtins/command3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command3.0 rename to bin/sh/tests/builtins/command3.0 diff --git a/tools/regression/bin/sh/builtins/command3.0.stdout b/bin/sh/tests/builtins/command3.0.stdout similarity index 66% rename from tools/regression/bin/sh/builtins/command3.0.stdout rename to bin/sh/tests/builtins/command3.0.stdout index 239c53f7d..67b869156 100644 --- a/tools/regression/bin/sh/builtins/command3.0.stdout +++ b/bin/sh/tests/builtins/command3.0.stdout @@ -4,4 +4,4 @@ true fun break if -alias foo='bar ' +alias foo=bar diff --git a/tools/regression/bin/sh/builtins/command4.0 b/bin/sh/tests/builtins/command4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command4.0 rename to bin/sh/tests/builtins/command4.0 diff --git a/tools/regression/bin/sh/builtins/command5.0 b/bin/sh/tests/builtins/command5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command5.0 rename to bin/sh/tests/builtins/command5.0 diff --git a/tools/regression/bin/sh/builtins/command5.0.stdout b/bin/sh/tests/builtins/command5.0.stdout similarity index 86% rename from tools/regression/bin/sh/builtins/command5.0.stdout rename to bin/sh/tests/builtins/command5.0.stdout index 4cb2b11fb..523f7b22a 100644 --- a/tools/regression/bin/sh/builtins/command5.0.stdout +++ b/bin/sh/tests/builtins/command5.0.stdout @@ -5,4 +5,4 @@ fun is a shell function break is a special shell builtin if is a shell keyword { is a shell keyword -foo is an alias for bar +foo is an alias for bar diff --git a/tools/regression/bin/sh/builtins/command6.0 b/bin/sh/tests/builtins/command6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command6.0 rename to bin/sh/tests/builtins/command6.0 diff --git a/tools/regression/bin/sh/builtins/command6.0.stdout b/bin/sh/tests/builtins/command6.0.stdout similarity index 85% rename from tools/regression/bin/sh/builtins/command6.0.stdout rename to bin/sh/tests/builtins/command6.0.stdout index df4d6474d..3180207a4 100644 --- a/tools/regression/bin/sh/builtins/command6.0.stdout +++ b/bin/sh/tests/builtins/command6.0.stdout @@ -4,4 +4,4 @@ fun is a shell function break is a special shell builtin if is a shell keyword { is a shell keyword -foo is an alias for bar +foo is an alias for bar diff --git a/tools/regression/bin/sh/builtins/command7.0 b/bin/sh/tests/builtins/command7.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command7.0 rename to bin/sh/tests/builtins/command7.0 diff --git a/tools/regression/bin/sh/builtins/command8.0 b/bin/sh/tests/builtins/command8.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command8.0 rename to bin/sh/tests/builtins/command8.0 diff --git a/tools/regression/bin/sh/builtins/command9.0 b/bin/sh/tests/builtins/command9.0 similarity index 100% rename from tools/regression/bin/sh/builtins/command9.0 rename to bin/sh/tests/builtins/command9.0 diff --git a/tools/regression/bin/sh/builtins/dot1.0 b/bin/sh/tests/builtins/dot1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/dot1.0 rename to bin/sh/tests/builtins/dot1.0 diff --git a/tools/regression/bin/sh/builtins/dot2.0 b/bin/sh/tests/builtins/dot2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/dot2.0 rename to bin/sh/tests/builtins/dot2.0 diff --git a/tools/regression/bin/sh/builtins/dot3.0 b/bin/sh/tests/builtins/dot3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/dot3.0 rename to bin/sh/tests/builtins/dot3.0 diff --git a/tools/regression/bin/sh/builtins/dot4.0 b/bin/sh/tests/builtins/dot4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/dot4.0 rename to bin/sh/tests/builtins/dot4.0 diff --git a/tools/regression/bin/sh/builtins/eval1.0 b/bin/sh/tests/builtins/eval1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/eval1.0 rename to bin/sh/tests/builtins/eval1.0 diff --git a/tools/regression/bin/sh/builtins/eval2.0 b/bin/sh/tests/builtins/eval2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/eval2.0 rename to bin/sh/tests/builtins/eval2.0 diff --git a/tools/regression/bin/sh/builtins/eval3.0 b/bin/sh/tests/builtins/eval3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/eval3.0 rename to bin/sh/tests/builtins/eval3.0 diff --git a/tools/regression/bin/sh/builtins/eval4.0 b/bin/sh/tests/builtins/eval4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/eval4.0 rename to bin/sh/tests/builtins/eval4.0 diff --git a/tools/regression/bin/sh/builtins/eval5.0 b/bin/sh/tests/builtins/eval5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/eval5.0 rename to bin/sh/tests/builtins/eval5.0 diff --git a/tools/regression/bin/sh/builtins/eval6.0 b/bin/sh/tests/builtins/eval6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/eval6.0 rename to bin/sh/tests/builtins/eval6.0 diff --git a/tools/regression/bin/sh/builtins/exec1.0 b/bin/sh/tests/builtins/exec1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/exec1.0 rename to bin/sh/tests/builtins/exec1.0 diff --git a/tools/regression/bin/sh/builtins/exec2.0 b/bin/sh/tests/builtins/exec2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/exec2.0 rename to bin/sh/tests/builtins/exec2.0 diff --git a/tools/regression/bin/sh/builtins/exit1.0 b/bin/sh/tests/builtins/exit1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/exit1.0 rename to bin/sh/tests/builtins/exit1.0 diff --git a/tools/regression/bin/sh/builtins/exit2.8 b/bin/sh/tests/builtins/exit2.8 similarity index 100% rename from tools/regression/bin/sh/builtins/exit2.8 rename to bin/sh/tests/builtins/exit2.8 diff --git a/tools/regression/bin/sh/builtins/exit3.0 b/bin/sh/tests/builtins/exit3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/exit3.0 rename to bin/sh/tests/builtins/exit3.0 diff --git a/tools/regression/bin/sh/builtins/export1.0 b/bin/sh/tests/builtins/export1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/export1.0 rename to bin/sh/tests/builtins/export1.0 diff --git a/tools/regression/bin/sh/builtins/fc1.0 b/bin/sh/tests/builtins/fc1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/fc1.0 rename to bin/sh/tests/builtins/fc1.0 diff --git a/tools/regression/bin/sh/builtins/fc2.0 b/bin/sh/tests/builtins/fc2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/fc2.0 rename to bin/sh/tests/builtins/fc2.0 diff --git a/tools/regression/bin/sh/builtins/for1.0 b/bin/sh/tests/builtins/for1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/for1.0 rename to bin/sh/tests/builtins/for1.0 diff --git a/tools/regression/bin/sh/builtins/for2.0 b/bin/sh/tests/builtins/for2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/for2.0 rename to bin/sh/tests/builtins/for2.0 diff --git a/tools/regression/bin/sh/builtins/for3.0 b/bin/sh/tests/builtins/for3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/for3.0 rename to bin/sh/tests/builtins/for3.0 diff --git a/tools/regression/bin/sh/builtins/getopts1.0 b/bin/sh/tests/builtins/getopts1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/getopts1.0 rename to bin/sh/tests/builtins/getopts1.0 diff --git a/tools/regression/bin/sh/builtins/getopts1.0.stdout b/bin/sh/tests/builtins/getopts1.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/getopts1.0.stdout rename to bin/sh/tests/builtins/getopts1.0.stdout diff --git a/tools/regression/bin/sh/builtins/getopts2.0 b/bin/sh/tests/builtins/getopts2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/getopts2.0 rename to bin/sh/tests/builtins/getopts2.0 diff --git a/tools/regression/bin/sh/builtins/getopts2.0.stdout b/bin/sh/tests/builtins/getopts2.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/getopts2.0.stdout rename to bin/sh/tests/builtins/getopts2.0.stdout diff --git a/tools/regression/bin/sh/builtins/hash1.0 b/bin/sh/tests/builtins/hash1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/hash1.0 rename to bin/sh/tests/builtins/hash1.0 diff --git a/tools/regression/bin/sh/builtins/hash1.0.stdout b/bin/sh/tests/builtins/hash1.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/hash1.0.stdout rename to bin/sh/tests/builtins/hash1.0.stdout diff --git a/tools/regression/bin/sh/builtins/hash2.0 b/bin/sh/tests/builtins/hash2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/hash2.0 rename to bin/sh/tests/builtins/hash2.0 diff --git a/tools/regression/bin/sh/builtins/hash2.0.stdout b/bin/sh/tests/builtins/hash2.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/hash2.0.stdout rename to bin/sh/tests/builtins/hash2.0.stdout diff --git a/tools/regression/bin/sh/builtins/hash3.0 b/bin/sh/tests/builtins/hash3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/hash3.0 rename to bin/sh/tests/builtins/hash3.0 diff --git a/tools/regression/bin/sh/builtins/hash3.0.stdout b/bin/sh/tests/builtins/hash3.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/hash3.0.stdout rename to bin/sh/tests/builtins/hash3.0.stdout diff --git a/tools/regression/bin/sh/builtins/hash4.0 b/bin/sh/tests/builtins/hash4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/hash4.0 rename to bin/sh/tests/builtins/hash4.0 diff --git a/tools/regression/bin/sh/builtins/jobid1.0 b/bin/sh/tests/builtins/jobid1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/jobid1.0 rename to bin/sh/tests/builtins/jobid1.0 diff --git a/tools/regression/bin/sh/builtins/jobid2.0 b/bin/sh/tests/builtins/jobid2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/jobid2.0 rename to bin/sh/tests/builtins/jobid2.0 diff --git a/tools/regression/bin/sh/builtins/lineno.0 b/bin/sh/tests/builtins/lineno.0 similarity index 100% rename from tools/regression/bin/sh/builtins/lineno.0 rename to bin/sh/tests/builtins/lineno.0 diff --git a/tools/regression/bin/sh/builtins/lineno.0.stdout b/bin/sh/tests/builtins/lineno.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/lineno.0.stdout rename to bin/sh/tests/builtins/lineno.0.stdout diff --git a/bin/sh/tests/builtins/lineno2.0 b/bin/sh/tests/builtins/lineno2.0 new file mode 100644 index 000000000..ddbd10433 --- /dev/null +++ b/bin/sh/tests/builtins/lineno2.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +f() { + : ${LINENO+${x?}} +} + +unset -v x +command eval f 2>/dev/null && exit 3 +x=1 +f diff --git a/tools/regression/bin/sh/builtins/local1.0 b/bin/sh/tests/builtins/local1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/local1.0 rename to bin/sh/tests/builtins/local1.0 diff --git a/tools/regression/bin/sh/builtins/local2.0 b/bin/sh/tests/builtins/local2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/local2.0 rename to bin/sh/tests/builtins/local2.0 diff --git a/tools/regression/bin/sh/builtins/local3.0 b/bin/sh/tests/builtins/local3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/local3.0 rename to bin/sh/tests/builtins/local3.0 diff --git a/tools/regression/bin/sh/builtins/local4.0 b/bin/sh/tests/builtins/local4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/local4.0 rename to bin/sh/tests/builtins/local4.0 diff --git a/tools/regression/bin/sh/builtins/locale1.0 b/bin/sh/tests/builtins/locale1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/locale1.0 rename to bin/sh/tests/builtins/locale1.0 diff --git a/tools/regression/bin/sh/builtins/printf1.0 b/bin/sh/tests/builtins/printf1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/printf1.0 rename to bin/sh/tests/builtins/printf1.0 diff --git a/tools/regression/bin/sh/builtins/printf2.0 b/bin/sh/tests/builtins/printf2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/printf2.0 rename to bin/sh/tests/builtins/printf2.0 diff --git a/tools/regression/bin/sh/builtins/printf3.0 b/bin/sh/tests/builtins/printf3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/printf3.0 rename to bin/sh/tests/builtins/printf3.0 diff --git a/tools/regression/bin/sh/builtins/printf4.0 b/bin/sh/tests/builtins/printf4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/printf4.0 rename to bin/sh/tests/builtins/printf4.0 diff --git a/tools/regression/bin/sh/builtins/read1.0 b/bin/sh/tests/builtins/read1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read1.0 rename to bin/sh/tests/builtins/read1.0 diff --git a/tools/regression/bin/sh/builtins/read1.0.stdout b/bin/sh/tests/builtins/read1.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/read1.0.stdout rename to bin/sh/tests/builtins/read1.0.stdout diff --git a/tools/regression/bin/sh/builtins/read2.0 b/bin/sh/tests/builtins/read2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read2.0 rename to bin/sh/tests/builtins/read2.0 diff --git a/tools/regression/bin/sh/builtins/read3.0 b/bin/sh/tests/builtins/read3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read3.0 rename to bin/sh/tests/builtins/read3.0 diff --git a/tools/regression/bin/sh/builtins/read3.0.stdout b/bin/sh/tests/builtins/read3.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/read3.0.stdout rename to bin/sh/tests/builtins/read3.0.stdout diff --git a/tools/regression/bin/sh/builtins/read4.0 b/bin/sh/tests/builtins/read4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read4.0 rename to bin/sh/tests/builtins/read4.0 diff --git a/tools/regression/bin/sh/builtins/read4.0.stdout b/bin/sh/tests/builtins/read4.0.stdout similarity index 100% rename from tools/regression/bin/sh/builtins/read4.0.stdout rename to bin/sh/tests/builtins/read4.0.stdout diff --git a/tools/regression/bin/sh/builtins/read5.0 b/bin/sh/tests/builtins/read5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read5.0 rename to bin/sh/tests/builtins/read5.0 diff --git a/tools/regression/bin/sh/builtins/read6.0 b/bin/sh/tests/builtins/read6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read6.0 rename to bin/sh/tests/builtins/read6.0 diff --git a/tools/regression/bin/sh/builtins/read7.0 b/bin/sh/tests/builtins/read7.0 similarity index 100% rename from tools/regression/bin/sh/builtins/read7.0 rename to bin/sh/tests/builtins/read7.0 diff --git a/tools/regression/bin/sh/builtins/return1.0 b/bin/sh/tests/builtins/return1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/return1.0 rename to bin/sh/tests/builtins/return1.0 diff --git a/tools/regression/bin/sh/builtins/return2.1 b/bin/sh/tests/builtins/return2.1 similarity index 100% rename from tools/regression/bin/sh/builtins/return2.1 rename to bin/sh/tests/builtins/return2.1 diff --git a/tools/regression/bin/sh/builtins/return3.1 b/bin/sh/tests/builtins/return3.1 similarity index 100% rename from tools/regression/bin/sh/builtins/return3.1 rename to bin/sh/tests/builtins/return3.1 diff --git a/tools/regression/bin/sh/builtins/return4.0 b/bin/sh/tests/builtins/return4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/return4.0 rename to bin/sh/tests/builtins/return4.0 diff --git a/tools/regression/bin/sh/builtins/return5.0 b/bin/sh/tests/builtins/return5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/return5.0 rename to bin/sh/tests/builtins/return5.0 diff --git a/tools/regression/bin/sh/builtins/return6.4 b/bin/sh/tests/builtins/return6.4 similarity index 100% rename from tools/regression/bin/sh/builtins/return6.4 rename to bin/sh/tests/builtins/return6.4 diff --git a/tools/regression/bin/sh/builtins/return7.4 b/bin/sh/tests/builtins/return7.4 similarity index 100% rename from tools/regression/bin/sh/builtins/return7.4 rename to bin/sh/tests/builtins/return7.4 diff --git a/tools/regression/bin/sh/builtins/return8.0 b/bin/sh/tests/builtins/return8.0 similarity index 100% rename from tools/regression/bin/sh/builtins/return8.0 rename to bin/sh/tests/builtins/return8.0 diff --git a/tools/regression/bin/sh/builtins/set1.0 b/bin/sh/tests/builtins/set1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/set1.0 rename to bin/sh/tests/builtins/set1.0 diff --git a/tools/regression/bin/sh/builtins/set2.0 b/bin/sh/tests/builtins/set2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/set2.0 rename to bin/sh/tests/builtins/set2.0 diff --git a/tools/regression/bin/sh/builtins/trap1.0 b/bin/sh/tests/builtins/trap1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap1.0 rename to bin/sh/tests/builtins/trap1.0 diff --git a/tools/regression/bin/sh/builtins/trap10.0 b/bin/sh/tests/builtins/trap10.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap10.0 rename to bin/sh/tests/builtins/trap10.0 diff --git a/tools/regression/bin/sh/builtins/trap11.0 b/bin/sh/tests/builtins/trap11.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap11.0 rename to bin/sh/tests/builtins/trap11.0 diff --git a/tools/regression/bin/sh/builtins/trap12.0 b/bin/sh/tests/builtins/trap12.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap12.0 rename to bin/sh/tests/builtins/trap12.0 diff --git a/bin/sh/tests/builtins/trap13.0 b/bin/sh/tests/builtins/trap13.0 new file mode 100644 index 000000000..d90eb08eb --- /dev/null +++ b/bin/sh/tests/builtins/trap13.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +{ + trap 'exit 0' INT + ${SH} -c 'kill -INT $PPID' + exit 3 +} & +wait $! diff --git a/bin/sh/tests/builtins/trap14.0 b/bin/sh/tests/builtins/trap14.0 new file mode 100644 index 000000000..97cce8d0d --- /dev/null +++ b/bin/sh/tests/builtins/trap14.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +{ + trap - INT + ${SH} -c 'kill -INT $PPID' & + wait +} & +wait $! +r=$? +[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = INT ] diff --git a/tools/regression/bin/sh/builtins/trap2.0 b/bin/sh/tests/builtins/trap2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap2.0 rename to bin/sh/tests/builtins/trap2.0 diff --git a/tools/regression/bin/sh/builtins/trap3.0 b/bin/sh/tests/builtins/trap3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap3.0 rename to bin/sh/tests/builtins/trap3.0 diff --git a/tools/regression/bin/sh/builtins/trap4.0 b/bin/sh/tests/builtins/trap4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap4.0 rename to bin/sh/tests/builtins/trap4.0 diff --git a/tools/regression/bin/sh/builtins/trap5.0 b/bin/sh/tests/builtins/trap5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap5.0 rename to bin/sh/tests/builtins/trap5.0 diff --git a/tools/regression/bin/sh/builtins/trap6.0 b/bin/sh/tests/builtins/trap6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap6.0 rename to bin/sh/tests/builtins/trap6.0 diff --git a/tools/regression/bin/sh/builtins/trap7.0 b/bin/sh/tests/builtins/trap7.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap7.0 rename to bin/sh/tests/builtins/trap7.0 diff --git a/tools/regression/bin/sh/builtins/trap8.0 b/bin/sh/tests/builtins/trap8.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap8.0 rename to bin/sh/tests/builtins/trap8.0 diff --git a/tools/regression/bin/sh/builtins/trap9.0 b/bin/sh/tests/builtins/trap9.0 similarity index 100% rename from tools/regression/bin/sh/builtins/trap9.0 rename to bin/sh/tests/builtins/trap9.0 diff --git a/tools/regression/bin/sh/builtins/type1.0 b/bin/sh/tests/builtins/type1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/type1.0 rename to bin/sh/tests/builtins/type1.0 diff --git a/tools/regression/bin/sh/builtins/type1.0.stderr b/bin/sh/tests/builtins/type1.0.stderr similarity index 100% rename from tools/regression/bin/sh/builtins/type1.0.stderr rename to bin/sh/tests/builtins/type1.0.stderr diff --git a/tools/regression/bin/sh/builtins/type2.0 b/bin/sh/tests/builtins/type2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/type2.0 rename to bin/sh/tests/builtins/type2.0 diff --git a/tools/regression/bin/sh/builtins/type3.0 b/bin/sh/tests/builtins/type3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/type3.0 rename to bin/sh/tests/builtins/type3.0 diff --git a/tools/regression/bin/sh/builtins/unalias.0 b/bin/sh/tests/builtins/unalias.0 similarity index 100% rename from tools/regression/bin/sh/builtins/unalias.0 rename to bin/sh/tests/builtins/unalias.0 diff --git a/tools/regression/bin/sh/builtins/var-assign.0 b/bin/sh/tests/builtins/var-assign.0 similarity index 100% rename from tools/regression/bin/sh/builtins/var-assign.0 rename to bin/sh/tests/builtins/var-assign.0 diff --git a/tools/regression/bin/sh/builtins/var-assign2.0 b/bin/sh/tests/builtins/var-assign2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/var-assign2.0 rename to bin/sh/tests/builtins/var-assign2.0 diff --git a/tools/regression/bin/sh/builtins/wait1.0 b/bin/sh/tests/builtins/wait1.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait1.0 rename to bin/sh/tests/builtins/wait1.0 diff --git a/tools/regression/bin/sh/builtins/wait10.0 b/bin/sh/tests/builtins/wait10.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait10.0 rename to bin/sh/tests/builtins/wait10.0 diff --git a/tools/regression/bin/sh/builtins/wait2.0 b/bin/sh/tests/builtins/wait2.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait2.0 rename to bin/sh/tests/builtins/wait2.0 diff --git a/tools/regression/bin/sh/builtins/wait3.0 b/bin/sh/tests/builtins/wait3.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait3.0 rename to bin/sh/tests/builtins/wait3.0 diff --git a/tools/regression/bin/sh/builtins/wait4.0 b/bin/sh/tests/builtins/wait4.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait4.0 rename to bin/sh/tests/builtins/wait4.0 diff --git a/tools/regression/bin/sh/builtins/wait5.0 b/bin/sh/tests/builtins/wait5.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait5.0 rename to bin/sh/tests/builtins/wait5.0 diff --git a/tools/regression/bin/sh/builtins/wait6.0 b/bin/sh/tests/builtins/wait6.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait6.0 rename to bin/sh/tests/builtins/wait6.0 diff --git a/tools/regression/bin/sh/builtins/wait7.0 b/bin/sh/tests/builtins/wait7.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait7.0 rename to bin/sh/tests/builtins/wait7.0 diff --git a/tools/regression/bin/sh/builtins/wait8.0 b/bin/sh/tests/builtins/wait8.0 similarity index 100% rename from tools/regression/bin/sh/builtins/wait8.0 rename to bin/sh/tests/builtins/wait8.0 diff --git a/tools/regression/bin/sh/builtins/wait9.127 b/bin/sh/tests/builtins/wait9.127 similarity index 100% rename from tools/regression/bin/sh/builtins/wait9.127 rename to bin/sh/tests/builtins/wait9.127 diff --git a/bin/sh/tests/errors/Makefile b/bin/sh/tests/errors/Makefile new file mode 100644 index 000000000..9f8b0f204 --- /dev/null +++ b/bin/sh/tests/errors/Makefile @@ -0,0 +1,30 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/errors +KYUAFILE= no + +FILES= assignment-error1.0 +FILES+= assignment-error2.0 +FILES+= backquote-error1.0 +FILES+= backquote-error2.0 +FILES+= bad-binary1.126 +FILES+= bad-keyword1.0 +FILES+= bad-parm-exp1.0 +FILES+= bad-parm-exp2.2 bad-parm-exp2.2.stderr +FILES+= bad-parm-exp3.2 bad-parm-exp3.2.stderr +FILES+= bad-parm-exp4.2 bad-parm-exp4.2.stderr +FILES+= bad-parm-exp5.2 bad-parm-exp5.2.stderr +FILES+= bad-parm-exp6.2 bad-parm-exp6.2.stderr +FILES+= option-error.0 +FILES+= redirection-error.0 +FILES+= redirection-error2.2 +FILES+= redirection-error3.0 +FILES+= redirection-error4.0 +FILES+= redirection-error5.0 +FILES+= redirection-error6.0 +FILES+= redirection-error7.0 +FILES+= write-error1.0 + +.include diff --git a/tools/regression/bin/sh/errors/assignment-error1.0 b/bin/sh/tests/errors/assignment-error1.0 similarity index 100% rename from tools/regression/bin/sh/errors/assignment-error1.0 rename to bin/sh/tests/errors/assignment-error1.0 diff --git a/tools/regression/bin/sh/errors/assignment-error2.0 b/bin/sh/tests/errors/assignment-error2.0 similarity index 100% rename from tools/regression/bin/sh/errors/assignment-error2.0 rename to bin/sh/tests/errors/assignment-error2.0 diff --git a/tools/regression/bin/sh/errors/backquote-error1.0 b/bin/sh/tests/errors/backquote-error1.0 similarity index 100% rename from tools/regression/bin/sh/errors/backquote-error1.0 rename to bin/sh/tests/errors/backquote-error1.0 diff --git a/tools/regression/bin/sh/errors/backquote-error2.0 b/bin/sh/tests/errors/backquote-error2.0 similarity index 100% rename from tools/regression/bin/sh/errors/backquote-error2.0 rename to bin/sh/tests/errors/backquote-error2.0 diff --git a/tools/regression/bin/sh/errors/bad-binary1.126 b/bin/sh/tests/errors/bad-binary1.126 similarity index 100% rename from tools/regression/bin/sh/errors/bad-binary1.126 rename to bin/sh/tests/errors/bad-binary1.126 diff --git a/tools/regression/bin/sh/errors/bad-keyword1.0 b/bin/sh/tests/errors/bad-keyword1.0 similarity index 100% rename from tools/regression/bin/sh/errors/bad-keyword1.0 rename to bin/sh/tests/errors/bad-keyword1.0 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp1.0 b/bin/sh/tests/errors/bad-parm-exp1.0 similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp1.0 rename to bin/sh/tests/errors/bad-parm-exp1.0 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2 b/bin/sh/tests/errors/bad-parm-exp2.2 similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp2.2 rename to bin/sh/tests/errors/bad-parm-exp2.2 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr b/bin/sh/tests/errors/bad-parm-exp2.2.stderr similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr rename to bin/sh/tests/errors/bad-parm-exp2.2.stderr diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2 b/bin/sh/tests/errors/bad-parm-exp3.2 similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp3.2 rename to bin/sh/tests/errors/bad-parm-exp3.2 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr b/bin/sh/tests/errors/bad-parm-exp3.2.stderr similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr rename to bin/sh/tests/errors/bad-parm-exp3.2.stderr diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2 b/bin/sh/tests/errors/bad-parm-exp4.2 similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp4.2 rename to bin/sh/tests/errors/bad-parm-exp4.2 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr b/bin/sh/tests/errors/bad-parm-exp4.2.stderr similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr rename to bin/sh/tests/errors/bad-parm-exp4.2.stderr diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2 b/bin/sh/tests/errors/bad-parm-exp5.2 similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp5.2 rename to bin/sh/tests/errors/bad-parm-exp5.2 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr b/bin/sh/tests/errors/bad-parm-exp5.2.stderr similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr rename to bin/sh/tests/errors/bad-parm-exp5.2.stderr diff --git a/tools/regression/bin/sh/errors/bad-parm-exp6.2 b/bin/sh/tests/errors/bad-parm-exp6.2 similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp6.2 rename to bin/sh/tests/errors/bad-parm-exp6.2 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr b/bin/sh/tests/errors/bad-parm-exp6.2.stderr similarity index 100% rename from tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr rename to bin/sh/tests/errors/bad-parm-exp6.2.stderr diff --git a/tools/regression/bin/sh/errors/option-error.0 b/bin/sh/tests/errors/option-error.0 similarity index 100% rename from tools/regression/bin/sh/errors/option-error.0 rename to bin/sh/tests/errors/option-error.0 diff --git a/tools/regression/bin/sh/errors/redirection-error.0 b/bin/sh/tests/errors/redirection-error.0 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error.0 rename to bin/sh/tests/errors/redirection-error.0 diff --git a/tools/regression/bin/sh/errors/redirection-error2.2 b/bin/sh/tests/errors/redirection-error2.2 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error2.2 rename to bin/sh/tests/errors/redirection-error2.2 diff --git a/tools/regression/bin/sh/errors/redirection-error3.0 b/bin/sh/tests/errors/redirection-error3.0 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error3.0 rename to bin/sh/tests/errors/redirection-error3.0 diff --git a/tools/regression/bin/sh/errors/redirection-error4.0 b/bin/sh/tests/errors/redirection-error4.0 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error4.0 rename to bin/sh/tests/errors/redirection-error4.0 diff --git a/tools/regression/bin/sh/errors/redirection-error5.0 b/bin/sh/tests/errors/redirection-error5.0 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error5.0 rename to bin/sh/tests/errors/redirection-error5.0 diff --git a/tools/regression/bin/sh/errors/redirection-error6.0 b/bin/sh/tests/errors/redirection-error6.0 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error6.0 rename to bin/sh/tests/errors/redirection-error6.0 diff --git a/tools/regression/bin/sh/errors/redirection-error7.0 b/bin/sh/tests/errors/redirection-error7.0 similarity index 100% rename from tools/regression/bin/sh/errors/redirection-error7.0 rename to bin/sh/tests/errors/redirection-error7.0 diff --git a/tools/regression/bin/sh/errors/write-error1.0 b/bin/sh/tests/errors/write-error1.0 similarity index 100% rename from tools/regression/bin/sh/errors/write-error1.0 rename to bin/sh/tests/errors/write-error1.0 diff --git a/bin/sh/tests/execution/Makefile b/bin/sh/tests/execution/Makefile new file mode 100644 index 000000000..302d0d824 --- /dev/null +++ b/bin/sh/tests/execution/Makefile @@ -0,0 +1,53 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/execution +KYUAFILE= no + +FILES= bg1.0 +FILES+= bg2.0 +FILES+= bg3.0 +FILES+= bg4.0 +FILES+= bg5.0 +FILES+= bg6.0 bg6.0.stdout +FILES+= bg7.0 +FILES+= bg8.0 +FILES+= bg9.0 +FILES+= bg10.0 bg10.0.stdout +FILES+= fork1.0 +FILES+= fork2.0 +FILES+= fork3.0 +FILES+= func1.0 +FILES+= func2.0 +FILES+= func3.0 +FILES+= hash1.0 +FILES+= int-cmd1.0 +FILES+= killed1.0 +FILES+= killed2.0 +FILES+= not1.0 +FILES+= not2.0 +FILES+= path1.0 +FILES+= redir1.0 +FILES+= redir2.0 +FILES+= redir3.0 +FILES+= redir4.0 +FILES+= redir5.0 +FILES+= redir6.0 +FILES+= redir7.0 +FILES+= set-n1.0 +FILES+= set-n2.0 +FILES+= set-n3.0 +FILES+= set-n4.0 +FILES+= set-x1.0 +FILES+= set-x2.0 +FILES+= set-x3.0 +FILES+= shellproc1.0 +FILES+= subshell1.0 subshell1.0.stdout +FILES+= subshell2.0 +FILES+= subshell3.0 +FILES+= subshell4.0 +FILES+= unknown1.0 +FILES+= var-assign1.0 + +.include diff --git a/tools/regression/bin/sh/execution/bg1.0 b/bin/sh/tests/execution/bg1.0 similarity index 100% rename from tools/regression/bin/sh/execution/bg1.0 rename to bin/sh/tests/execution/bg1.0 diff --git a/bin/sh/tests/execution/bg10.0 b/bin/sh/tests/execution/bg10.0 new file mode 100644 index 000000000..44a25dc23 --- /dev/null +++ b/bin/sh/tests/execution/bg10.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +# The redirection overrides the /dev/null; { cat & wait; }' diff --git a/bin/sh/tests/execution/bg9.0 b/bin/sh/tests/execution/bg9.0 new file mode 100644 index 000000000..64fde3e3e --- /dev/null +++ b/bin/sh/tests/execution/bg9.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +# The redirection does not apply to the background command, and therefore +# does not override the implicit /dev/null; { cat & wait; }' diff --git a/tools/regression/bin/sh/execution/fork1.0 b/bin/sh/tests/execution/fork1.0 similarity index 100% rename from tools/regression/bin/sh/execution/fork1.0 rename to bin/sh/tests/execution/fork1.0 diff --git a/tools/regression/bin/sh/execution/fork2.0 b/bin/sh/tests/execution/fork2.0 similarity index 100% rename from tools/regression/bin/sh/execution/fork2.0 rename to bin/sh/tests/execution/fork2.0 diff --git a/tools/regression/bin/sh/execution/fork3.0 b/bin/sh/tests/execution/fork3.0 similarity index 100% rename from tools/regression/bin/sh/execution/fork3.0 rename to bin/sh/tests/execution/fork3.0 diff --git a/tools/regression/bin/sh/execution/func1.0 b/bin/sh/tests/execution/func1.0 similarity index 100% rename from tools/regression/bin/sh/execution/func1.0 rename to bin/sh/tests/execution/func1.0 diff --git a/tools/regression/bin/sh/execution/func2.0 b/bin/sh/tests/execution/func2.0 similarity index 100% rename from tools/regression/bin/sh/execution/func2.0 rename to bin/sh/tests/execution/func2.0 diff --git a/tools/regression/bin/sh/execution/func3.0 b/bin/sh/tests/execution/func3.0 similarity index 100% rename from tools/regression/bin/sh/execution/func3.0 rename to bin/sh/tests/execution/func3.0 diff --git a/tools/regression/bin/sh/execution/hash1.0 b/bin/sh/tests/execution/hash1.0 similarity index 100% rename from tools/regression/bin/sh/execution/hash1.0 rename to bin/sh/tests/execution/hash1.0 diff --git a/tools/regression/bin/sh/execution/int-cmd1.0 b/bin/sh/tests/execution/int-cmd1.0 similarity index 100% rename from tools/regression/bin/sh/execution/int-cmd1.0 rename to bin/sh/tests/execution/int-cmd1.0 diff --git a/tools/regression/bin/sh/execution/killed1.0 b/bin/sh/tests/execution/killed1.0 similarity index 100% rename from tools/regression/bin/sh/execution/killed1.0 rename to bin/sh/tests/execution/killed1.0 diff --git a/tools/regression/bin/sh/execution/killed2.0 b/bin/sh/tests/execution/killed2.0 similarity index 100% rename from tools/regression/bin/sh/execution/killed2.0 rename to bin/sh/tests/execution/killed2.0 diff --git a/tools/regression/bin/sh/execution/not1.0 b/bin/sh/tests/execution/not1.0 similarity index 100% rename from tools/regression/bin/sh/execution/not1.0 rename to bin/sh/tests/execution/not1.0 diff --git a/tools/regression/bin/sh/execution/not2.0 b/bin/sh/tests/execution/not2.0 similarity index 100% rename from tools/regression/bin/sh/execution/not2.0 rename to bin/sh/tests/execution/not2.0 diff --git a/tools/regression/bin/sh/execution/path1.0 b/bin/sh/tests/execution/path1.0 similarity index 100% rename from tools/regression/bin/sh/execution/path1.0 rename to bin/sh/tests/execution/path1.0 diff --git a/tools/regression/bin/sh/execution/redir1.0 b/bin/sh/tests/execution/redir1.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir1.0 rename to bin/sh/tests/execution/redir1.0 diff --git a/tools/regression/bin/sh/execution/redir2.0 b/bin/sh/tests/execution/redir2.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir2.0 rename to bin/sh/tests/execution/redir2.0 diff --git a/tools/regression/bin/sh/execution/redir3.0 b/bin/sh/tests/execution/redir3.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir3.0 rename to bin/sh/tests/execution/redir3.0 diff --git a/tools/regression/bin/sh/execution/redir4.0 b/bin/sh/tests/execution/redir4.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir4.0 rename to bin/sh/tests/execution/redir4.0 diff --git a/tools/regression/bin/sh/execution/redir5.0 b/bin/sh/tests/execution/redir5.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir5.0 rename to bin/sh/tests/execution/redir5.0 diff --git a/tools/regression/bin/sh/execution/redir6.0 b/bin/sh/tests/execution/redir6.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir6.0 rename to bin/sh/tests/execution/redir6.0 diff --git a/tools/regression/bin/sh/execution/redir7.0 b/bin/sh/tests/execution/redir7.0 similarity index 100% rename from tools/regression/bin/sh/execution/redir7.0 rename to bin/sh/tests/execution/redir7.0 diff --git a/tools/regression/bin/sh/execution/set-n1.0 b/bin/sh/tests/execution/set-n1.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-n1.0 rename to bin/sh/tests/execution/set-n1.0 diff --git a/tools/regression/bin/sh/execution/set-n2.0 b/bin/sh/tests/execution/set-n2.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-n2.0 rename to bin/sh/tests/execution/set-n2.0 diff --git a/tools/regression/bin/sh/execution/set-n3.0 b/bin/sh/tests/execution/set-n3.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-n3.0 rename to bin/sh/tests/execution/set-n3.0 diff --git a/tools/regression/bin/sh/execution/set-n4.0 b/bin/sh/tests/execution/set-n4.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-n4.0 rename to bin/sh/tests/execution/set-n4.0 diff --git a/tools/regression/bin/sh/execution/set-x1.0 b/bin/sh/tests/execution/set-x1.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-x1.0 rename to bin/sh/tests/execution/set-x1.0 diff --git a/tools/regression/bin/sh/execution/set-x2.0 b/bin/sh/tests/execution/set-x2.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-x2.0 rename to bin/sh/tests/execution/set-x2.0 diff --git a/tools/regression/bin/sh/execution/set-x3.0 b/bin/sh/tests/execution/set-x3.0 similarity index 100% rename from tools/regression/bin/sh/execution/set-x3.0 rename to bin/sh/tests/execution/set-x3.0 diff --git a/tools/regression/bin/sh/execution/shellproc1.0 b/bin/sh/tests/execution/shellproc1.0 similarity index 100% rename from tools/regression/bin/sh/execution/shellproc1.0 rename to bin/sh/tests/execution/shellproc1.0 diff --git a/tools/regression/bin/sh/execution/subshell1.0 b/bin/sh/tests/execution/subshell1.0 similarity index 100% rename from tools/regression/bin/sh/execution/subshell1.0 rename to bin/sh/tests/execution/subshell1.0 diff --git a/tools/regression/bin/sh/execution/subshell1.0.stdout b/bin/sh/tests/execution/subshell1.0.stdout similarity index 100% rename from tools/regression/bin/sh/execution/subshell1.0.stdout rename to bin/sh/tests/execution/subshell1.0.stdout diff --git a/tools/regression/bin/sh/execution/subshell2.0 b/bin/sh/tests/execution/subshell2.0 similarity index 100% rename from tools/regression/bin/sh/execution/subshell2.0 rename to bin/sh/tests/execution/subshell2.0 diff --git a/tools/regression/bin/sh/execution/subshell3.0 b/bin/sh/tests/execution/subshell3.0 similarity index 100% rename from tools/regression/bin/sh/execution/subshell3.0 rename to bin/sh/tests/execution/subshell3.0 diff --git a/tools/regression/bin/sh/execution/subshell4.0 b/bin/sh/tests/execution/subshell4.0 similarity index 100% rename from tools/regression/bin/sh/execution/subshell4.0 rename to bin/sh/tests/execution/subshell4.0 diff --git a/tools/regression/bin/sh/execution/unknown1.0 b/bin/sh/tests/execution/unknown1.0 similarity index 100% rename from tools/regression/bin/sh/execution/unknown1.0 rename to bin/sh/tests/execution/unknown1.0 diff --git a/tools/regression/bin/sh/execution/var-assign1.0 b/bin/sh/tests/execution/var-assign1.0 similarity index 100% rename from tools/regression/bin/sh/execution/var-assign1.0 rename to bin/sh/tests/execution/var-assign1.0 diff --git a/bin/sh/tests/expansion/Makefile b/bin/sh/tests/expansion/Makefile new file mode 100644 index 000000000..bd2431971 --- /dev/null +++ b/bin/sh/tests/expansion/Makefile @@ -0,0 +1,86 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/expansion +KYUAFILE= no + +FILES= arith1.0 +FILES+= arith2.0 +FILES+= arith3.0 +FILES+= arith4.0 +FILES+= arith5.0 +FILES+= arith6.0 +FILES+= arith7.0 +FILES+= arith8.0 +FILES+= arith9.0 +FILES+= arith10.0 +FILES+= arith11.0 +FILES+= arith12.0 +FILES+= arith13.0 +FILES+= assign1.0 +FILES+= cmdsubst1.0 +FILES+= cmdsubst2.0 +FILES+= cmdsubst3.0 +FILES+= cmdsubst4.0 +FILES+= cmdsubst5.0 +FILES+= cmdsubst6.0 +FILES+= cmdsubst7.0 +FILES+= cmdsubst8.0 +FILES+= cmdsubst9.0 +FILES+= cmdsubst10.0 +FILES+= cmdsubst11.0 +FILES+= cmdsubst12.0 +FILES+= cmdsubst13.0 +FILES+= cmdsubst14.0 +FILES+= cmdsubst15.0 +FILES+= cmdsubst16.0 +FILES+= cmdsubst17.0 +FILES+= export1.0 +FILES+= export2.0 +FILES+= export3.0 +FILES+= heredoc1.0 +FILES+= heredoc2.0 +FILES+= ifs1.0 +FILES+= ifs2.0 +FILES+= ifs3.0 +FILES+= ifs4.0 +FILES+= length1.0 +FILES+= length2.0 +FILES+= length3.0 +FILES+= length4.0 +FILES+= length5.0 +FILES+= length6.0 +FILES+= length7.0 +FILES+= length8.0 +FILES+= local1.0 +FILES+= local2.0 +FILES+= pathname1.0 +FILES+= pathname2.0 +FILES+= pathname3.0 +FILES+= pathname4.0 +FILES+= plus-minus1.0 +FILES+= plus-minus2.0 +FILES+= plus-minus3.0 +FILES+= plus-minus4.0 +FILES+= plus-minus5.0 +FILES+= plus-minus6.0 +FILES+= plus-minus7.0 +FILES+= plus-minus8.0 +FILES+= question1.0 +FILES+= readonly1.0 +FILES+= set-u1.0 +FILES+= set-u2.0 +FILES+= set-u3.0 +FILES+= tilde1.0 +FILES+= tilde2.0 +FILES+= trim1.0 +FILES+= trim2.0 +FILES+= trim3.0 +FILES+= trim4.0 +FILES+= trim5.0 +FILES+= trim6.0 +FILES+= trim7.0 +FILES+= trim8.0 + +.include diff --git a/tools/regression/bin/sh/expansion/arith1.0 b/bin/sh/tests/expansion/arith1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith1.0 rename to bin/sh/tests/expansion/arith1.0 diff --git a/tools/regression/bin/sh/expansion/arith10.0 b/bin/sh/tests/expansion/arith10.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith10.0 rename to bin/sh/tests/expansion/arith10.0 diff --git a/tools/regression/bin/sh/expansion/arith11.0 b/bin/sh/tests/expansion/arith11.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith11.0 rename to bin/sh/tests/expansion/arith11.0 diff --git a/tools/regression/bin/sh/expansion/arith12.0 b/bin/sh/tests/expansion/arith12.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith12.0 rename to bin/sh/tests/expansion/arith12.0 diff --git a/tools/regression/bin/sh/expansion/arith13.0 b/bin/sh/tests/expansion/arith13.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith13.0 rename to bin/sh/tests/expansion/arith13.0 diff --git a/tools/regression/bin/sh/expansion/arith2.0 b/bin/sh/tests/expansion/arith2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith2.0 rename to bin/sh/tests/expansion/arith2.0 diff --git a/tools/regression/bin/sh/expansion/arith3.0 b/bin/sh/tests/expansion/arith3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith3.0 rename to bin/sh/tests/expansion/arith3.0 diff --git a/tools/regression/bin/sh/expansion/arith4.0 b/bin/sh/tests/expansion/arith4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith4.0 rename to bin/sh/tests/expansion/arith4.0 diff --git a/tools/regression/bin/sh/expansion/arith5.0 b/bin/sh/tests/expansion/arith5.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith5.0 rename to bin/sh/tests/expansion/arith5.0 diff --git a/tools/regression/bin/sh/expansion/arith6.0 b/bin/sh/tests/expansion/arith6.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith6.0 rename to bin/sh/tests/expansion/arith6.0 diff --git a/tools/regression/bin/sh/expansion/arith7.0 b/bin/sh/tests/expansion/arith7.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith7.0 rename to bin/sh/tests/expansion/arith7.0 diff --git a/tools/regression/bin/sh/expansion/arith8.0 b/bin/sh/tests/expansion/arith8.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith8.0 rename to bin/sh/tests/expansion/arith8.0 diff --git a/tools/regression/bin/sh/expansion/arith9.0 b/bin/sh/tests/expansion/arith9.0 similarity index 100% rename from tools/regression/bin/sh/expansion/arith9.0 rename to bin/sh/tests/expansion/arith9.0 diff --git a/tools/regression/bin/sh/expansion/assign1.0 b/bin/sh/tests/expansion/assign1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/assign1.0 rename to bin/sh/tests/expansion/assign1.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst1.0 b/bin/sh/tests/expansion/cmdsubst1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst1.0 rename to bin/sh/tests/expansion/cmdsubst1.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst10.0 b/bin/sh/tests/expansion/cmdsubst10.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst10.0 rename to bin/sh/tests/expansion/cmdsubst10.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst11.0 b/bin/sh/tests/expansion/cmdsubst11.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst11.0 rename to bin/sh/tests/expansion/cmdsubst11.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst12.0 b/bin/sh/tests/expansion/cmdsubst12.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst12.0 rename to bin/sh/tests/expansion/cmdsubst12.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst13.0 b/bin/sh/tests/expansion/cmdsubst13.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst13.0 rename to bin/sh/tests/expansion/cmdsubst13.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst14.0 b/bin/sh/tests/expansion/cmdsubst14.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst14.0 rename to bin/sh/tests/expansion/cmdsubst14.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst15.0 b/bin/sh/tests/expansion/cmdsubst15.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst15.0 rename to bin/sh/tests/expansion/cmdsubst15.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst16.0 b/bin/sh/tests/expansion/cmdsubst16.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst16.0 rename to bin/sh/tests/expansion/cmdsubst16.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst17.0 b/bin/sh/tests/expansion/cmdsubst17.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst17.0 rename to bin/sh/tests/expansion/cmdsubst17.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst2.0 b/bin/sh/tests/expansion/cmdsubst2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst2.0 rename to bin/sh/tests/expansion/cmdsubst2.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst3.0 b/bin/sh/tests/expansion/cmdsubst3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst3.0 rename to bin/sh/tests/expansion/cmdsubst3.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst4.0 b/bin/sh/tests/expansion/cmdsubst4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst4.0 rename to bin/sh/tests/expansion/cmdsubst4.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst5.0 b/bin/sh/tests/expansion/cmdsubst5.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst5.0 rename to bin/sh/tests/expansion/cmdsubst5.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst6.0 b/bin/sh/tests/expansion/cmdsubst6.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst6.0 rename to bin/sh/tests/expansion/cmdsubst6.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst7.0 b/bin/sh/tests/expansion/cmdsubst7.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst7.0 rename to bin/sh/tests/expansion/cmdsubst7.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst8.0 b/bin/sh/tests/expansion/cmdsubst8.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst8.0 rename to bin/sh/tests/expansion/cmdsubst8.0 diff --git a/tools/regression/bin/sh/expansion/cmdsubst9.0 b/bin/sh/tests/expansion/cmdsubst9.0 similarity index 100% rename from tools/regression/bin/sh/expansion/cmdsubst9.0 rename to bin/sh/tests/expansion/cmdsubst9.0 diff --git a/tools/regression/bin/sh/expansion/export1.0 b/bin/sh/tests/expansion/export1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/export1.0 rename to bin/sh/tests/expansion/export1.0 diff --git a/tools/regression/bin/sh/expansion/export2.0 b/bin/sh/tests/expansion/export2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/export2.0 rename to bin/sh/tests/expansion/export2.0 diff --git a/tools/regression/bin/sh/expansion/export3.0 b/bin/sh/tests/expansion/export3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/export3.0 rename to bin/sh/tests/expansion/export3.0 diff --git a/tools/regression/bin/sh/expansion/heredoc1.0 b/bin/sh/tests/expansion/heredoc1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/heredoc1.0 rename to bin/sh/tests/expansion/heredoc1.0 diff --git a/tools/regression/bin/sh/expansion/heredoc2.0 b/bin/sh/tests/expansion/heredoc2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/heredoc2.0 rename to bin/sh/tests/expansion/heredoc2.0 diff --git a/tools/regression/bin/sh/expansion/ifs1.0 b/bin/sh/tests/expansion/ifs1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/ifs1.0 rename to bin/sh/tests/expansion/ifs1.0 diff --git a/tools/regression/bin/sh/expansion/ifs2.0 b/bin/sh/tests/expansion/ifs2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/ifs2.0 rename to bin/sh/tests/expansion/ifs2.0 diff --git a/tools/regression/bin/sh/expansion/ifs3.0 b/bin/sh/tests/expansion/ifs3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/ifs3.0 rename to bin/sh/tests/expansion/ifs3.0 diff --git a/tools/regression/bin/sh/expansion/ifs4.0 b/bin/sh/tests/expansion/ifs4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/ifs4.0 rename to bin/sh/tests/expansion/ifs4.0 diff --git a/tools/regression/bin/sh/expansion/length1.0 b/bin/sh/tests/expansion/length1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length1.0 rename to bin/sh/tests/expansion/length1.0 diff --git a/tools/regression/bin/sh/expansion/length2.0 b/bin/sh/tests/expansion/length2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length2.0 rename to bin/sh/tests/expansion/length2.0 diff --git a/tools/regression/bin/sh/expansion/length3.0 b/bin/sh/tests/expansion/length3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length3.0 rename to bin/sh/tests/expansion/length3.0 diff --git a/tools/regression/bin/sh/expansion/length4.0 b/bin/sh/tests/expansion/length4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length4.0 rename to bin/sh/tests/expansion/length4.0 diff --git a/tools/regression/bin/sh/expansion/length5.0 b/bin/sh/tests/expansion/length5.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length5.0 rename to bin/sh/tests/expansion/length5.0 diff --git a/tools/regression/bin/sh/expansion/length6.0 b/bin/sh/tests/expansion/length6.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length6.0 rename to bin/sh/tests/expansion/length6.0 diff --git a/tools/regression/bin/sh/expansion/length7.0 b/bin/sh/tests/expansion/length7.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length7.0 rename to bin/sh/tests/expansion/length7.0 diff --git a/tools/regression/bin/sh/expansion/length8.0 b/bin/sh/tests/expansion/length8.0 similarity index 100% rename from tools/regression/bin/sh/expansion/length8.0 rename to bin/sh/tests/expansion/length8.0 diff --git a/tools/regression/bin/sh/expansion/local1.0 b/bin/sh/tests/expansion/local1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/local1.0 rename to bin/sh/tests/expansion/local1.0 diff --git a/tools/regression/bin/sh/expansion/local2.0 b/bin/sh/tests/expansion/local2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/local2.0 rename to bin/sh/tests/expansion/local2.0 diff --git a/tools/regression/bin/sh/expansion/pathname1.0 b/bin/sh/tests/expansion/pathname1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/pathname1.0 rename to bin/sh/tests/expansion/pathname1.0 diff --git a/tools/regression/bin/sh/expansion/pathname2.0 b/bin/sh/tests/expansion/pathname2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/pathname2.0 rename to bin/sh/tests/expansion/pathname2.0 diff --git a/tools/regression/bin/sh/expansion/pathname3.0 b/bin/sh/tests/expansion/pathname3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/pathname3.0 rename to bin/sh/tests/expansion/pathname3.0 diff --git a/tools/regression/bin/sh/expansion/pathname4.0 b/bin/sh/tests/expansion/pathname4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/pathname4.0 rename to bin/sh/tests/expansion/pathname4.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus1.0 b/bin/sh/tests/expansion/plus-minus1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus1.0 rename to bin/sh/tests/expansion/plus-minus1.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus2.0 b/bin/sh/tests/expansion/plus-minus2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus2.0 rename to bin/sh/tests/expansion/plus-minus2.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus3.0 b/bin/sh/tests/expansion/plus-minus3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus3.0 rename to bin/sh/tests/expansion/plus-minus3.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus4.0 b/bin/sh/tests/expansion/plus-minus4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus4.0 rename to bin/sh/tests/expansion/plus-minus4.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus5.0 b/bin/sh/tests/expansion/plus-minus5.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus5.0 rename to bin/sh/tests/expansion/plus-minus5.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus6.0 b/bin/sh/tests/expansion/plus-minus6.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus6.0 rename to bin/sh/tests/expansion/plus-minus6.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus7.0 b/bin/sh/tests/expansion/plus-minus7.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus7.0 rename to bin/sh/tests/expansion/plus-minus7.0 diff --git a/tools/regression/bin/sh/expansion/plus-minus8.0 b/bin/sh/tests/expansion/plus-minus8.0 similarity index 100% rename from tools/regression/bin/sh/expansion/plus-minus8.0 rename to bin/sh/tests/expansion/plus-minus8.0 diff --git a/tools/regression/bin/sh/expansion/question1.0 b/bin/sh/tests/expansion/question1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/question1.0 rename to bin/sh/tests/expansion/question1.0 diff --git a/tools/regression/bin/sh/expansion/readonly1.0 b/bin/sh/tests/expansion/readonly1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/readonly1.0 rename to bin/sh/tests/expansion/readonly1.0 diff --git a/tools/regression/bin/sh/expansion/set-u1.0 b/bin/sh/tests/expansion/set-u1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/set-u1.0 rename to bin/sh/tests/expansion/set-u1.0 diff --git a/tools/regression/bin/sh/expansion/set-u2.0 b/bin/sh/tests/expansion/set-u2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/set-u2.0 rename to bin/sh/tests/expansion/set-u2.0 diff --git a/tools/regression/bin/sh/expansion/set-u3.0 b/bin/sh/tests/expansion/set-u3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/set-u3.0 rename to bin/sh/tests/expansion/set-u3.0 diff --git a/tools/regression/bin/sh/expansion/tilde1.0 b/bin/sh/tests/expansion/tilde1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/tilde1.0 rename to bin/sh/tests/expansion/tilde1.0 diff --git a/tools/regression/bin/sh/expansion/tilde2.0 b/bin/sh/tests/expansion/tilde2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/tilde2.0 rename to bin/sh/tests/expansion/tilde2.0 diff --git a/tools/regression/bin/sh/expansion/trim1.0 b/bin/sh/tests/expansion/trim1.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim1.0 rename to bin/sh/tests/expansion/trim1.0 diff --git a/tools/regression/bin/sh/expansion/trim2.0 b/bin/sh/tests/expansion/trim2.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim2.0 rename to bin/sh/tests/expansion/trim2.0 diff --git a/tools/regression/bin/sh/expansion/trim3.0 b/bin/sh/tests/expansion/trim3.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim3.0 rename to bin/sh/tests/expansion/trim3.0 diff --git a/tools/regression/bin/sh/expansion/trim4.0 b/bin/sh/tests/expansion/trim4.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim4.0 rename to bin/sh/tests/expansion/trim4.0 diff --git a/tools/regression/bin/sh/expansion/trim5.0 b/bin/sh/tests/expansion/trim5.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim5.0 rename to bin/sh/tests/expansion/trim5.0 diff --git a/tools/regression/bin/sh/expansion/trim6.0 b/bin/sh/tests/expansion/trim6.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim6.0 rename to bin/sh/tests/expansion/trim6.0 diff --git a/tools/regression/bin/sh/expansion/trim7.0 b/bin/sh/tests/expansion/trim7.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim7.0 rename to bin/sh/tests/expansion/trim7.0 diff --git a/tools/regression/bin/sh/expansion/trim8.0 b/bin/sh/tests/expansion/trim8.0 similarity index 100% rename from tools/regression/bin/sh/expansion/trim8.0 rename to bin/sh/tests/expansion/trim8.0 diff --git a/tools/regression/bin/sh/regress.sh b/bin/sh/tests/legacy_test.sh similarity index 64% rename from tools/regression/bin/sh/regress.sh rename to bin/sh/tests/legacy_test.sh index 60e580589..d43f5ddd8 100644 --- a/tools/regression/bin/sh/regress.sh +++ b/bin/sh/tests/legacy_test.sh @@ -1,10 +1,13 @@ # $FreeBSD$ -if [ -z "${SH}" ]; then - echo '${SH} is not set, please correct and re-run.' - exit 1 -fi -export SH=${SH} +: ${SH:="__SH__"} +export SH + +# TODO(jmmv): The Kyua TAP interface should be passing us the value of +# "srcdir" as an environment variable, just as it does with the ATF +# interface in the form of a configuration variable. For now, just try +# to guess this. +: ${TESTS_DATA:=$(dirname ${0})} COUNTER=1 @@ -17,6 +20,7 @@ do_test() { rm tmp.stdout tmp.stderr return fi + sed -I '' -e "s|^${TESTS_DATA}|.|" tmp.stderr for i in stdout stderr; do if [ -f ${1}.${i} ]; then if ! cmp -s tmp.${i} ${1}.${i}; then @@ -34,7 +38,7 @@ do_test() { rm tmp.stdout tmp.stderr } -TESTS=$(find -Es . -regex ".*\.[0-9]+") +TESTS=$(find -Es ${TESTS_DATA} -regex ".*\.[0-9]+") printf "1..%d\n" $(echo ${TESTS} | wc -w) for i in ${TESTS} ; do diff --git a/bin/sh/tests/parameters/Makefile b/bin/sh/tests/parameters/Makefile new file mode 100644 index 000000000..fafc059ec --- /dev/null +++ b/bin/sh/tests/parameters/Makefile @@ -0,0 +1,19 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/parameters +KYUAFILE= no + +FILES= env1.0 +FILES+= exitstatus1.0 +FILES+= mail1.0 +FILES+= mail2.0 +FILES+= optind1.0 +FILES+= optind2.0 +FILES+= positional1.0 +FILES+= positional2.0 +FILES+= pwd1.0 +FILES+= pwd2.0 + +.include diff --git a/tools/regression/bin/sh/parameters/env1.0 b/bin/sh/tests/parameters/env1.0 similarity index 100% rename from tools/regression/bin/sh/parameters/env1.0 rename to bin/sh/tests/parameters/env1.0 diff --git a/tools/regression/bin/sh/parameters/exitstatus1.0 b/bin/sh/tests/parameters/exitstatus1.0 similarity index 100% rename from tools/regression/bin/sh/parameters/exitstatus1.0 rename to bin/sh/tests/parameters/exitstatus1.0 diff --git a/tools/regression/bin/sh/parameters/mail1.0 b/bin/sh/tests/parameters/mail1.0 similarity index 100% rename from tools/regression/bin/sh/parameters/mail1.0 rename to bin/sh/tests/parameters/mail1.0 diff --git a/tools/regression/bin/sh/parameters/mail2.0 b/bin/sh/tests/parameters/mail2.0 similarity index 100% rename from tools/regression/bin/sh/parameters/mail2.0 rename to bin/sh/tests/parameters/mail2.0 diff --git a/tools/regression/bin/sh/parameters/optind1.0 b/bin/sh/tests/parameters/optind1.0 similarity index 100% rename from tools/regression/bin/sh/parameters/optind1.0 rename to bin/sh/tests/parameters/optind1.0 diff --git a/bin/sh/tests/parameters/optind2.0 b/bin/sh/tests/parameters/optind2.0 new file mode 100644 index 000000000..a7689f684 --- /dev/null +++ b/bin/sh/tests/parameters/optind2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(OPTIND=42 ${SH} -c 'printf %s "$OPTIND"')" = 1 ] diff --git a/tools/regression/bin/sh/parameters/positional1.0 b/bin/sh/tests/parameters/positional1.0 similarity index 100% rename from tools/regression/bin/sh/parameters/positional1.0 rename to bin/sh/tests/parameters/positional1.0 diff --git a/tools/regression/bin/sh/parameters/positional2.0 b/bin/sh/tests/parameters/positional2.0 similarity index 100% rename from tools/regression/bin/sh/parameters/positional2.0 rename to bin/sh/tests/parameters/positional2.0 diff --git a/tools/regression/bin/sh/parameters/pwd1.0 b/bin/sh/tests/parameters/pwd1.0 similarity index 100% rename from tools/regression/bin/sh/parameters/pwd1.0 rename to bin/sh/tests/parameters/pwd1.0 diff --git a/tools/regression/bin/sh/parameters/pwd2.0 b/bin/sh/tests/parameters/pwd2.0 similarity index 100% rename from tools/regression/bin/sh/parameters/pwd2.0 rename to bin/sh/tests/parameters/pwd2.0 diff --git a/bin/sh/tests/parser/Makefile b/bin/sh/tests/parser/Makefile new file mode 100644 index 000000000..03650b1d2 --- /dev/null +++ b/bin/sh/tests/parser/Makefile @@ -0,0 +1,64 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/parser +KYUAFILE= no + +FILES= alias1.0 +FILES+= alias2.0 +FILES+= alias3.0 +FILES+= alias4.0 +FILES+= alias5.0 +FILES+= alias6.0 +FILES+= alias7.0 +FILES+= alias8.0 +FILES+= alias9.0 +FILES+= alias10.0 +FILES+= alias11.0 +FILES+= alias12.0 +FILES+= alias13.0 +FILES+= alias14.0 +FILES+= alias15.0 alias15.0.stdout +FILES+= and-pipe-not.0 +FILES+= case1.0 +FILES+= case2.0 +FILES+= dollar-quote1.0 +FILES+= dollar-quote2.0 +FILES+= dollar-quote3.0 +FILES+= dollar-quote4.0 +FILES+= dollar-quote5.0 +FILES+= dollar-quote6.0 +FILES+= dollar-quote7.0 +FILES+= dollar-quote8.0 +FILES+= dollar-quote9.0 +FILES+= dollar-quote10.0 +FILES+= dollar-quote11.0 +FILES+= empty-braces1.0 +FILES+= empty-cmd1.0 +FILES+= for1.0 +FILES+= for2.0 +FILES+= func1.0 +FILES+= func2.0 +FILES+= func3.0 +FILES+= heredoc1.0 +FILES+= heredoc2.0 +FILES+= heredoc3.0 +FILES+= heredoc4.0 +FILES+= heredoc5.0 +FILES+= heredoc6.0 +FILES+= heredoc7.0 +FILES+= heredoc8.0 +FILES+= heredoc9.0 +FILES+= heredoc10.0 +FILES+= heredoc11.0 +FILES+= no-space1.0 +FILES+= no-space2.0 +FILES+= only-redir1.0 +FILES+= only-redir2.0 +FILES+= only-redir3.0 +FILES+= only-redir4.0 +FILES+= pipe-not1.0 +FILES+= var-assign1.0 + +.include diff --git a/tools/regression/bin/sh/parser/alias1.0 b/bin/sh/tests/parser/alias1.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias1.0 rename to bin/sh/tests/parser/alias1.0 diff --git a/tools/regression/bin/sh/parser/alias10.0 b/bin/sh/tests/parser/alias10.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias10.0 rename to bin/sh/tests/parser/alias10.0 diff --git a/bin/sh/tests/parser/alias11.0 b/bin/sh/tests/parser/alias11.0 new file mode 100644 index 000000000..522264ff8 --- /dev/null +++ b/bin/sh/tests/parser/alias11.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +alias alias0=alias1 +alias alias1=exit +eval 'alias0 0' +exit 3 diff --git a/bin/sh/tests/parser/alias12.0 b/bin/sh/tests/parser/alias12.0 new file mode 100644 index 000000000..2e4379155 --- /dev/null +++ b/bin/sh/tests/parser/alias12.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +unalias -a +alias alias0=command +alias true='echo bad' +eval 'alias0 true' diff --git a/bin/sh/tests/parser/alias13.0 b/bin/sh/tests/parser/alias13.0 new file mode 100644 index 000000000..53b949dc2 --- /dev/null +++ b/bin/sh/tests/parser/alias13.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +unalias -a +alias command=command +alias true='echo bad' +eval 'command true' diff --git a/bin/sh/tests/parser/alias14.0 b/bin/sh/tests/parser/alias14.0 new file mode 100644 index 000000000..1b92fc07d --- /dev/null +++ b/bin/sh/tests/parser/alias14.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +alias command='command ' +alias alias0=exit +eval 'command alias0 0' +exit 3 diff --git a/bin/sh/tests/parser/alias15.0 b/bin/sh/tests/parser/alias15.0 new file mode 100644 index 000000000..f0fbadbb2 --- /dev/null +++ b/bin/sh/tests/parser/alias15.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +f_echoanddo() { + printf '%s\n' "$*" + "$@" +} + +alias echoanddo='f_echoanddo ' +alias alias0='echo test2' +eval 'echoanddo echo test1' +eval 'echoanddo alias0' +exit 0 diff --git a/bin/sh/tests/parser/alias15.0.stdout b/bin/sh/tests/parser/alias15.0.stdout new file mode 100644 index 000000000..6dd179c06 --- /dev/null +++ b/bin/sh/tests/parser/alias15.0.stdout @@ -0,0 +1,4 @@ +echo test1 +test1 +echo test2 +test2 diff --git a/tools/regression/bin/sh/parser/alias2.0 b/bin/sh/tests/parser/alias2.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias2.0 rename to bin/sh/tests/parser/alias2.0 diff --git a/tools/regression/bin/sh/parser/alias3.0 b/bin/sh/tests/parser/alias3.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias3.0 rename to bin/sh/tests/parser/alias3.0 diff --git a/tools/regression/bin/sh/parser/alias4.0 b/bin/sh/tests/parser/alias4.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias4.0 rename to bin/sh/tests/parser/alias4.0 diff --git a/tools/regression/bin/sh/parser/alias5.0 b/bin/sh/tests/parser/alias5.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias5.0 rename to bin/sh/tests/parser/alias5.0 diff --git a/tools/regression/bin/sh/parser/alias6.0 b/bin/sh/tests/parser/alias6.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias6.0 rename to bin/sh/tests/parser/alias6.0 diff --git a/tools/regression/bin/sh/parser/alias7.0 b/bin/sh/tests/parser/alias7.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias7.0 rename to bin/sh/tests/parser/alias7.0 diff --git a/tools/regression/bin/sh/parser/alias8.0 b/bin/sh/tests/parser/alias8.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias8.0 rename to bin/sh/tests/parser/alias8.0 diff --git a/tools/regression/bin/sh/parser/alias9.0 b/bin/sh/tests/parser/alias9.0 similarity index 100% rename from tools/regression/bin/sh/parser/alias9.0 rename to bin/sh/tests/parser/alias9.0 diff --git a/tools/regression/bin/sh/parser/and-pipe-not.0 b/bin/sh/tests/parser/and-pipe-not.0 similarity index 100% rename from tools/regression/bin/sh/parser/and-pipe-not.0 rename to bin/sh/tests/parser/and-pipe-not.0 diff --git a/tools/regression/bin/sh/parser/case1.0 b/bin/sh/tests/parser/case1.0 similarity index 100% rename from tools/regression/bin/sh/parser/case1.0 rename to bin/sh/tests/parser/case1.0 diff --git a/tools/regression/bin/sh/parser/case2.0 b/bin/sh/tests/parser/case2.0 similarity index 100% rename from tools/regression/bin/sh/parser/case2.0 rename to bin/sh/tests/parser/case2.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote1.0 b/bin/sh/tests/parser/dollar-quote1.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote1.0 rename to bin/sh/tests/parser/dollar-quote1.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote10.0 b/bin/sh/tests/parser/dollar-quote10.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote10.0 rename to bin/sh/tests/parser/dollar-quote10.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote11.0 b/bin/sh/tests/parser/dollar-quote11.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote11.0 rename to bin/sh/tests/parser/dollar-quote11.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote2.0 b/bin/sh/tests/parser/dollar-quote2.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote2.0 rename to bin/sh/tests/parser/dollar-quote2.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote3.0 b/bin/sh/tests/parser/dollar-quote3.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote3.0 rename to bin/sh/tests/parser/dollar-quote3.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote4.0 b/bin/sh/tests/parser/dollar-quote4.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote4.0 rename to bin/sh/tests/parser/dollar-quote4.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote5.0 b/bin/sh/tests/parser/dollar-quote5.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote5.0 rename to bin/sh/tests/parser/dollar-quote5.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote6.0 b/bin/sh/tests/parser/dollar-quote6.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote6.0 rename to bin/sh/tests/parser/dollar-quote6.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote7.0 b/bin/sh/tests/parser/dollar-quote7.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote7.0 rename to bin/sh/tests/parser/dollar-quote7.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote8.0 b/bin/sh/tests/parser/dollar-quote8.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote8.0 rename to bin/sh/tests/parser/dollar-quote8.0 diff --git a/tools/regression/bin/sh/parser/dollar-quote9.0 b/bin/sh/tests/parser/dollar-quote9.0 similarity index 100% rename from tools/regression/bin/sh/parser/dollar-quote9.0 rename to bin/sh/tests/parser/dollar-quote9.0 diff --git a/tools/regression/bin/sh/parser/empty-braces1.0 b/bin/sh/tests/parser/empty-braces1.0 similarity index 100% rename from tools/regression/bin/sh/parser/empty-braces1.0 rename to bin/sh/tests/parser/empty-braces1.0 diff --git a/tools/regression/bin/sh/parser/empty-cmd1.0 b/bin/sh/tests/parser/empty-cmd1.0 similarity index 100% rename from tools/regression/bin/sh/parser/empty-cmd1.0 rename to bin/sh/tests/parser/empty-cmd1.0 diff --git a/tools/regression/bin/sh/parser/for1.0 b/bin/sh/tests/parser/for1.0 similarity index 100% rename from tools/regression/bin/sh/parser/for1.0 rename to bin/sh/tests/parser/for1.0 diff --git a/tools/regression/bin/sh/parser/for2.0 b/bin/sh/tests/parser/for2.0 similarity index 100% rename from tools/regression/bin/sh/parser/for2.0 rename to bin/sh/tests/parser/for2.0 diff --git a/tools/regression/bin/sh/parser/func1.0 b/bin/sh/tests/parser/func1.0 similarity index 100% rename from tools/regression/bin/sh/parser/func1.0 rename to bin/sh/tests/parser/func1.0 diff --git a/tools/regression/bin/sh/parser/func2.0 b/bin/sh/tests/parser/func2.0 similarity index 100% rename from tools/regression/bin/sh/parser/func2.0 rename to bin/sh/tests/parser/func2.0 diff --git a/tools/regression/bin/sh/parser/func3.0 b/bin/sh/tests/parser/func3.0 similarity index 100% rename from tools/regression/bin/sh/parser/func3.0 rename to bin/sh/tests/parser/func3.0 diff --git a/tools/regression/bin/sh/parser/heredoc1.0 b/bin/sh/tests/parser/heredoc1.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc1.0 rename to bin/sh/tests/parser/heredoc1.0 diff --git a/tools/regression/bin/sh/parser/heredoc10.0 b/bin/sh/tests/parser/heredoc10.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc10.0 rename to bin/sh/tests/parser/heredoc10.0 diff --git a/tools/regression/bin/sh/parser/heredoc11.0 b/bin/sh/tests/parser/heredoc11.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc11.0 rename to bin/sh/tests/parser/heredoc11.0 diff --git a/tools/regression/bin/sh/parser/heredoc2.0 b/bin/sh/tests/parser/heredoc2.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc2.0 rename to bin/sh/tests/parser/heredoc2.0 diff --git a/tools/regression/bin/sh/parser/heredoc3.0 b/bin/sh/tests/parser/heredoc3.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc3.0 rename to bin/sh/tests/parser/heredoc3.0 diff --git a/tools/regression/bin/sh/parser/heredoc4.0 b/bin/sh/tests/parser/heredoc4.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc4.0 rename to bin/sh/tests/parser/heredoc4.0 diff --git a/tools/regression/bin/sh/parser/heredoc5.0 b/bin/sh/tests/parser/heredoc5.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc5.0 rename to bin/sh/tests/parser/heredoc5.0 diff --git a/tools/regression/bin/sh/parser/heredoc6.0 b/bin/sh/tests/parser/heredoc6.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc6.0 rename to bin/sh/tests/parser/heredoc6.0 diff --git a/tools/regression/bin/sh/parser/heredoc7.0 b/bin/sh/tests/parser/heredoc7.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc7.0 rename to bin/sh/tests/parser/heredoc7.0 diff --git a/tools/regression/bin/sh/parser/heredoc8.0 b/bin/sh/tests/parser/heredoc8.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc8.0 rename to bin/sh/tests/parser/heredoc8.0 diff --git a/tools/regression/bin/sh/parser/heredoc9.0 b/bin/sh/tests/parser/heredoc9.0 similarity index 100% rename from tools/regression/bin/sh/parser/heredoc9.0 rename to bin/sh/tests/parser/heredoc9.0 diff --git a/tools/regression/bin/sh/parser/no-space1.0 b/bin/sh/tests/parser/no-space1.0 similarity index 100% rename from tools/regression/bin/sh/parser/no-space1.0 rename to bin/sh/tests/parser/no-space1.0 diff --git a/tools/regression/bin/sh/parser/no-space2.0 b/bin/sh/tests/parser/no-space2.0 similarity index 100% rename from tools/regression/bin/sh/parser/no-space2.0 rename to bin/sh/tests/parser/no-space2.0 diff --git a/tools/regression/bin/sh/parser/only-redir1.0 b/bin/sh/tests/parser/only-redir1.0 similarity index 100% rename from tools/regression/bin/sh/parser/only-redir1.0 rename to bin/sh/tests/parser/only-redir1.0 diff --git a/tools/regression/bin/sh/parser/only-redir2.0 b/bin/sh/tests/parser/only-redir2.0 similarity index 100% rename from tools/regression/bin/sh/parser/only-redir2.0 rename to bin/sh/tests/parser/only-redir2.0 diff --git a/tools/regression/bin/sh/parser/only-redir3.0 b/bin/sh/tests/parser/only-redir3.0 similarity index 100% rename from tools/regression/bin/sh/parser/only-redir3.0 rename to bin/sh/tests/parser/only-redir3.0 diff --git a/tools/regression/bin/sh/parser/only-redir4.0 b/bin/sh/tests/parser/only-redir4.0 similarity index 100% rename from tools/regression/bin/sh/parser/only-redir4.0 rename to bin/sh/tests/parser/only-redir4.0 diff --git a/tools/regression/bin/sh/parser/pipe-not1.0 b/bin/sh/tests/parser/pipe-not1.0 similarity index 100% rename from tools/regression/bin/sh/parser/pipe-not1.0 rename to bin/sh/tests/parser/pipe-not1.0 diff --git a/bin/sh/tests/parser/var-assign1.0 b/bin/sh/tests/parser/var-assign1.0 new file mode 100644 index 000000000..1fd3b26f8 --- /dev/null +++ b/bin/sh/tests/parser/var-assign1.0 @@ -0,0 +1,19 @@ +# $FreeBSD$ +# In a variable assignment, both the name and the equals sign must be entirely +# unquoted. Therefore, there is only one assignment below; the other words +# containing equals signs are command words. + +abc=0 +\abc=1 2>/dev/null +a\bc=2 2>/dev/null +abc\=3 2>/dev/null +a\bc\=4 2>/dev/null +'abc'=5 2>/dev/null +a'b'c=6 2>/dev/null +abc'='7 2>/dev/null +'abc=8' 2>/dev/null +"abc"=9 2>/dev/null +a"b"c=10 2>/dev/null +abc"="11 2>/dev/null +"abc=12" 2>/dev/null +[ "$abc" = 0 ] diff --git a/bin/sh/tests/set-e/Makefile b/bin/sh/tests/set-e/Makefile new file mode 100644 index 000000000..55d79174f --- /dev/null +++ b/bin/sh/tests/set-e/Makefile @@ -0,0 +1,44 @@ +# $FreeBSD$ + +.include + +FILESDIR= ${TESTSBASE}/bin/sh/set-e +KYUAFILE= no + +FILES= and1.0 +FILES+= and2.1 +FILES+= and3.0 +FILES+= and4.0 +FILES+= background1.0 +FILES+= cmd1.0 +FILES+= cmd2.1 +FILES+= elif1.0 +FILES+= elif2.0 +FILES+= eval1.0 +FILES+= eval2.1 +FILES+= for1.0 +FILES+= func1.0 +FILES+= func2.1 +FILES+= if1.0 +FILES+= if2.0 +FILES+= if3.0 +FILES+= not1.0 +FILES+= not2.0 +FILES+= or1.0 +FILES+= or2.0 +FILES+= or3.1 +FILES+= pipe1.1 +FILES+= pipe2.0 +FILES+= return1.0 +FILES+= semi1.1 +FILES+= semi2.1 +FILES+= subshell1.0 +FILES+= subshell2.1 +FILES+= until1.0 +FILES+= until2.0 +FILES+= until3.0 +FILES+= while1.0 +FILES+= while2.0 +FILES+= while3.0 + +.include diff --git a/tools/regression/bin/sh/set-e/and1.0 b/bin/sh/tests/set-e/and1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/and1.0 rename to bin/sh/tests/set-e/and1.0 diff --git a/tools/regression/bin/sh/set-e/and2.1 b/bin/sh/tests/set-e/and2.1 similarity index 100% rename from tools/regression/bin/sh/set-e/and2.1 rename to bin/sh/tests/set-e/and2.1 diff --git a/tools/regression/bin/sh/set-e/and3.0 b/bin/sh/tests/set-e/and3.0 similarity index 100% rename from tools/regression/bin/sh/set-e/and3.0 rename to bin/sh/tests/set-e/and3.0 diff --git a/tools/regression/bin/sh/set-e/and4.0 b/bin/sh/tests/set-e/and4.0 similarity index 100% rename from tools/regression/bin/sh/set-e/and4.0 rename to bin/sh/tests/set-e/and4.0 diff --git a/tools/regression/bin/sh/set-e/background1.0 b/bin/sh/tests/set-e/background1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/background1.0 rename to bin/sh/tests/set-e/background1.0 diff --git a/tools/regression/bin/sh/set-e/cmd1.0 b/bin/sh/tests/set-e/cmd1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/cmd1.0 rename to bin/sh/tests/set-e/cmd1.0 diff --git a/tools/regression/bin/sh/set-e/cmd2.1 b/bin/sh/tests/set-e/cmd2.1 similarity index 100% rename from tools/regression/bin/sh/set-e/cmd2.1 rename to bin/sh/tests/set-e/cmd2.1 diff --git a/tools/regression/bin/sh/set-e/elif1.0 b/bin/sh/tests/set-e/elif1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/elif1.0 rename to bin/sh/tests/set-e/elif1.0 diff --git a/tools/regression/bin/sh/set-e/elif2.0 b/bin/sh/tests/set-e/elif2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/elif2.0 rename to bin/sh/tests/set-e/elif2.0 diff --git a/tools/regression/bin/sh/set-e/eval1.0 b/bin/sh/tests/set-e/eval1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/eval1.0 rename to bin/sh/tests/set-e/eval1.0 diff --git a/tools/regression/bin/sh/set-e/eval2.1 b/bin/sh/tests/set-e/eval2.1 similarity index 100% rename from tools/regression/bin/sh/set-e/eval2.1 rename to bin/sh/tests/set-e/eval2.1 diff --git a/tools/regression/bin/sh/set-e/for1.0 b/bin/sh/tests/set-e/for1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/for1.0 rename to bin/sh/tests/set-e/for1.0 diff --git a/tools/regression/bin/sh/set-e/func1.0 b/bin/sh/tests/set-e/func1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/func1.0 rename to bin/sh/tests/set-e/func1.0 diff --git a/tools/regression/bin/sh/set-e/func2.1 b/bin/sh/tests/set-e/func2.1 similarity index 100% rename from tools/regression/bin/sh/set-e/func2.1 rename to bin/sh/tests/set-e/func2.1 diff --git a/tools/regression/bin/sh/set-e/if1.0 b/bin/sh/tests/set-e/if1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/if1.0 rename to bin/sh/tests/set-e/if1.0 diff --git a/tools/regression/bin/sh/set-e/if2.0 b/bin/sh/tests/set-e/if2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/if2.0 rename to bin/sh/tests/set-e/if2.0 diff --git a/tools/regression/bin/sh/set-e/if3.0 b/bin/sh/tests/set-e/if3.0 similarity index 100% rename from tools/regression/bin/sh/set-e/if3.0 rename to bin/sh/tests/set-e/if3.0 diff --git a/tools/regression/bin/sh/set-e/not1.0 b/bin/sh/tests/set-e/not1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/not1.0 rename to bin/sh/tests/set-e/not1.0 diff --git a/tools/regression/bin/sh/set-e/not2.0 b/bin/sh/tests/set-e/not2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/not2.0 rename to bin/sh/tests/set-e/not2.0 diff --git a/tools/regression/bin/sh/set-e/or1.0 b/bin/sh/tests/set-e/or1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/or1.0 rename to bin/sh/tests/set-e/or1.0 diff --git a/tools/regression/bin/sh/set-e/or2.0 b/bin/sh/tests/set-e/or2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/or2.0 rename to bin/sh/tests/set-e/or2.0 diff --git a/tools/regression/bin/sh/set-e/or3.1 b/bin/sh/tests/set-e/or3.1 similarity index 100% rename from tools/regression/bin/sh/set-e/or3.1 rename to bin/sh/tests/set-e/or3.1 diff --git a/tools/regression/bin/sh/set-e/pipe1.1 b/bin/sh/tests/set-e/pipe1.1 similarity index 100% rename from tools/regression/bin/sh/set-e/pipe1.1 rename to bin/sh/tests/set-e/pipe1.1 diff --git a/tools/regression/bin/sh/set-e/pipe2.0 b/bin/sh/tests/set-e/pipe2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/pipe2.0 rename to bin/sh/tests/set-e/pipe2.0 diff --git a/tools/regression/bin/sh/set-e/return1.0 b/bin/sh/tests/set-e/return1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/return1.0 rename to bin/sh/tests/set-e/return1.0 diff --git a/tools/regression/bin/sh/set-e/semi1.1 b/bin/sh/tests/set-e/semi1.1 similarity index 100% rename from tools/regression/bin/sh/set-e/semi1.1 rename to bin/sh/tests/set-e/semi1.1 diff --git a/tools/regression/bin/sh/set-e/semi2.1 b/bin/sh/tests/set-e/semi2.1 similarity index 100% rename from tools/regression/bin/sh/set-e/semi2.1 rename to bin/sh/tests/set-e/semi2.1 diff --git a/tools/regression/bin/sh/set-e/subshell1.0 b/bin/sh/tests/set-e/subshell1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/subshell1.0 rename to bin/sh/tests/set-e/subshell1.0 diff --git a/tools/regression/bin/sh/set-e/subshell2.1 b/bin/sh/tests/set-e/subshell2.1 similarity index 100% rename from tools/regression/bin/sh/set-e/subshell2.1 rename to bin/sh/tests/set-e/subshell2.1 diff --git a/tools/regression/bin/sh/set-e/until1.0 b/bin/sh/tests/set-e/until1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/until1.0 rename to bin/sh/tests/set-e/until1.0 diff --git a/tools/regression/bin/sh/set-e/until2.0 b/bin/sh/tests/set-e/until2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/until2.0 rename to bin/sh/tests/set-e/until2.0 diff --git a/tools/regression/bin/sh/set-e/until3.0 b/bin/sh/tests/set-e/until3.0 similarity index 100% rename from tools/regression/bin/sh/set-e/until3.0 rename to bin/sh/tests/set-e/until3.0 diff --git a/tools/regression/bin/sh/set-e/while1.0 b/bin/sh/tests/set-e/while1.0 similarity index 100% rename from tools/regression/bin/sh/set-e/while1.0 rename to bin/sh/tests/set-e/while1.0 diff --git a/tools/regression/bin/sh/set-e/while2.0 b/bin/sh/tests/set-e/while2.0 similarity index 100% rename from tools/regression/bin/sh/set-e/while2.0 rename to bin/sh/tests/set-e/while2.0 diff --git a/tools/regression/bin/sh/set-e/while3.0 b/bin/sh/tests/set-e/while3.0 similarity index 100% rename from tools/regression/bin/sh/set-e/while3.0 rename to bin/sh/tests/set-e/while3.0 diff --git a/bin/sh/trap.c b/bin/sh/trap.c index 3fc85668c..e5a2a9135 100644 --- a/bin/sh/trap.c +++ b/bin/sh/trap.c @@ -80,7 +80,6 @@ static char *volatile trap[NSIG]; /* trap handler commands */ static volatile sig_atomic_t gotsig[NSIG]; /* indicates specified signal received */ static int ignore_sigchld; /* Used while handling SIGCHLD traps. */ -volatile sig_atomic_t gotwinch; static int last_trapsig; static int exiting; /* exitshell() has been called */ @@ -292,12 +291,6 @@ setsignal(int signo) if (rootshell && mflag) action = S_IGN; break; -#endif -#ifndef NO_HISTORY - case SIGWINCH: - if (rootshell && iflag) - action = S_CATCH; - break; #endif } } @@ -362,10 +355,12 @@ void ignoresig(int signo) { + if (sigmode[signo] == 0) + setsignal(signo); if (sigmode[signo] != S_IGN && sigmode[signo] != S_HARD_IGN) { signal(signo, SIG_IGN); + sigmode[signo] = S_IGN; } - sigmode[signo] = S_HARD_IGN; } @@ -398,11 +393,6 @@ onsig(int signo) gotsig[signo] = 1; pendingsig = signo; } - -#ifndef NO_HISTORY - if (signo == SIGWINCH) - gotwinch = 1; -#endif } @@ -488,9 +478,6 @@ setinteractive(int on) setsignal(SIGINT); setsignal(SIGQUIT); setsignal(SIGTERM); -#ifndef NO_HISTORY - setsignal(SIGWINCH); -#endif is_interactive = on; } diff --git a/bin/sh/trap.h b/bin/sh/trap.h index a9622514c..541b9b149 100644 --- a/bin/sh/trap.h +++ b/bin/sh/trap.h @@ -36,7 +36,6 @@ extern volatile sig_atomic_t pendingsig; extern volatile sig_atomic_t pendingsig_waitcmd; extern int in_dotrap; -extern volatile sig_atomic_t gotwinch; void clear_traps(void); int have_traps(void); diff --git a/bin/sh/var.c b/bin/sh/var.c index c20d03263..1fd8c777c 100644 --- a/bin/sh/var.c +++ b/bin/sh/var.c @@ -88,11 +88,9 @@ struct var vifs; struct var vmail; struct var vmpath; struct var vpath; -struct var vppid; struct var vps1; struct var vps2; struct var vps4; -struct var vvers; static struct var voptind; struct var vdisvfork; @@ -111,8 +109,6 @@ static const struct varinit varinit[] = { NULL }, { &vpath, 0, "PATH=" _PATH_DEFPATH, changepath }, - { &vppid, VUNSET, "PPID=", - NULL }, /* * vps1 depends on uid */ @@ -180,15 +176,14 @@ initvar(void) vps1.text = __DECONST(char *, geteuid() ? "PS1=$ " : "PS1=# "); vps1.flags = VSTRFIXED|VTEXTFIXED; } - if ((vppid.flags & VEXPORT) == 0) { - fmtstr(ppid, sizeof(ppid), "%d", (int)getppid()); - setvarsafe("PPID", ppid, 0); - } + fmtstr(ppid, sizeof(ppid), "%d", (int)getppid()); + setvarsafe("PPID", ppid, 0); for (envp = environ ; *envp ; envp++) { if (strchr(*envp, '=')) { setvareq(*envp, VEXPORT|VTEXTFIXED); } } + setvareq("OPTIND=1", VTEXTFIXED); } /* @@ -224,8 +219,9 @@ void setvar(const char *name, const char *val, int flags) { const char *p; - int len; - int namelen; + size_t len; + size_t namelen; + size_t vallen; char *nameeq; int isbad; @@ -244,18 +240,20 @@ setvar(const char *name, const char *val, int flags) } namelen = p - name; if (isbad) - error("%.*s: bad variable name", namelen, name); + error("%.*s: bad variable name", (int)namelen, name); len = namelen + 2; /* 2 is space for '=' and '\0' */ if (val == NULL) { flags |= VUNSET; + vallen = 0; } else { - len += strlen(val); + vallen = strlen(val); + len += vallen; } nameeq = ckmalloc(len); memcpy(nameeq, name, namelen); nameeq[namelen] = '='; if (val) - scopy(val, nameeq + namelen + 1); + memcpy(nameeq + namelen + 1, val, vallen + 1); else nameeq[namelen + 1] = '\0'; setvareq(nameeq, flags); diff --git a/bin/sh/var.h b/bin/sh/var.h index 6cdfbfec9..6ce5b24e0 100644 --- a/bin/sh/var.h +++ b/bin/sh/var.h @@ -75,7 +75,6 @@ extern struct var vifs; extern struct var vmail; extern struct var vmpath; extern struct var vpath; -extern struct var vppid; extern struct var vps1; extern struct var vps2; extern struct var vps4; diff --git a/bin/test/Makefile b/bin/test/Makefile index 7c64b4034..e9a0507f0 100644 --- a/bin/test/Makefile +++ b/bin/test/Makefile @@ -1,8 +1,14 @@ # @(#)Makefile 8.1 (Berkeley) 5/31/93 # $FreeBSD$ +.include + PROG= test LINKS= ${BINDIR}/test ${BINDIR}/[ MLINKS= test.1 [.1 +.if ${MK_TESTS} != "no" +SUBDIR+= tests +.endif + .include diff --git a/bin/test/tests/Makefile b/bin/test/tests/Makefile new file mode 100644 index 000000000..be32dbb29 --- /dev/null +++ b/bin/test/tests/Makefile @@ -0,0 +1,15 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/test + +TAP_TESTS_SH= legacy_test +# Some tests in here are silently not run when the tests are executed as +# root. Explicitly tell Kyua to drop privileges. +# +# TODO(jmmv): Kyua needs to do this by default, not only when explicitly +# requested. See https://code.google.com/p/kyua/issues/detail?id=6 +TEST_METADATA.legacy_test+= required_user="unprivileged" + +.include diff --git a/tools/regression/bin/test/regress.sh b/bin/test/tests/legacy_test.sh similarity index 100% rename from tools/regression/bin/test/regress.sh rename to bin/test/tests/legacy_test.sh diff --git a/bin/tests/Makefile b/bin/tests/Makefile new file mode 100644 index 000000000..7a59b1029 --- /dev/null +++ b/bin/tests/Makefile @@ -0,0 +1,10 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin + +.PATH: ${.CURDIR:H:H}/tests +KYUAFILE= yes + +.include diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index acb0dcb20..037c9970e 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -20,6 +20,32 @@ .. .. tests + bin + date + .. + mv + .. + pax + .. + sh + builtins + .. + errors + .. + execution + .. + expansion + .. + parameters + .. + parser + .. + set-e + .. + .. + test + .. + .. lib atf libatf-c diff --git a/tools/regression/bin/Makefile b/tools/regression/bin/Makefile deleted file mode 100644 index 1dcdbb396..000000000 --- a/tools/regression/bin/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -SUBDIR= date mv pax sh test - -.include diff --git a/tools/regression/bin/date/Makefile b/tools/regression/bin/date/Makefile deleted file mode 100644 index 2c9ca5943..000000000 --- a/tools/regression/bin/date/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -all: - sh regress.sh diff --git a/tools/regression/bin/date/regress.t b/tools/regression/bin/date/regress.t deleted file mode 100644 index c36d8342d..000000000 --- a/tools/regression/bin/date/regress.t +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -cd `dirname $0` - -sh regress.sh diff --git a/tools/regression/bin/mv/Makefile b/tools/regression/bin/mv/Makefile deleted file mode 100644 index 2c9ca5943..000000000 --- a/tools/regression/bin/mv/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -all: - sh regress.sh diff --git a/tools/regression/bin/mv/regress.t b/tools/regression/bin/mv/regress.t deleted file mode 100644 index c36d8342d..000000000 --- a/tools/regression/bin/mv/regress.t +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -cd `dirname $0` - -sh regress.sh diff --git a/tools/regression/bin/pax/Makefile b/tools/regression/bin/pax/Makefile deleted file mode 100644 index 6855bca97..000000000 --- a/tools/regression/bin/pax/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -all test: - prove -vmw regress.t - -clean: - rm -rf ustar-pathnames-[12] - rm -f ustar.ok ustar.fail* diff --git a/tools/regression/bin/sh/Makefile b/tools/regression/bin/sh/Makefile deleted file mode 100644 index 82b9c09f2..000000000 --- a/tools/regression/bin/sh/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -# Allow one to specify the 'sh' to regress. -SH?= /bin/sh - -all: - env SH=${SH} ${SH} regress.sh diff --git a/tools/regression/bin/sh/regress.t b/tools/regression/bin/sh/regress.t deleted file mode 100644 index 89b1828e8..000000000 --- a/tools/regression/bin/sh/regress.t +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -export SH="${SH:-sh}" - -cd `dirname $0` - -${SH} regress.sh diff --git a/tools/regression/bin/test/Makefile b/tools/regression/bin/test/Makefile deleted file mode 100644 index 2c9ca5943..000000000 --- a/tools/regression/bin/test/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -all: - sh regress.sh diff --git a/tools/regression/bin/test/regress.t b/tools/regression/bin/test/regress.t deleted file mode 100644 index c36d8342d..000000000 --- a/tools/regression/bin/test/regress.t +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -cd `dirname $0` - -sh regress.sh -- 2.45.0