From cfc6ad9bc622f4196577ecf38575ca78dfe5c005 Mon Sep 17 00:00:00 2001 From: jmmv Date: Wed, 11 Dec 2013 04:09:17 +0000 Subject: Migrate tools/regression/bin/ tests to the new layout. This change is a proof of concept on how to easily integrate existing tests from the tools/regression/ hierarchy into the /usr/tests/ test suite and on how to adapt them to the new layout for src. To achieve these goals, this change: - Moves tests from tools/regression/bin// to bin//tests/. - Renames the previous regress.sh files to legacy_test.sh. - Adds Makefiles to build and install the tests and all their supporting data files into /usr/tests/bin/. - Plugs the legacy_test test programs into the test suite using the new TAP backend for Kyua (appearing in 0.8) so that the code of the test programs does not have to change. - Registers the new directories in the BSD.test.dist mtree file. Reviewed by: freebsd-testing Approved by: rpaulo (mentor) --- bin/Makefile | 4 + bin/date/Makefile | 6 + bin/date/tests/Makefile | 9 + bin/date/tests/legacy_test.sh | 91 +++++++ bin/mv/Makefile | 6 + bin/mv/tests/Makefile | 9 + bin/mv/tests/legacy_test.sh | 296 +++++++++++++++++++++ bin/pax/Makefile | 6 + bin/pax/tests/Makefile | 9 + bin/pax/tests/legacy_test.sh | 91 +++++++ bin/sh/Makefile | 7 +- bin/sh/tests/Makefile | 12 + bin/sh/tests/builtins/Makefile | 147 ++++++++++ bin/sh/tests/builtins/alias.0 | 9 + bin/sh/tests/builtins/alias.0.stdout | 4 + bin/sh/tests/builtins/alias.1 | 3 + bin/sh/tests/builtins/alias.1.stderr | 1 + bin/sh/tests/builtins/alias3.0 | 12 + bin/sh/tests/builtins/alias3.0.stdout | 4 + bin/sh/tests/builtins/alias4.0 | 4 + bin/sh/tests/builtins/break1.0 | 16 ++ bin/sh/tests/builtins/break2.0 | 12 + bin/sh/tests/builtins/break2.0.stdout | 1 + bin/sh/tests/builtins/break3.0 | 15 ++ bin/sh/tests/builtins/break4.4 | 7 + bin/sh/tests/builtins/break5.4 | 12 + bin/sh/tests/builtins/builtin1.0 | 31 +++ bin/sh/tests/builtins/case1.0 | 13 + bin/sh/tests/builtins/case10.0 | 16 ++ bin/sh/tests/builtins/case11.0 | 6 + bin/sh/tests/builtins/case12.0 | 6 + bin/sh/tests/builtins/case13.0 | 12 + bin/sh/tests/builtins/case14.0 | 5 + bin/sh/tests/builtins/case15.0 | 5 + bin/sh/tests/builtins/case16.0 | 7 + bin/sh/tests/builtins/case17.0 | 3 + bin/sh/tests/builtins/case18.0 | 7 + bin/sh/tests/builtins/case19.0 | 7 + bin/sh/tests/builtins/case2.0 | 106 ++++++++ bin/sh/tests/builtins/case3.0 | 95 +++++++ bin/sh/tests/builtins/case4.0 | 6 + bin/sh/tests/builtins/case5.0 | 57 ++++ bin/sh/tests/builtins/case6.0 | 52 ++++ bin/sh/tests/builtins/case7.0 | 24 ++ bin/sh/tests/builtins/case8.0 | 32 +++ bin/sh/tests/builtins/case9.0 | 39 +++ bin/sh/tests/builtins/cd1.0 | 30 +++ bin/sh/tests/builtins/cd2.0 | 16 ++ bin/sh/tests/builtins/cd3.0 | 21 ++ bin/sh/tests/builtins/cd4.0 | 38 +++ bin/sh/tests/builtins/cd5.0 | 23 ++ bin/sh/tests/builtins/cd6.0 | 10 + bin/sh/tests/builtins/cd7.0 | 15 ++ bin/sh/tests/builtins/cd8.0 | 26 ++ bin/sh/tests/builtins/command1.0 | 5 + bin/sh/tests/builtins/command10.0 | 14 + bin/sh/tests/builtins/command11.0 | 14 + bin/sh/tests/builtins/command12.0 | 7 + bin/sh/tests/builtins/command2.0 | 3 + bin/sh/tests/builtins/command3.0 | 14 + bin/sh/tests/builtins/command3.0.stdout | 7 + bin/sh/tests/builtins/command4.0 | 2 + bin/sh/tests/builtins/command5.0 | 15 ++ bin/sh/tests/builtins/command5.0.stdout | 8 + bin/sh/tests/builtins/command6.0 | 22 ++ bin/sh/tests/builtins/command6.0.stdout | 7 + bin/sh/tests/builtins/command7.0 | 34 +++ bin/sh/tests/builtins/command8.0 | 45 ++++ bin/sh/tests/builtins/command9.0 | 14 + bin/sh/tests/builtins/dot1.0 | 21 ++ bin/sh/tests/builtins/dot2.0 | 21 ++ bin/sh/tests/builtins/dot3.0 | 10 + bin/sh/tests/builtins/dot4.0 | 12 + bin/sh/tests/builtins/eval1.0 | 9 + bin/sh/tests/builtins/eval2.0 | 7 + bin/sh/tests/builtins/eval3.0 | 9 + bin/sh/tests/builtins/eval4.0 | 5 + bin/sh/tests/builtins/eval5.0 | 4 + bin/sh/tests/builtins/eval6.0 | 5 + bin/sh/tests/builtins/exec1.0 | 25 ++ bin/sh/tests/builtins/exec2.0 | 25 ++ bin/sh/tests/builtins/exit1.0 | 6 + bin/sh/tests/builtins/exit2.8 | 7 + bin/sh/tests/builtins/exit3.0 | 5 + bin/sh/tests/builtins/export1.0 | 3 + bin/sh/tests/builtins/fc1.0 | 27 ++ bin/sh/tests/builtins/fc2.0 | 34 +++ bin/sh/tests/builtins/for1.0 | 4 + bin/sh/tests/builtins/for2.0 | 9 + bin/sh/tests/builtins/for3.0 | 8 + bin/sh/tests/builtins/getopts1.0 | 25 ++ bin/sh/tests/builtins/getopts1.0.stdout | 8 + bin/sh/tests/builtins/getopts2.0 | 6 + bin/sh/tests/builtins/getopts2.0.stdout | 1 + bin/sh/tests/builtins/hash1.0 | 5 + bin/sh/tests/builtins/hash1.0.stdout | 1 + bin/sh/tests/builtins/hash2.0 | 4 + bin/sh/tests/builtins/hash2.0.stdout | 1 + bin/sh/tests/builtins/hash3.0 | 3 + bin/sh/tests/builtins/hash3.0.stdout | 2 + bin/sh/tests/builtins/hash4.0 | 6 + bin/sh/tests/builtins/jobid1.0 | 7 + bin/sh/tests/builtins/jobid2.0 | 9 + bin/sh/tests/builtins/lineno.0 | 16 ++ bin/sh/tests/builtins/lineno.0.stdout | 9 + bin/sh/tests/builtins/local1.0 | 13 + bin/sh/tests/builtins/local2.0 | 17 ++ bin/sh/tests/builtins/local3.0 | 26 ++ bin/sh/tests/builtins/local4.0 | 12 + bin/sh/tests/builtins/locale1.0 | 134 ++++++++++ bin/sh/tests/builtins/printf1.0 | 3 + bin/sh/tests/builtins/printf2.0 | 3 + bin/sh/tests/builtins/printf3.0 | 5 + bin/sh/tests/builtins/printf4.0 | 5 + bin/sh/tests/builtins/read1.0 | 26 ++ bin/sh/tests/builtins/read1.0.stdout | 20 ++ bin/sh/tests/builtins/read2.0 | 31 +++ bin/sh/tests/builtins/read3.0 | 11 + bin/sh/tests/builtins/read3.0.stdout | 9 + bin/sh/tests/builtins/read4.0 | 10 + bin/sh/tests/builtins/read4.0.stdout | 8 + bin/sh/tests/builtins/read5.0 | 32 +++ bin/sh/tests/builtins/read6.0 | 5 + bin/sh/tests/builtins/read7.0 | 5 + bin/sh/tests/builtins/return1.0 | 7 + bin/sh/tests/builtins/return2.1 | 7 + bin/sh/tests/builtins/return3.1 | 3 + bin/sh/tests/builtins/return4.0 | 16 ++ bin/sh/tests/builtins/return5.0 | 17 ++ bin/sh/tests/builtins/return6.4 | 3 + bin/sh/tests/builtins/return7.4 | 6 + bin/sh/tests/builtins/return8.0 | 13 + bin/sh/tests/builtins/set1.0 | 32 +++ bin/sh/tests/builtins/set2.0 | 3 + bin/sh/tests/builtins/trap1.0 | 22 ++ bin/sh/tests/builtins/trap10.0 | 6 + bin/sh/tests/builtins/trap11.0 | 8 + bin/sh/tests/builtins/trap12.0 | 10 + bin/sh/tests/builtins/trap13.0 | 8 + bin/sh/tests/builtins/trap14.0 | 10 + bin/sh/tests/builtins/trap2.0 | 52 ++++ bin/sh/tests/builtins/trap3.0 | 11 + bin/sh/tests/builtins/trap4.0 | 17 ++ bin/sh/tests/builtins/trap5.0 | 19 ++ bin/sh/tests/builtins/trap6.0 | 9 + bin/sh/tests/builtins/trap7.0 | 3 + bin/sh/tests/builtins/trap8.0 | 7 + bin/sh/tests/builtins/trap9.0 | 3 + bin/sh/tests/builtins/type1.0 | 8 + bin/sh/tests/builtins/type1.0.stderr | 4 + bin/sh/tests/builtins/type2.0 | 26 ++ bin/sh/tests/builtins/type3.0 | 3 + bin/sh/tests/builtins/unalias.0 | 21 ++ bin/sh/tests/builtins/var-assign.0 | 55 ++++ bin/sh/tests/builtins/var-assign2.0 | 55 ++++ bin/sh/tests/builtins/wait1.0 | 23 ++ bin/sh/tests/builtins/wait10.0 | 5 + bin/sh/tests/builtins/wait2.0 | 15 ++ bin/sh/tests/builtins/wait3.0 | 21 ++ bin/sh/tests/builtins/wait4.0 | 12 + bin/sh/tests/builtins/wait5.0 | 12 + bin/sh/tests/builtins/wait6.0 | 3 + bin/sh/tests/builtins/wait7.0 | 4 + bin/sh/tests/builtins/wait8.0 | 7 + bin/sh/tests/builtins/wait9.127 | 3 + bin/sh/tests/errors/Makefile | 30 +++ bin/sh/tests/errors/assignment-error1.0 | 30 +++ bin/sh/tests/errors/assignment-error2.0 | 8 + bin/sh/tests/errors/backquote-error1.0 | 4 + bin/sh/tests/errors/backquote-error2.0 | 7 + bin/sh/tests/errors/bad-binary1.126 | 12 + bin/sh/tests/errors/bad-keyword1.0 | 4 + bin/sh/tests/errors/bad-parm-exp1.0 | 7 + bin/sh/tests/errors/bad-parm-exp2.2 | 2 + bin/sh/tests/errors/bad-parm-exp2.2.stderr | 1 + bin/sh/tests/errors/bad-parm-exp3.2 | 2 + bin/sh/tests/errors/bad-parm-exp3.2.stderr | 1 + bin/sh/tests/errors/bad-parm-exp4.2 | 2 + bin/sh/tests/errors/bad-parm-exp4.2.stderr | 1 + bin/sh/tests/errors/bad-parm-exp5.2 | 2 + bin/sh/tests/errors/bad-parm-exp5.2.stderr | 1 + bin/sh/tests/errors/bad-parm-exp6.2 | 2 + bin/sh/tests/errors/bad-parm-exp6.2.stderr | 1 + bin/sh/tests/errors/option-error.0 | 46 ++++ bin/sh/tests/errors/redirection-error.0 | 53 ++++ bin/sh/tests/errors/redirection-error2.2 | 4 + bin/sh/tests/errors/redirection-error3.0 | 54 ++++ bin/sh/tests/errors/redirection-error4.0 | 7 + bin/sh/tests/errors/redirection-error5.0 | 5 + bin/sh/tests/errors/redirection-error6.0 | 12 + bin/sh/tests/errors/redirection-error7.0 | 7 + bin/sh/tests/errors/write-error1.0 | 3 + bin/sh/tests/execution/Makefile | 53 ++++ bin/sh/tests/execution/bg1.0 | 3 + bin/sh/tests/execution/bg10.0 | 4 + bin/sh/tests/execution/bg10.0.stdout | 1 + bin/sh/tests/execution/bg2.0 | 5 + bin/sh/tests/execution/bg3.0 | 5 + bin/sh/tests/execution/bg4.0 | 6 + 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/tests/execution/fork1.0 | 10 + bin/sh/tests/execution/fork2.0 | 9 + bin/sh/tests/execution/fork3.0 | 4 + bin/sh/tests/execution/func1.0 | 4 + bin/sh/tests/execution/func2.0 | 12 + bin/sh/tests/execution/func3.0 | 7 + bin/sh/tests/execution/hash1.0 | 12 + bin/sh/tests/execution/int-cmd1.0 | 3 + bin/sh/tests/execution/killed1.0 | 8 + bin/sh/tests/execution/killed2.0 | 10 + bin/sh/tests/execution/not1.0 | 4 + bin/sh/tests/execution/not2.0 | 6 + bin/sh/tests/execution/path1.0 | 15 ++ bin/sh/tests/execution/redir1.0 | 27 ++ bin/sh/tests/execution/redir2.0 | 29 ++ bin/sh/tests/execution/redir3.0 | 3 + bin/sh/tests/execution/redir4.0 | 4 + bin/sh/tests/execution/redir5.0 | 3 + bin/sh/tests/execution/redir6.0 | 21 ++ bin/sh/tests/execution/redir7.0 | 21 ++ bin/sh/tests/execution/set-n1.0 | 7 + bin/sh/tests/execution/set-n2.0 | 5 + bin/sh/tests/execution/set-n3.0 | 4 + bin/sh/tests/execution/set-n4.0 | 3 + bin/sh/tests/execution/set-x1.0 | 8 + bin/sh/tests/execution/set-x2.0 | 9 + bin/sh/tests/execution/set-x3.0 | 9 + bin/sh/tests/execution/shellproc1.0 | 11 + bin/sh/tests/execution/subshell1.0 | 6 + bin/sh/tests/execution/subshell1.0.stdout | 2 + bin/sh/tests/execution/subshell2.0 | 10 + bin/sh/tests/execution/subshell3.0 | 4 + bin/sh/tests/execution/subshell4.0 | 3 + bin/sh/tests/execution/unknown1.0 | 29 ++ bin/sh/tests/execution/var-assign1.0 | 3 + bin/sh/tests/expansion/Makefile | 86 ++++++ bin/sh/tests/expansion/arith1.0 | 30 +++ bin/sh/tests/expansion/arith10.0 | 35 +++ bin/sh/tests/expansion/arith11.0 | 12 + bin/sh/tests/expansion/arith12.0 | 4 + bin/sh/tests/expansion/arith13.0 | 6 + bin/sh/tests/expansion/arith2.0 | 77 ++++++ bin/sh/tests/expansion/arith3.0 | 14 + bin/sh/tests/expansion/arith4.0 | 20 ++ bin/sh/tests/expansion/arith5.0 | 17 ++ bin/sh/tests/expansion/arith6.0 | 16 ++ bin/sh/tests/expansion/arith7.0 | 12 + bin/sh/tests/expansion/arith8.0 | 4 + bin/sh/tests/expansion/arith9.0 | 20 ++ bin/sh/tests/expansion/assign1.0 | 37 +++ bin/sh/tests/expansion/cmdsubst1.0 | 48 ++++ bin/sh/tests/expansion/cmdsubst10.0 | 51 ++++ bin/sh/tests/expansion/cmdsubst11.0 | 5 + bin/sh/tests/expansion/cmdsubst12.0 | 6 + bin/sh/tests/expansion/cmdsubst13.0 | 12 + bin/sh/tests/expansion/cmdsubst14.0 | 5 + bin/sh/tests/expansion/cmdsubst15.0 | 5 + bin/sh/tests/expansion/cmdsubst16.0 | 5 + bin/sh/tests/expansion/cmdsubst17.0 | 5 + bin/sh/tests/expansion/cmdsubst2.0 | 43 +++ bin/sh/tests/expansion/cmdsubst3.0 | 23 ++ bin/sh/tests/expansion/cmdsubst4.0 | 4 + bin/sh/tests/expansion/cmdsubst5.0 | 5 + bin/sh/tests/expansion/cmdsubst6.0 | 53 ++++ bin/sh/tests/expansion/cmdsubst7.0 | 31 +++ bin/sh/tests/expansion/cmdsubst8.0 | 17 ++ bin/sh/tests/expansion/cmdsubst9.0 | 11 + bin/sh/tests/expansion/export1.0 | 13 + bin/sh/tests/expansion/export2.0 | 24 ++ bin/sh/tests/expansion/export3.0 | 30 +++ bin/sh/tests/expansion/heredoc1.0 | 25 ++ bin/sh/tests/expansion/heredoc2.0 | 15 ++ bin/sh/tests/expansion/ifs1.0 | 35 +++ bin/sh/tests/expansion/ifs2.0 | 24 ++ bin/sh/tests/expansion/ifs3.0 | 21 ++ bin/sh/tests/expansion/ifs4.0 | 39 +++ bin/sh/tests/expansion/length1.0 | 12 + bin/sh/tests/expansion/length2.0 | 4 + bin/sh/tests/expansion/length3.0 | 10 + bin/sh/tests/expansion/length4.0 | 11 + bin/sh/tests/expansion/length5.0 | 27 ++ bin/sh/tests/expansion/length6.0 | 8 + bin/sh/tests/expansion/length7.0 | 14 + bin/sh/tests/expansion/length8.0 | 14 + bin/sh/tests/expansion/local1.0 | 28 ++ bin/sh/tests/expansion/local2.0 | 34 +++ bin/sh/tests/expansion/pathname1.0 | 61 +++++ bin/sh/tests/expansion/pathname2.0 | 31 +++ bin/sh/tests/expansion/pathname3.0 | 29 ++ bin/sh/tests/expansion/pathname4.0 | 28 ++ bin/sh/tests/expansion/plus-minus1.0 | 76 ++++++ bin/sh/tests/expansion/plus-minus2.0 | 4 + bin/sh/tests/expansion/plus-minus3.0 | 44 +++ bin/sh/tests/expansion/plus-minus4.0 | 38 +++ bin/sh/tests/expansion/plus-minus5.0 | 31 +++ bin/sh/tests/expansion/plus-minus6.0 | 34 +++ bin/sh/tests/expansion/plus-minus7.0 | 26 ++ bin/sh/tests/expansion/plus-minus8.0 | 5 + bin/sh/tests/expansion/question1.0 | 22 ++ bin/sh/tests/expansion/readonly1.0 | 7 + bin/sh/tests/expansion/set-u1.0 | 29 ++ bin/sh/tests/expansion/set-u2.0 | 12 + bin/sh/tests/expansion/set-u3.0 | 6 + bin/sh/tests/expansion/tilde1.0 | 56 ++++ bin/sh/tests/expansion/tilde2.0 | 90 +++++++ bin/sh/tests/expansion/trim1.0 | 85 ++++++ bin/sh/tests/expansion/trim2.0 | 55 ++++ bin/sh/tests/expansion/trim3.0 | 46 ++++ bin/sh/tests/expansion/trim4.0 | 15 ++ bin/sh/tests/expansion/trim5.0 | 28 ++ bin/sh/tests/expansion/trim6.0 | 22 ++ bin/sh/tests/expansion/trim7.0 | 16 ++ bin/sh/tests/expansion/trim8.0 | 75 ++++++ bin/sh/tests/legacy_test.sh | 46 ++++ bin/sh/tests/parameters/Makefile | 18 ++ bin/sh/tests/parameters/env1.0 | 11 + bin/sh/tests/parameters/exitstatus1.0 | 9 + bin/sh/tests/parameters/mail1.0 | 15 ++ bin/sh/tests/parameters/mail2.0 | 15 ++ bin/sh/tests/parameters/optind1.0 | 3 + bin/sh/tests/parameters/positional1.0 | 13 + bin/sh/tests/parameters/positional2.0 | 65 +++++ bin/sh/tests/parameters/pwd1.0 | 11 + bin/sh/tests/parameters/pwd2.0 | 24 ++ bin/sh/tests/parser/Makefile | 59 ++++ bin/sh/tests/parser/alias1.0 | 5 + bin/sh/tests/parser/alias10.0 | 9 + bin/sh/tests/parser/alias2.0 | 6 + bin/sh/tests/parser/alias3.0 | 6 + bin/sh/tests/parser/alias4.0 | 5 + bin/sh/tests/parser/alias5.0 | 5 + bin/sh/tests/parser/alias6.0 | 6 + bin/sh/tests/parser/alias7.0 | 4 + bin/sh/tests/parser/alias8.0 | 4 + bin/sh/tests/parser/alias9.0 | 6 + bin/sh/tests/parser/and-pipe-not.0 | 2 + bin/sh/tests/parser/case1.0 | 14 + bin/sh/tests/parser/case2.0 | 32 +++ bin/sh/tests/parser/dollar-quote1.0 | 12 + bin/sh/tests/parser/dollar-quote10.0 | 10 + bin/sh/tests/parser/dollar-quote11.0 | 8 + bin/sh/tests/parser/dollar-quote2.0 | 5 + bin/sh/tests/parser/dollar-quote3.0 | 22 ++ bin/sh/tests/parser/dollar-quote4.0 | 19 ++ bin/sh/tests/parser/dollar-quote5.0 | 12 + bin/sh/tests/parser/dollar-quote6.0 | 5 + bin/sh/tests/parser/dollar-quote7.0 | 6 + bin/sh/tests/parser/dollar-quote8.0 | 11 + bin/sh/tests/parser/dollar-quote9.0 | 8 + bin/sh/tests/parser/empty-braces1.0 | 7 + bin/sh/tests/parser/empty-cmd1.0 | 3 + bin/sh/tests/parser/for1.0 | 29 ++ bin/sh/tests/parser/for2.0 | 15 ++ bin/sh/tests/parser/func1.0 | 25 ++ bin/sh/tests/parser/func2.0 | 6 + bin/sh/tests/parser/func3.0 | 6 + bin/sh/tests/parser/heredoc1.0 | 85 ++++++ bin/sh/tests/parser/heredoc10.0 | 49 ++++ bin/sh/tests/parser/heredoc11.0 | 26 ++ bin/sh/tests/parser/heredoc2.0 | 39 +++ bin/sh/tests/parser/heredoc3.0 | 7 + bin/sh/tests/parser/heredoc4.0 | 44 +++ bin/sh/tests/parser/heredoc5.0 | 56 ++++ bin/sh/tests/parser/heredoc6.0 | 5 + bin/sh/tests/parser/heredoc7.0 | 19 ++ bin/sh/tests/parser/heredoc8.0 | 20 ++ bin/sh/tests/parser/heredoc9.0 | 58 ++++ bin/sh/tests/parser/no-space1.0 | 18 ++ bin/sh/tests/parser/no-space2.0 | 7 + bin/sh/tests/parser/only-redir1.0 | 3 + bin/sh/tests/parser/only-redir2.0 | 2 + bin/sh/tests/parser/only-redir3.0 | 2 + bin/sh/tests/parser/only-redir4.0 | 2 + bin/sh/tests/parser/pipe-not1.0 | 3 + bin/sh/tests/parser/var-assign1.0 | 19 ++ bin/sh/tests/set-e/Makefile | 44 +++ bin/sh/tests/set-e/and1.0 | 3 + bin/sh/tests/set-e/and2.1 | 4 + bin/sh/tests/set-e/and3.0 | 4 + bin/sh/tests/set-e/and4.0 | 4 + bin/sh/tests/set-e/background1.0 | 3 + bin/sh/tests/set-e/cmd1.0 | 3 + bin/sh/tests/set-e/cmd2.1 | 4 + bin/sh/tests/set-e/elif1.0 | 7 + bin/sh/tests/set-e/elif2.0 | 7 + bin/sh/tests/set-e/eval1.0 | 3 + bin/sh/tests/set-e/eval2.1 | 4 + bin/sh/tests/set-e/for1.0 | 9 + bin/sh/tests/set-e/func1.0 | 7 + bin/sh/tests/set-e/func2.1 | 7 + bin/sh/tests/set-e/if1.0 | 5 + bin/sh/tests/set-e/if2.0 | 7 + bin/sh/tests/set-e/if3.0 | 5 + bin/sh/tests/set-e/not1.0 | 4 + bin/sh/tests/set-e/not2.0 | 4 + bin/sh/tests/set-e/or1.0 | 3 + bin/sh/tests/set-e/or2.0 | 3 + bin/sh/tests/set-e/or3.1 | 4 + bin/sh/tests/set-e/pipe1.1 | 4 + bin/sh/tests/set-e/pipe2.0 | 3 + bin/sh/tests/set-e/return1.0 | 11 + bin/sh/tests/set-e/semi1.1 | 4 + bin/sh/tests/set-e/semi2.1 | 4 + bin/sh/tests/set-e/subshell1.0 | 3 + bin/sh/tests/set-e/subshell2.1 | 4 + bin/sh/tests/set-e/until1.0 | 5 + bin/sh/tests/set-e/until2.0 | 5 + bin/sh/tests/set-e/until3.0 | 9 + bin/sh/tests/set-e/while1.0 | 5 + bin/sh/tests/set-e/while2.0 | 5 + bin/sh/tests/set-e/while3.0 | 9 + bin/test/Makefile | 6 + bin/test/tests/Makefile | 9 + bin/test/tests/legacy_test.sh | 196 ++++++++++++++ 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.sh | 91 ------- tools/regression/bin/date/regress.t | 6 - tools/regression/bin/mv/Makefile | 4 - tools/regression/bin/mv/regress.sh | 296 --------------------- tools/regression/bin/mv/regress.t | 6 - tools/regression/bin/pax/Makefile | 8 - tools/regression/bin/pax/regress.t | 91 ------- tools/regression/bin/sh/Makefile | 7 - tools/regression/bin/sh/builtins/alias.0 | 9 - tools/regression/bin/sh/builtins/alias.0.stdout | 4 - tools/regression/bin/sh/builtins/alias.1 | 3 - tools/regression/bin/sh/builtins/alias.1.stderr | 1 - tools/regression/bin/sh/builtins/alias3.0 | 12 - tools/regression/bin/sh/builtins/alias3.0.stdout | 4 - tools/regression/bin/sh/builtins/alias4.0 | 4 - tools/regression/bin/sh/builtins/break1.0 | 16 -- tools/regression/bin/sh/builtins/break2.0 | 12 - tools/regression/bin/sh/builtins/break2.0.stdout | 1 - tools/regression/bin/sh/builtins/break3.0 | 15 -- tools/regression/bin/sh/builtins/break4.4 | 7 - tools/regression/bin/sh/builtins/break5.4 | 12 - tools/regression/bin/sh/builtins/builtin1.0 | 31 --- tools/regression/bin/sh/builtins/case1.0 | 13 - tools/regression/bin/sh/builtins/case10.0 | 16 -- tools/regression/bin/sh/builtins/case11.0 | 6 - tools/regression/bin/sh/builtins/case12.0 | 6 - tools/regression/bin/sh/builtins/case13.0 | 12 - tools/regression/bin/sh/builtins/case14.0 | 5 - tools/regression/bin/sh/builtins/case15.0 | 5 - tools/regression/bin/sh/builtins/case16.0 | 7 - tools/regression/bin/sh/builtins/case17.0 | 3 - tools/regression/bin/sh/builtins/case18.0 | 7 - tools/regression/bin/sh/builtins/case19.0 | 7 - tools/regression/bin/sh/builtins/case2.0 | 106 -------- tools/regression/bin/sh/builtins/case3.0 | 95 ------- tools/regression/bin/sh/builtins/case4.0 | 6 - tools/regression/bin/sh/builtins/case5.0 | 57 ---- tools/regression/bin/sh/builtins/case6.0 | 52 ---- tools/regression/bin/sh/builtins/case7.0 | 24 -- tools/regression/bin/sh/builtins/case8.0 | 32 --- tools/regression/bin/sh/builtins/case9.0 | 39 --- tools/regression/bin/sh/builtins/cd1.0 | 30 --- tools/regression/bin/sh/builtins/cd2.0 | 16 -- tools/regression/bin/sh/builtins/cd3.0 | 21 -- tools/regression/bin/sh/builtins/cd4.0 | 38 --- tools/regression/bin/sh/builtins/cd5.0 | 23 -- tools/regression/bin/sh/builtins/cd6.0 | 10 - tools/regression/bin/sh/builtins/cd7.0 | 15 -- tools/regression/bin/sh/builtins/cd8.0 | 26 -- tools/regression/bin/sh/builtins/command1.0 | 5 - tools/regression/bin/sh/builtins/command10.0 | 14 - tools/regression/bin/sh/builtins/command11.0 | 14 - tools/regression/bin/sh/builtins/command12.0 | 7 - tools/regression/bin/sh/builtins/command2.0 | 3 - tools/regression/bin/sh/builtins/command3.0 | 14 - tools/regression/bin/sh/builtins/command3.0.stdout | 7 - tools/regression/bin/sh/builtins/command4.0 | 2 - tools/regression/bin/sh/builtins/command5.0 | 15 -- tools/regression/bin/sh/builtins/command5.0.stdout | 8 - tools/regression/bin/sh/builtins/command6.0 | 22 -- tools/regression/bin/sh/builtins/command6.0.stdout | 7 - tools/regression/bin/sh/builtins/command7.0 | 34 --- tools/regression/bin/sh/builtins/command8.0 | 45 ---- tools/regression/bin/sh/builtins/command9.0 | 14 - tools/regression/bin/sh/builtins/dot1.0 | 21 -- tools/regression/bin/sh/builtins/dot2.0 | 21 -- tools/regression/bin/sh/builtins/dot3.0 | 10 - tools/regression/bin/sh/builtins/dot4.0 | 12 - tools/regression/bin/sh/builtins/eval1.0 | 9 - tools/regression/bin/sh/builtins/eval2.0 | 7 - tools/regression/bin/sh/builtins/eval3.0 | 9 - tools/regression/bin/sh/builtins/eval4.0 | 5 - tools/regression/bin/sh/builtins/eval5.0 | 4 - tools/regression/bin/sh/builtins/eval6.0 | 5 - tools/regression/bin/sh/builtins/exec1.0 | 25 -- tools/regression/bin/sh/builtins/exec2.0 | 25 -- tools/regression/bin/sh/builtins/exit1.0 | 6 - tools/regression/bin/sh/builtins/exit2.8 | 7 - tools/regression/bin/sh/builtins/exit3.0 | 5 - tools/regression/bin/sh/builtins/export1.0 | 3 - tools/regression/bin/sh/builtins/fc1.0 | 27 -- tools/regression/bin/sh/builtins/fc2.0 | 34 --- tools/regression/bin/sh/builtins/for1.0 | 4 - tools/regression/bin/sh/builtins/for2.0 | 9 - tools/regression/bin/sh/builtins/for3.0 | 8 - tools/regression/bin/sh/builtins/getopts1.0 | 25 -- tools/regression/bin/sh/builtins/getopts1.0.stdout | 8 - tools/regression/bin/sh/builtins/getopts2.0 | 6 - tools/regression/bin/sh/builtins/getopts2.0.stdout | 1 - tools/regression/bin/sh/builtins/hash1.0 | 5 - tools/regression/bin/sh/builtins/hash1.0.stdout | 1 - tools/regression/bin/sh/builtins/hash2.0 | 4 - tools/regression/bin/sh/builtins/hash2.0.stdout | 1 - tools/regression/bin/sh/builtins/hash3.0 | 3 - tools/regression/bin/sh/builtins/hash3.0.stdout | 2 - tools/regression/bin/sh/builtins/hash4.0 | 6 - tools/regression/bin/sh/builtins/jobid1.0 | 7 - tools/regression/bin/sh/builtins/jobid2.0 | 9 - tools/regression/bin/sh/builtins/lineno.0 | 16 -- tools/regression/bin/sh/builtins/lineno.0.stdout | 9 - tools/regression/bin/sh/builtins/local1.0 | 13 - tools/regression/bin/sh/builtins/local2.0 | 17 -- tools/regression/bin/sh/builtins/local3.0 | 26 -- tools/regression/bin/sh/builtins/local4.0 | 12 - tools/regression/bin/sh/builtins/locale1.0 | 134 ---------- tools/regression/bin/sh/builtins/printf1.0 | 3 - tools/regression/bin/sh/builtins/printf2.0 | 3 - tools/regression/bin/sh/builtins/printf3.0 | 5 - tools/regression/bin/sh/builtins/printf4.0 | 5 - tools/regression/bin/sh/builtins/read1.0 | 26 -- tools/regression/bin/sh/builtins/read1.0.stdout | 20 -- tools/regression/bin/sh/builtins/read2.0 | 31 --- tools/regression/bin/sh/builtins/read3.0 | 11 - tools/regression/bin/sh/builtins/read3.0.stdout | 9 - tools/regression/bin/sh/builtins/read4.0 | 10 - tools/regression/bin/sh/builtins/read4.0.stdout | 8 - tools/regression/bin/sh/builtins/read5.0 | 32 --- tools/regression/bin/sh/builtins/read6.0 | 5 - tools/regression/bin/sh/builtins/read7.0 | 5 - tools/regression/bin/sh/builtins/return1.0 | 7 - tools/regression/bin/sh/builtins/return2.1 | 7 - tools/regression/bin/sh/builtins/return3.1 | 3 - tools/regression/bin/sh/builtins/return4.0 | 16 -- tools/regression/bin/sh/builtins/return5.0 | 17 -- tools/regression/bin/sh/builtins/return6.4 | 3 - tools/regression/bin/sh/builtins/return7.4 | 6 - tools/regression/bin/sh/builtins/return8.0 | 13 - tools/regression/bin/sh/builtins/set1.0 | 32 --- tools/regression/bin/sh/builtins/set2.0 | 3 - tools/regression/bin/sh/builtins/trap1.0 | 22 -- tools/regression/bin/sh/builtins/trap10.0 | 6 - tools/regression/bin/sh/builtins/trap11.0 | 8 - tools/regression/bin/sh/builtins/trap12.0 | 10 - tools/regression/bin/sh/builtins/trap13.0 | 8 - tools/regression/bin/sh/builtins/trap14.0 | 10 - tools/regression/bin/sh/builtins/trap2.0 | 52 ---- tools/regression/bin/sh/builtins/trap3.0 | 11 - tools/regression/bin/sh/builtins/trap4.0 | 17 -- tools/regression/bin/sh/builtins/trap5.0 | 19 -- tools/regression/bin/sh/builtins/trap6.0 | 9 - tools/regression/bin/sh/builtins/trap7.0 | 3 - tools/regression/bin/sh/builtins/trap8.0 | 7 - tools/regression/bin/sh/builtins/trap9.0 | 3 - tools/regression/bin/sh/builtins/type1.0 | 8 - tools/regression/bin/sh/builtins/type1.0.stderr | 4 - tools/regression/bin/sh/builtins/type2.0 | 26 -- tools/regression/bin/sh/builtins/type3.0 | 3 - tools/regression/bin/sh/builtins/unalias.0 | 21 -- tools/regression/bin/sh/builtins/var-assign.0 | 55 ---- tools/regression/bin/sh/builtins/var-assign2.0 | 55 ---- tools/regression/bin/sh/builtins/wait1.0 | 23 -- tools/regression/bin/sh/builtins/wait10.0 | 5 - tools/regression/bin/sh/builtins/wait2.0 | 15 -- tools/regression/bin/sh/builtins/wait3.0 | 21 -- tools/regression/bin/sh/builtins/wait4.0 | 12 - tools/regression/bin/sh/builtins/wait5.0 | 12 - tools/regression/bin/sh/builtins/wait6.0 | 3 - tools/regression/bin/sh/builtins/wait7.0 | 4 - tools/regression/bin/sh/builtins/wait8.0 | 7 - tools/regression/bin/sh/builtins/wait9.127 | 3 - tools/regression/bin/sh/errors/assignment-error1.0 | 30 --- tools/regression/bin/sh/errors/assignment-error2.0 | 8 - tools/regression/bin/sh/errors/backquote-error1.0 | 4 - tools/regression/bin/sh/errors/backquote-error2.0 | 7 - tools/regression/bin/sh/errors/bad-binary1.126 | 12 - tools/regression/bin/sh/errors/bad-keyword1.0 | 4 - tools/regression/bin/sh/errors/bad-parm-exp1.0 | 7 - tools/regression/bin/sh/errors/bad-parm-exp2.2 | 2 - .../bin/sh/errors/bad-parm-exp2.2.stderr | 1 - tools/regression/bin/sh/errors/bad-parm-exp3.2 | 2 - .../bin/sh/errors/bad-parm-exp3.2.stderr | 1 - tools/regression/bin/sh/errors/bad-parm-exp4.2 | 2 - .../bin/sh/errors/bad-parm-exp4.2.stderr | 1 - tools/regression/bin/sh/errors/bad-parm-exp5.2 | 2 - .../bin/sh/errors/bad-parm-exp5.2.stderr | 1 - tools/regression/bin/sh/errors/bad-parm-exp6.2 | 2 - .../bin/sh/errors/bad-parm-exp6.2.stderr | 1 - tools/regression/bin/sh/errors/option-error.0 | 46 ---- tools/regression/bin/sh/errors/redirection-error.0 | 53 ---- .../regression/bin/sh/errors/redirection-error2.2 | 4 - .../regression/bin/sh/errors/redirection-error3.0 | 54 ---- .../regression/bin/sh/errors/redirection-error4.0 | 7 - .../regression/bin/sh/errors/redirection-error5.0 | 5 - .../regression/bin/sh/errors/redirection-error6.0 | 12 - .../regression/bin/sh/errors/redirection-error7.0 | 7 - tools/regression/bin/sh/errors/write-error1.0 | 3 - tools/regression/bin/sh/execution/bg1.0 | 3 - tools/regression/bin/sh/execution/bg10.0 | 4 - tools/regression/bin/sh/execution/bg10.0.stdout | 1 - tools/regression/bin/sh/execution/bg2.0 | 5 - tools/regression/bin/sh/execution/bg3.0 | 5 - tools/regression/bin/sh/execution/bg4.0 | 6 - tools/regression/bin/sh/execution/bg5.0 | 4 - tools/regression/bin/sh/execution/bg6.0 | 4 - tools/regression/bin/sh/execution/bg6.0.stdout | 1 - tools/regression/bin/sh/execution/bg7.0 | 5 - tools/regression/bin/sh/execution/bg8.0 | 5 - tools/regression/bin/sh/execution/bg9.0 | 5 - tools/regression/bin/sh/execution/fork1.0 | 10 - tools/regression/bin/sh/execution/fork2.0 | 9 - tools/regression/bin/sh/execution/fork3.0 | 4 - tools/regression/bin/sh/execution/func1.0 | 4 - tools/regression/bin/sh/execution/func2.0 | 12 - tools/regression/bin/sh/execution/func3.0 | 7 - tools/regression/bin/sh/execution/hash1.0 | 12 - tools/regression/bin/sh/execution/int-cmd1.0 | 3 - tools/regression/bin/sh/execution/killed1.0 | 8 - tools/regression/bin/sh/execution/killed2.0 | 10 - tools/regression/bin/sh/execution/not1.0 | 4 - tools/regression/bin/sh/execution/not2.0 | 6 - tools/regression/bin/sh/execution/path1.0 | 15 -- tools/regression/bin/sh/execution/redir1.0 | 27 -- tools/regression/bin/sh/execution/redir2.0 | 29 -- tools/regression/bin/sh/execution/redir3.0 | 3 - tools/regression/bin/sh/execution/redir4.0 | 4 - tools/regression/bin/sh/execution/redir5.0 | 3 - tools/regression/bin/sh/execution/redir6.0 | 21 -- tools/regression/bin/sh/execution/redir7.0 | 21 -- tools/regression/bin/sh/execution/set-n1.0 | 7 - tools/regression/bin/sh/execution/set-n2.0 | 5 - tools/regression/bin/sh/execution/set-n3.0 | 4 - tools/regression/bin/sh/execution/set-n4.0 | 3 - tools/regression/bin/sh/execution/set-x1.0 | 8 - tools/regression/bin/sh/execution/set-x2.0 | 9 - tools/regression/bin/sh/execution/set-x3.0 | 9 - tools/regression/bin/sh/execution/shellproc1.0 | 11 - tools/regression/bin/sh/execution/subshell1.0 | 6 - .../regression/bin/sh/execution/subshell1.0.stdout | 2 - tools/regression/bin/sh/execution/subshell2.0 | 10 - tools/regression/bin/sh/execution/subshell3.0 | 4 - tools/regression/bin/sh/execution/subshell4.0 | 3 - tools/regression/bin/sh/execution/unknown1.0 | 29 -- tools/regression/bin/sh/execution/var-assign1.0 | 3 - tools/regression/bin/sh/expansion/arith1.0 | 30 --- tools/regression/bin/sh/expansion/arith10.0 | 35 --- tools/regression/bin/sh/expansion/arith11.0 | 12 - tools/regression/bin/sh/expansion/arith12.0 | 4 - tools/regression/bin/sh/expansion/arith13.0 | 6 - tools/regression/bin/sh/expansion/arith2.0 | 77 ------ tools/regression/bin/sh/expansion/arith3.0 | 14 - tools/regression/bin/sh/expansion/arith4.0 | 20 -- tools/regression/bin/sh/expansion/arith5.0 | 17 -- tools/regression/bin/sh/expansion/arith6.0 | 16 -- tools/regression/bin/sh/expansion/arith7.0 | 12 - tools/regression/bin/sh/expansion/arith8.0 | 4 - tools/regression/bin/sh/expansion/arith9.0 | 20 -- tools/regression/bin/sh/expansion/assign1.0 | 37 --- tools/regression/bin/sh/expansion/cmdsubst1.0 | 48 ---- tools/regression/bin/sh/expansion/cmdsubst10.0 | 51 ---- tools/regression/bin/sh/expansion/cmdsubst11.0 | 5 - tools/regression/bin/sh/expansion/cmdsubst12.0 | 6 - tools/regression/bin/sh/expansion/cmdsubst13.0 | 12 - tools/regression/bin/sh/expansion/cmdsubst14.0 | 5 - tools/regression/bin/sh/expansion/cmdsubst15.0 | 5 - tools/regression/bin/sh/expansion/cmdsubst16.0 | 5 - tools/regression/bin/sh/expansion/cmdsubst17.0 | 5 - tools/regression/bin/sh/expansion/cmdsubst2.0 | 43 --- tools/regression/bin/sh/expansion/cmdsubst3.0 | 23 -- tools/regression/bin/sh/expansion/cmdsubst4.0 | 4 - tools/regression/bin/sh/expansion/cmdsubst5.0 | 5 - tools/regression/bin/sh/expansion/cmdsubst6.0 | 53 ---- tools/regression/bin/sh/expansion/cmdsubst7.0 | 31 --- tools/regression/bin/sh/expansion/cmdsubst8.0 | 17 -- tools/regression/bin/sh/expansion/cmdsubst9.0 | 11 - tools/regression/bin/sh/expansion/export1.0 | 13 - tools/regression/bin/sh/expansion/export2.0 | 24 -- tools/regression/bin/sh/expansion/export3.0 | 30 --- tools/regression/bin/sh/expansion/heredoc1.0 | 25 -- tools/regression/bin/sh/expansion/heredoc2.0 | 15 -- tools/regression/bin/sh/expansion/ifs1.0 | 35 --- tools/regression/bin/sh/expansion/ifs2.0 | 24 -- tools/regression/bin/sh/expansion/ifs3.0 | 21 -- tools/regression/bin/sh/expansion/ifs4.0 | 39 --- tools/regression/bin/sh/expansion/length1.0 | 12 - tools/regression/bin/sh/expansion/length2.0 | 4 - tools/regression/bin/sh/expansion/length3.0 | 10 - tools/regression/bin/sh/expansion/length4.0 | 11 - tools/regression/bin/sh/expansion/length5.0 | 27 -- tools/regression/bin/sh/expansion/length6.0 | 8 - tools/regression/bin/sh/expansion/length7.0 | 14 - tools/regression/bin/sh/expansion/length8.0 | 14 - tools/regression/bin/sh/expansion/local1.0 | 28 -- tools/regression/bin/sh/expansion/local2.0 | 34 --- tools/regression/bin/sh/expansion/pathname1.0 | 61 ----- tools/regression/bin/sh/expansion/pathname2.0 | 31 --- tools/regression/bin/sh/expansion/pathname3.0 | 29 -- tools/regression/bin/sh/expansion/pathname4.0 | 28 -- tools/regression/bin/sh/expansion/plus-minus1.0 | 76 ------ tools/regression/bin/sh/expansion/plus-minus2.0 | 4 - tools/regression/bin/sh/expansion/plus-minus3.0 | 44 --- tools/regression/bin/sh/expansion/plus-minus4.0 | 38 --- tools/regression/bin/sh/expansion/plus-minus5.0 | 31 --- tools/regression/bin/sh/expansion/plus-minus6.0 | 34 --- tools/regression/bin/sh/expansion/plus-minus7.0 | 26 -- tools/regression/bin/sh/expansion/plus-minus8.0 | 5 - tools/regression/bin/sh/expansion/question1.0 | 22 -- tools/regression/bin/sh/expansion/readonly1.0 | 7 - tools/regression/bin/sh/expansion/set-u1.0 | 29 -- tools/regression/bin/sh/expansion/set-u2.0 | 12 - tools/regression/bin/sh/expansion/set-u3.0 | 6 - tools/regression/bin/sh/expansion/tilde1.0 | 56 ---- tools/regression/bin/sh/expansion/tilde2.0 | 90 ------- tools/regression/bin/sh/expansion/trim1.0 | 85 ------ tools/regression/bin/sh/expansion/trim2.0 | 55 ---- tools/regression/bin/sh/expansion/trim3.0 | 46 ---- tools/regression/bin/sh/expansion/trim4.0 | 15 -- tools/regression/bin/sh/expansion/trim5.0 | 28 -- tools/regression/bin/sh/expansion/trim6.0 | 22 -- tools/regression/bin/sh/expansion/trim7.0 | 16 -- tools/regression/bin/sh/expansion/trim8.0 | 75 ------ tools/regression/bin/sh/parameters/env1.0 | 11 - tools/regression/bin/sh/parameters/exitstatus1.0 | 9 - tools/regression/bin/sh/parameters/mail1.0 | 15 -- tools/regression/bin/sh/parameters/mail2.0 | 15 -- tools/regression/bin/sh/parameters/optind1.0 | 3 - tools/regression/bin/sh/parameters/positional1.0 | 13 - tools/regression/bin/sh/parameters/positional2.0 | 65 ----- tools/regression/bin/sh/parameters/pwd1.0 | 11 - tools/regression/bin/sh/parameters/pwd2.0 | 24 -- tools/regression/bin/sh/parser/alias1.0 | 5 - tools/regression/bin/sh/parser/alias10.0 | 9 - tools/regression/bin/sh/parser/alias2.0 | 6 - tools/regression/bin/sh/parser/alias3.0 | 6 - tools/regression/bin/sh/parser/alias4.0 | 5 - tools/regression/bin/sh/parser/alias5.0 | 5 - tools/regression/bin/sh/parser/alias6.0 | 6 - tools/regression/bin/sh/parser/alias7.0 | 4 - tools/regression/bin/sh/parser/alias8.0 | 4 - tools/regression/bin/sh/parser/alias9.0 | 6 - tools/regression/bin/sh/parser/and-pipe-not.0 | 2 - tools/regression/bin/sh/parser/case1.0 | 14 - tools/regression/bin/sh/parser/case2.0 | 32 --- tools/regression/bin/sh/parser/dollar-quote1.0 | 12 - tools/regression/bin/sh/parser/dollar-quote10.0 | 10 - tools/regression/bin/sh/parser/dollar-quote11.0 | 8 - tools/regression/bin/sh/parser/dollar-quote2.0 | 5 - tools/regression/bin/sh/parser/dollar-quote3.0 | 22 -- tools/regression/bin/sh/parser/dollar-quote4.0 | 19 -- tools/regression/bin/sh/parser/dollar-quote5.0 | 12 - tools/regression/bin/sh/parser/dollar-quote6.0 | 5 - tools/regression/bin/sh/parser/dollar-quote7.0 | 6 - tools/regression/bin/sh/parser/dollar-quote8.0 | 11 - tools/regression/bin/sh/parser/dollar-quote9.0 | 8 - tools/regression/bin/sh/parser/empty-braces1.0 | 7 - tools/regression/bin/sh/parser/empty-cmd1.0 | 3 - tools/regression/bin/sh/parser/for1.0 | 29 -- tools/regression/bin/sh/parser/for2.0 | 15 -- tools/regression/bin/sh/parser/func1.0 | 25 -- tools/regression/bin/sh/parser/func2.0 | 6 - tools/regression/bin/sh/parser/func3.0 | 6 - tools/regression/bin/sh/parser/heredoc1.0 | 85 ------ tools/regression/bin/sh/parser/heredoc10.0 | 49 ---- tools/regression/bin/sh/parser/heredoc11.0 | 26 -- tools/regression/bin/sh/parser/heredoc2.0 | 39 --- tools/regression/bin/sh/parser/heredoc3.0 | 7 - tools/regression/bin/sh/parser/heredoc4.0 | 44 --- tools/regression/bin/sh/parser/heredoc5.0 | 56 ---- tools/regression/bin/sh/parser/heredoc6.0 | 5 - tools/regression/bin/sh/parser/heredoc7.0 | 19 -- tools/regression/bin/sh/parser/heredoc8.0 | 20 -- tools/regression/bin/sh/parser/heredoc9.0 | 58 ---- tools/regression/bin/sh/parser/no-space1.0 | 18 -- tools/regression/bin/sh/parser/no-space2.0 | 7 - tools/regression/bin/sh/parser/only-redir1.0 | 3 - tools/regression/bin/sh/parser/only-redir2.0 | 2 - tools/regression/bin/sh/parser/only-redir3.0 | 2 - tools/regression/bin/sh/parser/only-redir4.0 | 2 - tools/regression/bin/sh/parser/pipe-not1.0 | 3 - tools/regression/bin/sh/parser/var-assign1.0 | 19 -- tools/regression/bin/sh/regress.sh | 42 --- tools/regression/bin/sh/regress.t | 8 - tools/regression/bin/sh/set-e/and1.0 | 3 - tools/regression/bin/sh/set-e/and2.1 | 4 - tools/regression/bin/sh/set-e/and3.0 | 4 - tools/regression/bin/sh/set-e/and4.0 | 4 - tools/regression/bin/sh/set-e/background1.0 | 3 - tools/regression/bin/sh/set-e/cmd1.0 | 3 - tools/regression/bin/sh/set-e/cmd2.1 | 4 - tools/regression/bin/sh/set-e/elif1.0 | 7 - tools/regression/bin/sh/set-e/elif2.0 | 7 - tools/regression/bin/sh/set-e/eval1.0 | 3 - tools/regression/bin/sh/set-e/eval2.1 | 4 - tools/regression/bin/sh/set-e/for1.0 | 9 - tools/regression/bin/sh/set-e/func1.0 | 7 - tools/regression/bin/sh/set-e/func2.1 | 7 - tools/regression/bin/sh/set-e/if1.0 | 5 - tools/regression/bin/sh/set-e/if2.0 | 7 - tools/regression/bin/sh/set-e/if3.0 | 5 - tools/regression/bin/sh/set-e/not1.0 | 4 - tools/regression/bin/sh/set-e/not2.0 | 4 - tools/regression/bin/sh/set-e/or1.0 | 3 - tools/regression/bin/sh/set-e/or2.0 | 3 - tools/regression/bin/sh/set-e/or3.1 | 4 - tools/regression/bin/sh/set-e/pipe1.1 | 4 - tools/regression/bin/sh/set-e/pipe2.0 | 3 - tools/regression/bin/sh/set-e/return1.0 | 11 - tools/regression/bin/sh/set-e/semi1.1 | 4 - tools/regression/bin/sh/set-e/semi2.1 | 4 - tools/regression/bin/sh/set-e/subshell1.0 | 3 - tools/regression/bin/sh/set-e/subshell2.1 | 4 - tools/regression/bin/sh/set-e/until1.0 | 5 - tools/regression/bin/sh/set-e/until2.0 | 5 - tools/regression/bin/sh/set-e/until3.0 | 9 - tools/regression/bin/sh/set-e/while1.0 | 5 - tools/regression/bin/sh/set-e/while2.0 | 5 - tools/regression/bin/sh/set-e/while3.0 | 9 - tools/regression/bin/test/Makefile | 4 - tools/regression/bin/test/regress.sh | 196 -------------- tools/regression/bin/test/regress.t | 6 - 832 files changed, 7357 insertions(+), 6859 deletions(-) create mode 100644 bin/date/tests/Makefile create mode 100644 bin/date/tests/legacy_test.sh create mode 100644 bin/mv/tests/Makefile create mode 100644 bin/mv/tests/legacy_test.sh create mode 100644 bin/pax/tests/Makefile create mode 100644 bin/pax/tests/legacy_test.sh create mode 100644 bin/sh/tests/Makefile create mode 100644 bin/sh/tests/builtins/Makefile create mode 100644 bin/sh/tests/builtins/alias.0 create mode 100644 bin/sh/tests/builtins/alias.0.stdout create mode 100644 bin/sh/tests/builtins/alias.1 create mode 100644 bin/sh/tests/builtins/alias.1.stderr create mode 100644 bin/sh/tests/builtins/alias3.0 create mode 100644 bin/sh/tests/builtins/alias3.0.stdout create mode 100644 bin/sh/tests/builtins/alias4.0 create mode 100644 bin/sh/tests/builtins/break1.0 create mode 100644 bin/sh/tests/builtins/break2.0 create mode 100644 bin/sh/tests/builtins/break2.0.stdout create mode 100644 bin/sh/tests/builtins/break3.0 create mode 100644 bin/sh/tests/builtins/break4.4 create mode 100644 bin/sh/tests/builtins/break5.4 create mode 100644 bin/sh/tests/builtins/builtin1.0 create mode 100644 bin/sh/tests/builtins/case1.0 create mode 100644 bin/sh/tests/builtins/case10.0 create mode 100644 bin/sh/tests/builtins/case11.0 create mode 100644 bin/sh/tests/builtins/case12.0 create mode 100644 bin/sh/tests/builtins/case13.0 create mode 100644 bin/sh/tests/builtins/case14.0 create mode 100644 bin/sh/tests/builtins/case15.0 create mode 100644 bin/sh/tests/builtins/case16.0 create mode 100644 bin/sh/tests/builtins/case17.0 create mode 100644 bin/sh/tests/builtins/case18.0 create mode 100644 bin/sh/tests/builtins/case19.0 create mode 100644 bin/sh/tests/builtins/case2.0 create mode 100644 bin/sh/tests/builtins/case3.0 create mode 100644 bin/sh/tests/builtins/case4.0 create mode 100644 bin/sh/tests/builtins/case5.0 create mode 100644 bin/sh/tests/builtins/case6.0 create mode 100644 bin/sh/tests/builtins/case7.0 create mode 100644 bin/sh/tests/builtins/case8.0 create mode 100644 bin/sh/tests/builtins/case9.0 create mode 100644 bin/sh/tests/builtins/cd1.0 create mode 100644 bin/sh/tests/builtins/cd2.0 create mode 100644 bin/sh/tests/builtins/cd3.0 create mode 100644 bin/sh/tests/builtins/cd4.0 create mode 100644 bin/sh/tests/builtins/cd5.0 create mode 100644 bin/sh/tests/builtins/cd6.0 create mode 100644 bin/sh/tests/builtins/cd7.0 create mode 100644 bin/sh/tests/builtins/cd8.0 create mode 100644 bin/sh/tests/builtins/command1.0 create mode 100644 bin/sh/tests/builtins/command10.0 create mode 100644 bin/sh/tests/builtins/command11.0 create mode 100644 bin/sh/tests/builtins/command12.0 create mode 100644 bin/sh/tests/builtins/command2.0 create mode 100644 bin/sh/tests/builtins/command3.0 create mode 100644 bin/sh/tests/builtins/command3.0.stdout create mode 100644 bin/sh/tests/builtins/command4.0 create mode 100644 bin/sh/tests/builtins/command5.0 create mode 100644 bin/sh/tests/builtins/command5.0.stdout create mode 100644 bin/sh/tests/builtins/command6.0 create mode 100644 bin/sh/tests/builtins/command6.0.stdout create mode 100644 bin/sh/tests/builtins/command7.0 create mode 100644 bin/sh/tests/builtins/command8.0 create mode 100644 bin/sh/tests/builtins/command9.0 create mode 100644 bin/sh/tests/builtins/dot1.0 create mode 100644 bin/sh/tests/builtins/dot2.0 create mode 100644 bin/sh/tests/builtins/dot3.0 create mode 100644 bin/sh/tests/builtins/dot4.0 create mode 100644 bin/sh/tests/builtins/eval1.0 create mode 100644 bin/sh/tests/builtins/eval2.0 create mode 100644 bin/sh/tests/builtins/eval3.0 create mode 100644 bin/sh/tests/builtins/eval4.0 create mode 100644 bin/sh/tests/builtins/eval5.0 create mode 100644 bin/sh/tests/builtins/eval6.0 create mode 100644 bin/sh/tests/builtins/exec1.0 create mode 100644 bin/sh/tests/builtins/exec2.0 create mode 100644 bin/sh/tests/builtins/exit1.0 create mode 100644 bin/sh/tests/builtins/exit2.8 create mode 100644 bin/sh/tests/builtins/exit3.0 create mode 100644 bin/sh/tests/builtins/export1.0 create mode 100644 bin/sh/tests/builtins/fc1.0 create mode 100644 bin/sh/tests/builtins/fc2.0 create mode 100644 bin/sh/tests/builtins/for1.0 create mode 100644 bin/sh/tests/builtins/for2.0 create mode 100644 bin/sh/tests/builtins/for3.0 create mode 100644 bin/sh/tests/builtins/getopts1.0 create mode 100644 bin/sh/tests/builtins/getopts1.0.stdout create mode 100644 bin/sh/tests/builtins/getopts2.0 create mode 100644 bin/sh/tests/builtins/getopts2.0.stdout create mode 100644 bin/sh/tests/builtins/hash1.0 create mode 100644 bin/sh/tests/builtins/hash1.0.stdout create mode 100644 bin/sh/tests/builtins/hash2.0 create mode 100644 bin/sh/tests/builtins/hash2.0.stdout create mode 100644 bin/sh/tests/builtins/hash3.0 create mode 100644 bin/sh/tests/builtins/hash3.0.stdout create mode 100644 bin/sh/tests/builtins/hash4.0 create mode 100644 bin/sh/tests/builtins/jobid1.0 create mode 100644 bin/sh/tests/builtins/jobid2.0 create mode 100644 bin/sh/tests/builtins/lineno.0 create mode 100644 bin/sh/tests/builtins/lineno.0.stdout create mode 100644 bin/sh/tests/builtins/local1.0 create mode 100644 bin/sh/tests/builtins/local2.0 create mode 100644 bin/sh/tests/builtins/local3.0 create mode 100644 bin/sh/tests/builtins/local4.0 create mode 100644 bin/sh/tests/builtins/locale1.0 create mode 100644 bin/sh/tests/builtins/printf1.0 create mode 100644 bin/sh/tests/builtins/printf2.0 create mode 100644 bin/sh/tests/builtins/printf3.0 create mode 100644 bin/sh/tests/builtins/printf4.0 create mode 100644 bin/sh/tests/builtins/read1.0 create mode 100644 bin/sh/tests/builtins/read1.0.stdout create mode 100644 bin/sh/tests/builtins/read2.0 create mode 100644 bin/sh/tests/builtins/read3.0 create mode 100644 bin/sh/tests/builtins/read3.0.stdout create mode 100644 bin/sh/tests/builtins/read4.0 create mode 100644 bin/sh/tests/builtins/read4.0.stdout create mode 100644 bin/sh/tests/builtins/read5.0 create mode 100644 bin/sh/tests/builtins/read6.0 create mode 100644 bin/sh/tests/builtins/read7.0 create mode 100644 bin/sh/tests/builtins/return1.0 create mode 100644 bin/sh/tests/builtins/return2.1 create mode 100644 bin/sh/tests/builtins/return3.1 create mode 100644 bin/sh/tests/builtins/return4.0 create mode 100644 bin/sh/tests/builtins/return5.0 create mode 100644 bin/sh/tests/builtins/return6.4 create mode 100644 bin/sh/tests/builtins/return7.4 create mode 100644 bin/sh/tests/builtins/return8.0 create mode 100644 bin/sh/tests/builtins/set1.0 create mode 100644 bin/sh/tests/builtins/set2.0 create mode 100644 bin/sh/tests/builtins/trap1.0 create mode 100644 bin/sh/tests/builtins/trap10.0 create mode 100644 bin/sh/tests/builtins/trap11.0 create mode 100644 bin/sh/tests/builtins/trap12.0 create mode 100644 bin/sh/tests/builtins/trap13.0 create mode 100644 bin/sh/tests/builtins/trap14.0 create mode 100644 bin/sh/tests/builtins/trap2.0 create mode 100644 bin/sh/tests/builtins/trap3.0 create mode 100644 bin/sh/tests/builtins/trap4.0 create mode 100644 bin/sh/tests/builtins/trap5.0 create mode 100644 bin/sh/tests/builtins/trap6.0 create mode 100644 bin/sh/tests/builtins/trap7.0 create mode 100644 bin/sh/tests/builtins/trap8.0 create mode 100644 bin/sh/tests/builtins/trap9.0 create mode 100644 bin/sh/tests/builtins/type1.0 create mode 100644 bin/sh/tests/builtins/type1.0.stderr create mode 100644 bin/sh/tests/builtins/type2.0 create mode 100644 bin/sh/tests/builtins/type3.0 create mode 100644 bin/sh/tests/builtins/unalias.0 create mode 100644 bin/sh/tests/builtins/var-assign.0 create mode 100644 bin/sh/tests/builtins/var-assign2.0 create mode 100644 bin/sh/tests/builtins/wait1.0 create mode 100644 bin/sh/tests/builtins/wait10.0 create mode 100644 bin/sh/tests/builtins/wait2.0 create mode 100644 bin/sh/tests/builtins/wait3.0 create mode 100644 bin/sh/tests/builtins/wait4.0 create mode 100644 bin/sh/tests/builtins/wait5.0 create mode 100644 bin/sh/tests/builtins/wait6.0 create mode 100644 bin/sh/tests/builtins/wait7.0 create mode 100644 bin/sh/tests/builtins/wait8.0 create mode 100644 bin/sh/tests/builtins/wait9.127 create mode 100644 bin/sh/tests/errors/Makefile create mode 100644 bin/sh/tests/errors/assignment-error1.0 create mode 100644 bin/sh/tests/errors/assignment-error2.0 create mode 100644 bin/sh/tests/errors/backquote-error1.0 create mode 100644 bin/sh/tests/errors/backquote-error2.0 create mode 100644 bin/sh/tests/errors/bad-binary1.126 create mode 100644 bin/sh/tests/errors/bad-keyword1.0 create mode 100644 bin/sh/tests/errors/bad-parm-exp1.0 create mode 100644 bin/sh/tests/errors/bad-parm-exp2.2 create mode 100644 bin/sh/tests/errors/bad-parm-exp2.2.stderr create mode 100644 bin/sh/tests/errors/bad-parm-exp3.2 create mode 100644 bin/sh/tests/errors/bad-parm-exp3.2.stderr create mode 100644 bin/sh/tests/errors/bad-parm-exp4.2 create mode 100644 bin/sh/tests/errors/bad-parm-exp4.2.stderr create mode 100644 bin/sh/tests/errors/bad-parm-exp5.2 create mode 100644 bin/sh/tests/errors/bad-parm-exp5.2.stderr create mode 100644 bin/sh/tests/errors/bad-parm-exp6.2 create mode 100644 bin/sh/tests/errors/bad-parm-exp6.2.stderr create mode 100644 bin/sh/tests/errors/option-error.0 create mode 100644 bin/sh/tests/errors/redirection-error.0 create mode 100644 bin/sh/tests/errors/redirection-error2.2 create mode 100644 bin/sh/tests/errors/redirection-error3.0 create mode 100644 bin/sh/tests/errors/redirection-error4.0 create mode 100644 bin/sh/tests/errors/redirection-error5.0 create mode 100644 bin/sh/tests/errors/redirection-error6.0 create mode 100644 bin/sh/tests/errors/redirection-error7.0 create mode 100644 bin/sh/tests/errors/write-error1.0 create mode 100644 bin/sh/tests/execution/Makefile create mode 100644 bin/sh/tests/execution/bg1.0 create mode 100644 bin/sh/tests/execution/bg10.0 create mode 100644 bin/sh/tests/execution/bg10.0.stdout create mode 100644 bin/sh/tests/execution/bg2.0 create mode 100644 bin/sh/tests/execution/bg3.0 create mode 100644 bin/sh/tests/execution/bg4.0 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 create mode 100644 bin/sh/tests/execution/fork1.0 create mode 100644 bin/sh/tests/execution/fork2.0 create mode 100644 bin/sh/tests/execution/fork3.0 create mode 100644 bin/sh/tests/execution/func1.0 create mode 100644 bin/sh/tests/execution/func2.0 create mode 100644 bin/sh/tests/execution/func3.0 create mode 100644 bin/sh/tests/execution/hash1.0 create mode 100644 bin/sh/tests/execution/int-cmd1.0 create mode 100644 bin/sh/tests/execution/killed1.0 create mode 100644 bin/sh/tests/execution/killed2.0 create mode 100644 bin/sh/tests/execution/not1.0 create mode 100644 bin/sh/tests/execution/not2.0 create mode 100644 bin/sh/tests/execution/path1.0 create mode 100644 bin/sh/tests/execution/redir1.0 create mode 100644 bin/sh/tests/execution/redir2.0 create mode 100644 bin/sh/tests/execution/redir3.0 create mode 100644 bin/sh/tests/execution/redir4.0 create mode 100644 bin/sh/tests/execution/redir5.0 create mode 100644 bin/sh/tests/execution/redir6.0 create mode 100644 bin/sh/tests/execution/redir7.0 create mode 100644 bin/sh/tests/execution/set-n1.0 create mode 100644 bin/sh/tests/execution/set-n2.0 create mode 100644 bin/sh/tests/execution/set-n3.0 create mode 100644 bin/sh/tests/execution/set-n4.0 create mode 100644 bin/sh/tests/execution/set-x1.0 create mode 100644 bin/sh/tests/execution/set-x2.0 create mode 100644 bin/sh/tests/execution/set-x3.0 create mode 100644 bin/sh/tests/execution/shellproc1.0 create mode 100644 bin/sh/tests/execution/subshell1.0 create mode 100644 bin/sh/tests/execution/subshell1.0.stdout create mode 100644 bin/sh/tests/execution/subshell2.0 create mode 100644 bin/sh/tests/execution/subshell3.0 create mode 100644 bin/sh/tests/execution/subshell4.0 create mode 100644 bin/sh/tests/execution/unknown1.0 create mode 100644 bin/sh/tests/execution/var-assign1.0 create mode 100644 bin/sh/tests/expansion/Makefile create mode 100644 bin/sh/tests/expansion/arith1.0 create mode 100644 bin/sh/tests/expansion/arith10.0 create mode 100644 bin/sh/tests/expansion/arith11.0 create mode 100644 bin/sh/tests/expansion/arith12.0 create mode 100644 bin/sh/tests/expansion/arith13.0 create mode 100644 bin/sh/tests/expansion/arith2.0 create mode 100644 bin/sh/tests/expansion/arith3.0 create mode 100644 bin/sh/tests/expansion/arith4.0 create mode 100644 bin/sh/tests/expansion/arith5.0 create mode 100644 bin/sh/tests/expansion/arith6.0 create mode 100644 bin/sh/tests/expansion/arith7.0 create mode 100644 bin/sh/tests/expansion/arith8.0 create mode 100644 bin/sh/tests/expansion/arith9.0 create mode 100644 bin/sh/tests/expansion/assign1.0 create mode 100644 bin/sh/tests/expansion/cmdsubst1.0 create mode 100644 bin/sh/tests/expansion/cmdsubst10.0 create mode 100644 bin/sh/tests/expansion/cmdsubst11.0 create mode 100644 bin/sh/tests/expansion/cmdsubst12.0 create mode 100644 bin/sh/tests/expansion/cmdsubst13.0 create mode 100644 bin/sh/tests/expansion/cmdsubst14.0 create mode 100644 bin/sh/tests/expansion/cmdsubst15.0 create mode 100644 bin/sh/tests/expansion/cmdsubst16.0 create mode 100644 bin/sh/tests/expansion/cmdsubst17.0 create mode 100644 bin/sh/tests/expansion/cmdsubst2.0 create mode 100644 bin/sh/tests/expansion/cmdsubst3.0 create mode 100644 bin/sh/tests/expansion/cmdsubst4.0 create mode 100644 bin/sh/tests/expansion/cmdsubst5.0 create mode 100644 bin/sh/tests/expansion/cmdsubst6.0 create mode 100644 bin/sh/tests/expansion/cmdsubst7.0 create mode 100644 bin/sh/tests/expansion/cmdsubst8.0 create mode 100644 bin/sh/tests/expansion/cmdsubst9.0 create mode 100644 bin/sh/tests/expansion/export1.0 create mode 100644 bin/sh/tests/expansion/export2.0 create mode 100644 bin/sh/tests/expansion/export3.0 create mode 100644 bin/sh/tests/expansion/heredoc1.0 create mode 100644 bin/sh/tests/expansion/heredoc2.0 create mode 100644 bin/sh/tests/expansion/ifs1.0 create mode 100644 bin/sh/tests/expansion/ifs2.0 create mode 100644 bin/sh/tests/expansion/ifs3.0 create mode 100644 bin/sh/tests/expansion/ifs4.0 create mode 100644 bin/sh/tests/expansion/length1.0 create mode 100644 bin/sh/tests/expansion/length2.0 create mode 100644 bin/sh/tests/expansion/length3.0 create mode 100644 bin/sh/tests/expansion/length4.0 create mode 100644 bin/sh/tests/expansion/length5.0 create mode 100644 bin/sh/tests/expansion/length6.0 create mode 100644 bin/sh/tests/expansion/length7.0 create mode 100644 bin/sh/tests/expansion/length8.0 create mode 100644 bin/sh/tests/expansion/local1.0 create mode 100644 bin/sh/tests/expansion/local2.0 create mode 100644 bin/sh/tests/expansion/pathname1.0 create mode 100644 bin/sh/tests/expansion/pathname2.0 create mode 100644 bin/sh/tests/expansion/pathname3.0 create mode 100644 bin/sh/tests/expansion/pathname4.0 create mode 100644 bin/sh/tests/expansion/plus-minus1.0 create mode 100644 bin/sh/tests/expansion/plus-minus2.0 create mode 100644 bin/sh/tests/expansion/plus-minus3.0 create mode 100644 bin/sh/tests/expansion/plus-minus4.0 create mode 100644 bin/sh/tests/expansion/plus-minus5.0 create mode 100644 bin/sh/tests/expansion/plus-minus6.0 create mode 100644 bin/sh/tests/expansion/plus-minus7.0 create mode 100644 bin/sh/tests/expansion/plus-minus8.0 create mode 100644 bin/sh/tests/expansion/question1.0 create mode 100644 bin/sh/tests/expansion/readonly1.0 create mode 100644 bin/sh/tests/expansion/set-u1.0 create mode 100644 bin/sh/tests/expansion/set-u2.0 create mode 100644 bin/sh/tests/expansion/set-u3.0 create mode 100644 bin/sh/tests/expansion/tilde1.0 create mode 100644 bin/sh/tests/expansion/tilde2.0 create mode 100644 bin/sh/tests/expansion/trim1.0 create mode 100644 bin/sh/tests/expansion/trim2.0 create mode 100644 bin/sh/tests/expansion/trim3.0 create mode 100644 bin/sh/tests/expansion/trim4.0 create mode 100644 bin/sh/tests/expansion/trim5.0 create mode 100644 bin/sh/tests/expansion/trim6.0 create mode 100644 bin/sh/tests/expansion/trim7.0 create mode 100644 bin/sh/tests/expansion/trim8.0 create mode 100644 bin/sh/tests/legacy_test.sh create mode 100644 bin/sh/tests/parameters/Makefile create mode 100644 bin/sh/tests/parameters/env1.0 create mode 100644 bin/sh/tests/parameters/exitstatus1.0 create mode 100644 bin/sh/tests/parameters/mail1.0 create mode 100644 bin/sh/tests/parameters/mail2.0 create mode 100644 bin/sh/tests/parameters/optind1.0 create mode 100644 bin/sh/tests/parameters/positional1.0 create mode 100644 bin/sh/tests/parameters/positional2.0 create mode 100644 bin/sh/tests/parameters/pwd1.0 create mode 100644 bin/sh/tests/parameters/pwd2.0 create mode 100644 bin/sh/tests/parser/Makefile create mode 100644 bin/sh/tests/parser/alias1.0 create mode 100644 bin/sh/tests/parser/alias10.0 create mode 100644 bin/sh/tests/parser/alias2.0 create mode 100644 bin/sh/tests/parser/alias3.0 create mode 100644 bin/sh/tests/parser/alias4.0 create mode 100644 bin/sh/tests/parser/alias5.0 create mode 100644 bin/sh/tests/parser/alias6.0 create mode 100644 bin/sh/tests/parser/alias7.0 create mode 100644 bin/sh/tests/parser/alias8.0 create mode 100644 bin/sh/tests/parser/alias9.0 create mode 100644 bin/sh/tests/parser/and-pipe-not.0 create mode 100644 bin/sh/tests/parser/case1.0 create mode 100644 bin/sh/tests/parser/case2.0 create mode 100644 bin/sh/tests/parser/dollar-quote1.0 create mode 100644 bin/sh/tests/parser/dollar-quote10.0 create mode 100644 bin/sh/tests/parser/dollar-quote11.0 create mode 100644 bin/sh/tests/parser/dollar-quote2.0 create mode 100644 bin/sh/tests/parser/dollar-quote3.0 create mode 100644 bin/sh/tests/parser/dollar-quote4.0 create mode 100644 bin/sh/tests/parser/dollar-quote5.0 create mode 100644 bin/sh/tests/parser/dollar-quote6.0 create mode 100644 bin/sh/tests/parser/dollar-quote7.0 create mode 100644 bin/sh/tests/parser/dollar-quote8.0 create mode 100644 bin/sh/tests/parser/dollar-quote9.0 create mode 100644 bin/sh/tests/parser/empty-braces1.0 create mode 100644 bin/sh/tests/parser/empty-cmd1.0 create mode 100644 bin/sh/tests/parser/for1.0 create mode 100644 bin/sh/tests/parser/for2.0 create mode 100644 bin/sh/tests/parser/func1.0 create mode 100644 bin/sh/tests/parser/func2.0 create mode 100644 bin/sh/tests/parser/func3.0 create mode 100644 bin/sh/tests/parser/heredoc1.0 create mode 100644 bin/sh/tests/parser/heredoc10.0 create mode 100644 bin/sh/tests/parser/heredoc11.0 create mode 100644 bin/sh/tests/parser/heredoc2.0 create mode 100644 bin/sh/tests/parser/heredoc3.0 create mode 100644 bin/sh/tests/parser/heredoc4.0 create mode 100644 bin/sh/tests/parser/heredoc5.0 create mode 100644 bin/sh/tests/parser/heredoc6.0 create mode 100644 bin/sh/tests/parser/heredoc7.0 create mode 100644 bin/sh/tests/parser/heredoc8.0 create mode 100644 bin/sh/tests/parser/heredoc9.0 create mode 100644 bin/sh/tests/parser/no-space1.0 create mode 100644 bin/sh/tests/parser/no-space2.0 create mode 100644 bin/sh/tests/parser/only-redir1.0 create mode 100644 bin/sh/tests/parser/only-redir2.0 create mode 100644 bin/sh/tests/parser/only-redir3.0 create mode 100644 bin/sh/tests/parser/only-redir4.0 create mode 100644 bin/sh/tests/parser/pipe-not1.0 create mode 100644 bin/sh/tests/parser/var-assign1.0 create mode 100644 bin/sh/tests/set-e/Makefile create mode 100644 bin/sh/tests/set-e/and1.0 create mode 100644 bin/sh/tests/set-e/and2.1 create mode 100644 bin/sh/tests/set-e/and3.0 create mode 100644 bin/sh/tests/set-e/and4.0 create mode 100644 bin/sh/tests/set-e/background1.0 create mode 100644 bin/sh/tests/set-e/cmd1.0 create mode 100644 bin/sh/tests/set-e/cmd2.1 create mode 100644 bin/sh/tests/set-e/elif1.0 create mode 100644 bin/sh/tests/set-e/elif2.0 create mode 100644 bin/sh/tests/set-e/eval1.0 create mode 100644 bin/sh/tests/set-e/eval2.1 create mode 100644 bin/sh/tests/set-e/for1.0 create mode 100644 bin/sh/tests/set-e/func1.0 create mode 100644 bin/sh/tests/set-e/func2.1 create mode 100644 bin/sh/tests/set-e/if1.0 create mode 100644 bin/sh/tests/set-e/if2.0 create mode 100644 bin/sh/tests/set-e/if3.0 create mode 100644 bin/sh/tests/set-e/not1.0 create mode 100644 bin/sh/tests/set-e/not2.0 create mode 100644 bin/sh/tests/set-e/or1.0 create mode 100644 bin/sh/tests/set-e/or2.0 create mode 100644 bin/sh/tests/set-e/or3.1 create mode 100644 bin/sh/tests/set-e/pipe1.1 create mode 100644 bin/sh/tests/set-e/pipe2.0 create mode 100644 bin/sh/tests/set-e/return1.0 create mode 100644 bin/sh/tests/set-e/semi1.1 create mode 100644 bin/sh/tests/set-e/semi2.1 create mode 100644 bin/sh/tests/set-e/subshell1.0 create mode 100644 bin/sh/tests/set-e/subshell2.1 create mode 100644 bin/sh/tests/set-e/until1.0 create mode 100644 bin/sh/tests/set-e/until2.0 create mode 100644 bin/sh/tests/set-e/until3.0 create mode 100644 bin/sh/tests/set-e/while1.0 create mode 100644 bin/sh/tests/set-e/while2.0 create mode 100644 bin/sh/tests/set-e/while3.0 create mode 100644 bin/test/tests/Makefile create mode 100644 bin/test/tests/legacy_test.sh 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.sh 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.sh delete mode 100644 tools/regression/bin/mv/regress.t delete mode 100644 tools/regression/bin/pax/Makefile delete mode 100755 tools/regression/bin/pax/regress.t delete mode 100644 tools/regression/bin/sh/Makefile delete mode 100644 tools/regression/bin/sh/builtins/alias.0 delete mode 100644 tools/regression/bin/sh/builtins/alias.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/alias.1 delete mode 100644 tools/regression/bin/sh/builtins/alias.1.stderr delete mode 100644 tools/regression/bin/sh/builtins/alias3.0 delete mode 100644 tools/regression/bin/sh/builtins/alias3.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/alias4.0 delete mode 100644 tools/regression/bin/sh/builtins/break1.0 delete mode 100644 tools/regression/bin/sh/builtins/break2.0 delete mode 100644 tools/regression/bin/sh/builtins/break2.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/break3.0 delete mode 100644 tools/regression/bin/sh/builtins/break4.4 delete mode 100644 tools/regression/bin/sh/builtins/break5.4 delete mode 100644 tools/regression/bin/sh/builtins/builtin1.0 delete mode 100644 tools/regression/bin/sh/builtins/case1.0 delete mode 100644 tools/regression/bin/sh/builtins/case10.0 delete mode 100644 tools/regression/bin/sh/builtins/case11.0 delete mode 100644 tools/regression/bin/sh/builtins/case12.0 delete mode 100644 tools/regression/bin/sh/builtins/case13.0 delete mode 100644 tools/regression/bin/sh/builtins/case14.0 delete mode 100644 tools/regression/bin/sh/builtins/case15.0 delete mode 100644 tools/regression/bin/sh/builtins/case16.0 delete mode 100644 tools/regression/bin/sh/builtins/case17.0 delete mode 100644 tools/regression/bin/sh/builtins/case18.0 delete mode 100644 tools/regression/bin/sh/builtins/case19.0 delete mode 100644 tools/regression/bin/sh/builtins/case2.0 delete mode 100644 tools/regression/bin/sh/builtins/case3.0 delete mode 100644 tools/regression/bin/sh/builtins/case4.0 delete mode 100644 tools/regression/bin/sh/builtins/case5.0 delete mode 100644 tools/regression/bin/sh/builtins/case6.0 delete mode 100644 tools/regression/bin/sh/builtins/case7.0 delete mode 100644 tools/regression/bin/sh/builtins/case8.0 delete mode 100644 tools/regression/bin/sh/builtins/case9.0 delete mode 100644 tools/regression/bin/sh/builtins/cd1.0 delete mode 100644 tools/regression/bin/sh/builtins/cd2.0 delete mode 100644 tools/regression/bin/sh/builtins/cd3.0 delete mode 100644 tools/regression/bin/sh/builtins/cd4.0 delete mode 100644 tools/regression/bin/sh/builtins/cd5.0 delete mode 100644 tools/regression/bin/sh/builtins/cd6.0 delete mode 100644 tools/regression/bin/sh/builtins/cd7.0 delete mode 100644 tools/regression/bin/sh/builtins/cd8.0 delete mode 100644 tools/regression/bin/sh/builtins/command1.0 delete mode 100644 tools/regression/bin/sh/builtins/command10.0 delete mode 100644 tools/regression/bin/sh/builtins/command11.0 delete mode 100644 tools/regression/bin/sh/builtins/command12.0 delete mode 100644 tools/regression/bin/sh/builtins/command2.0 delete mode 100644 tools/regression/bin/sh/builtins/command3.0 delete mode 100644 tools/regression/bin/sh/builtins/command3.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/command4.0 delete mode 100644 tools/regression/bin/sh/builtins/command5.0 delete mode 100644 tools/regression/bin/sh/builtins/command5.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/command6.0 delete mode 100644 tools/regression/bin/sh/builtins/command6.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/command7.0 delete mode 100644 tools/regression/bin/sh/builtins/command8.0 delete mode 100644 tools/regression/bin/sh/builtins/command9.0 delete mode 100644 tools/regression/bin/sh/builtins/dot1.0 delete mode 100644 tools/regression/bin/sh/builtins/dot2.0 delete mode 100644 tools/regression/bin/sh/builtins/dot3.0 delete mode 100644 tools/regression/bin/sh/builtins/dot4.0 delete mode 100644 tools/regression/bin/sh/builtins/eval1.0 delete mode 100644 tools/regression/bin/sh/builtins/eval2.0 delete mode 100644 tools/regression/bin/sh/builtins/eval3.0 delete mode 100644 tools/regression/bin/sh/builtins/eval4.0 delete mode 100644 tools/regression/bin/sh/builtins/eval5.0 delete mode 100644 tools/regression/bin/sh/builtins/eval6.0 delete mode 100644 tools/regression/bin/sh/builtins/exec1.0 delete mode 100644 tools/regression/bin/sh/builtins/exec2.0 delete mode 100644 tools/regression/bin/sh/builtins/exit1.0 delete mode 100644 tools/regression/bin/sh/builtins/exit2.8 delete mode 100644 tools/regression/bin/sh/builtins/exit3.0 delete mode 100644 tools/regression/bin/sh/builtins/export1.0 delete mode 100644 tools/regression/bin/sh/builtins/fc1.0 delete mode 100644 tools/regression/bin/sh/builtins/fc2.0 delete mode 100644 tools/regression/bin/sh/builtins/for1.0 delete mode 100644 tools/regression/bin/sh/builtins/for2.0 delete mode 100644 tools/regression/bin/sh/builtins/for3.0 delete mode 100644 tools/regression/bin/sh/builtins/getopts1.0 delete mode 100644 tools/regression/bin/sh/builtins/getopts1.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/getopts2.0 delete mode 100644 tools/regression/bin/sh/builtins/getopts2.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/hash1.0 delete mode 100644 tools/regression/bin/sh/builtins/hash1.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/hash2.0 delete mode 100644 tools/regression/bin/sh/builtins/hash2.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/hash3.0 delete mode 100644 tools/regression/bin/sh/builtins/hash3.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/hash4.0 delete mode 100644 tools/regression/bin/sh/builtins/jobid1.0 delete mode 100644 tools/regression/bin/sh/builtins/jobid2.0 delete mode 100644 tools/regression/bin/sh/builtins/lineno.0 delete mode 100644 tools/regression/bin/sh/builtins/lineno.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/local1.0 delete mode 100644 tools/regression/bin/sh/builtins/local2.0 delete mode 100644 tools/regression/bin/sh/builtins/local3.0 delete mode 100644 tools/regression/bin/sh/builtins/local4.0 delete mode 100644 tools/regression/bin/sh/builtins/locale1.0 delete mode 100644 tools/regression/bin/sh/builtins/printf1.0 delete mode 100644 tools/regression/bin/sh/builtins/printf2.0 delete mode 100644 tools/regression/bin/sh/builtins/printf3.0 delete mode 100644 tools/regression/bin/sh/builtins/printf4.0 delete mode 100644 tools/regression/bin/sh/builtins/read1.0 delete mode 100644 tools/regression/bin/sh/builtins/read1.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/read2.0 delete mode 100644 tools/regression/bin/sh/builtins/read3.0 delete mode 100644 tools/regression/bin/sh/builtins/read3.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/read4.0 delete mode 100644 tools/regression/bin/sh/builtins/read4.0.stdout delete mode 100644 tools/regression/bin/sh/builtins/read5.0 delete mode 100644 tools/regression/bin/sh/builtins/read6.0 delete mode 100644 tools/regression/bin/sh/builtins/read7.0 delete mode 100644 tools/regression/bin/sh/builtins/return1.0 delete mode 100644 tools/regression/bin/sh/builtins/return2.1 delete mode 100644 tools/regression/bin/sh/builtins/return3.1 delete mode 100644 tools/regression/bin/sh/builtins/return4.0 delete mode 100644 tools/regression/bin/sh/builtins/return5.0 delete mode 100644 tools/regression/bin/sh/builtins/return6.4 delete mode 100644 tools/regression/bin/sh/builtins/return7.4 delete mode 100644 tools/regression/bin/sh/builtins/return8.0 delete mode 100644 tools/regression/bin/sh/builtins/set1.0 delete mode 100644 tools/regression/bin/sh/builtins/set2.0 delete mode 100644 tools/regression/bin/sh/builtins/trap1.0 delete mode 100644 tools/regression/bin/sh/builtins/trap10.0 delete mode 100644 tools/regression/bin/sh/builtins/trap11.0 delete mode 100644 tools/regression/bin/sh/builtins/trap12.0 delete mode 100644 tools/regression/bin/sh/builtins/trap13.0 delete mode 100644 tools/regression/bin/sh/builtins/trap14.0 delete mode 100644 tools/regression/bin/sh/builtins/trap2.0 delete mode 100644 tools/regression/bin/sh/builtins/trap3.0 delete mode 100644 tools/regression/bin/sh/builtins/trap4.0 delete mode 100644 tools/regression/bin/sh/builtins/trap5.0 delete mode 100644 tools/regression/bin/sh/builtins/trap6.0 delete mode 100644 tools/regression/bin/sh/builtins/trap7.0 delete mode 100644 tools/regression/bin/sh/builtins/trap8.0 delete mode 100644 tools/regression/bin/sh/builtins/trap9.0 delete mode 100644 tools/regression/bin/sh/builtins/type1.0 delete mode 100644 tools/regression/bin/sh/builtins/type1.0.stderr delete mode 100644 tools/regression/bin/sh/builtins/type2.0 delete mode 100644 tools/regression/bin/sh/builtins/type3.0 delete mode 100644 tools/regression/bin/sh/builtins/unalias.0 delete mode 100644 tools/regression/bin/sh/builtins/var-assign.0 delete mode 100644 tools/regression/bin/sh/builtins/var-assign2.0 delete mode 100644 tools/regression/bin/sh/builtins/wait1.0 delete mode 100644 tools/regression/bin/sh/builtins/wait10.0 delete mode 100644 tools/regression/bin/sh/builtins/wait2.0 delete mode 100644 tools/regression/bin/sh/builtins/wait3.0 delete mode 100644 tools/regression/bin/sh/builtins/wait4.0 delete mode 100644 tools/regression/bin/sh/builtins/wait5.0 delete mode 100644 tools/regression/bin/sh/builtins/wait6.0 delete mode 100644 tools/regression/bin/sh/builtins/wait7.0 delete mode 100644 tools/regression/bin/sh/builtins/wait8.0 delete mode 100644 tools/regression/bin/sh/builtins/wait9.127 delete mode 100644 tools/regression/bin/sh/errors/assignment-error1.0 delete mode 100644 tools/regression/bin/sh/errors/assignment-error2.0 delete mode 100644 tools/regression/bin/sh/errors/backquote-error1.0 delete mode 100644 tools/regression/bin/sh/errors/backquote-error2.0 delete mode 100644 tools/regression/bin/sh/errors/bad-binary1.126 delete mode 100644 tools/regression/bin/sh/errors/bad-keyword1.0 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp1.0 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp2.2 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp3.2 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp4.2 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp5.2 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp6.2 delete mode 100644 tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr delete mode 100644 tools/regression/bin/sh/errors/option-error.0 delete mode 100644 tools/regression/bin/sh/errors/redirection-error.0 delete mode 100644 tools/regression/bin/sh/errors/redirection-error2.2 delete mode 100644 tools/regression/bin/sh/errors/redirection-error3.0 delete mode 100644 tools/regression/bin/sh/errors/redirection-error4.0 delete mode 100644 tools/regression/bin/sh/errors/redirection-error5.0 delete mode 100644 tools/regression/bin/sh/errors/redirection-error6.0 delete mode 100644 tools/regression/bin/sh/errors/redirection-error7.0 delete mode 100644 tools/regression/bin/sh/errors/write-error1.0 delete mode 100644 tools/regression/bin/sh/execution/bg1.0 delete mode 100644 tools/regression/bin/sh/execution/bg10.0 delete mode 100644 tools/regression/bin/sh/execution/bg10.0.stdout delete mode 100644 tools/regression/bin/sh/execution/bg2.0 delete mode 100644 tools/regression/bin/sh/execution/bg3.0 delete mode 100644 tools/regression/bin/sh/execution/bg4.0 delete mode 100644 tools/regression/bin/sh/execution/bg5.0 delete mode 100644 tools/regression/bin/sh/execution/bg6.0 delete mode 100644 tools/regression/bin/sh/execution/bg6.0.stdout delete mode 100644 tools/regression/bin/sh/execution/bg7.0 delete mode 100644 tools/regression/bin/sh/execution/bg8.0 delete mode 100644 tools/regression/bin/sh/execution/bg9.0 delete mode 100644 tools/regression/bin/sh/execution/fork1.0 delete mode 100644 tools/regression/bin/sh/execution/fork2.0 delete mode 100644 tools/regression/bin/sh/execution/fork3.0 delete mode 100644 tools/regression/bin/sh/execution/func1.0 delete mode 100644 tools/regression/bin/sh/execution/func2.0 delete mode 100644 tools/regression/bin/sh/execution/func3.0 delete mode 100644 tools/regression/bin/sh/execution/hash1.0 delete mode 100644 tools/regression/bin/sh/execution/int-cmd1.0 delete mode 100644 tools/regression/bin/sh/execution/killed1.0 delete mode 100644 tools/regression/bin/sh/execution/killed2.0 delete mode 100644 tools/regression/bin/sh/execution/not1.0 delete mode 100644 tools/regression/bin/sh/execution/not2.0 delete mode 100644 tools/regression/bin/sh/execution/path1.0 delete mode 100644 tools/regression/bin/sh/execution/redir1.0 delete mode 100644 tools/regression/bin/sh/execution/redir2.0 delete mode 100644 tools/regression/bin/sh/execution/redir3.0 delete mode 100644 tools/regression/bin/sh/execution/redir4.0 delete mode 100644 tools/regression/bin/sh/execution/redir5.0 delete mode 100644 tools/regression/bin/sh/execution/redir6.0 delete mode 100644 tools/regression/bin/sh/execution/redir7.0 delete mode 100644 tools/regression/bin/sh/execution/set-n1.0 delete mode 100644 tools/regression/bin/sh/execution/set-n2.0 delete mode 100644 tools/regression/bin/sh/execution/set-n3.0 delete mode 100644 tools/regression/bin/sh/execution/set-n4.0 delete mode 100644 tools/regression/bin/sh/execution/set-x1.0 delete mode 100644 tools/regression/bin/sh/execution/set-x2.0 delete mode 100644 tools/regression/bin/sh/execution/set-x3.0 delete mode 100644 tools/regression/bin/sh/execution/shellproc1.0 delete mode 100644 tools/regression/bin/sh/execution/subshell1.0 delete mode 100644 tools/regression/bin/sh/execution/subshell1.0.stdout delete mode 100644 tools/regression/bin/sh/execution/subshell2.0 delete mode 100644 tools/regression/bin/sh/execution/subshell3.0 delete mode 100644 tools/regression/bin/sh/execution/subshell4.0 delete mode 100644 tools/regression/bin/sh/execution/unknown1.0 delete mode 100644 tools/regression/bin/sh/execution/var-assign1.0 delete mode 100644 tools/regression/bin/sh/expansion/arith1.0 delete mode 100644 tools/regression/bin/sh/expansion/arith10.0 delete mode 100644 tools/regression/bin/sh/expansion/arith11.0 delete mode 100644 tools/regression/bin/sh/expansion/arith12.0 delete mode 100644 tools/regression/bin/sh/expansion/arith13.0 delete mode 100644 tools/regression/bin/sh/expansion/arith2.0 delete mode 100644 tools/regression/bin/sh/expansion/arith3.0 delete mode 100644 tools/regression/bin/sh/expansion/arith4.0 delete mode 100644 tools/regression/bin/sh/expansion/arith5.0 delete mode 100644 tools/regression/bin/sh/expansion/arith6.0 delete mode 100644 tools/regression/bin/sh/expansion/arith7.0 delete mode 100644 tools/regression/bin/sh/expansion/arith8.0 delete mode 100644 tools/regression/bin/sh/expansion/arith9.0 delete mode 100644 tools/regression/bin/sh/expansion/assign1.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst1.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst10.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst11.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst12.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst13.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst14.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst15.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst16.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst17.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst2.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst3.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst4.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst5.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst6.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst7.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst8.0 delete mode 100644 tools/regression/bin/sh/expansion/cmdsubst9.0 delete mode 100644 tools/regression/bin/sh/expansion/export1.0 delete mode 100644 tools/regression/bin/sh/expansion/export2.0 delete mode 100644 tools/regression/bin/sh/expansion/export3.0 delete mode 100644 tools/regression/bin/sh/expansion/heredoc1.0 delete mode 100644 tools/regression/bin/sh/expansion/heredoc2.0 delete mode 100644 tools/regression/bin/sh/expansion/ifs1.0 delete mode 100644 tools/regression/bin/sh/expansion/ifs2.0 delete mode 100644 tools/regression/bin/sh/expansion/ifs3.0 delete mode 100644 tools/regression/bin/sh/expansion/ifs4.0 delete mode 100644 tools/regression/bin/sh/expansion/length1.0 delete mode 100644 tools/regression/bin/sh/expansion/length2.0 delete mode 100644 tools/regression/bin/sh/expansion/length3.0 delete mode 100644 tools/regression/bin/sh/expansion/length4.0 delete mode 100644 tools/regression/bin/sh/expansion/length5.0 delete mode 100644 tools/regression/bin/sh/expansion/length6.0 delete mode 100644 tools/regression/bin/sh/expansion/length7.0 delete mode 100644 tools/regression/bin/sh/expansion/length8.0 delete mode 100644 tools/regression/bin/sh/expansion/local1.0 delete mode 100644 tools/regression/bin/sh/expansion/local2.0 delete mode 100644 tools/regression/bin/sh/expansion/pathname1.0 delete mode 100644 tools/regression/bin/sh/expansion/pathname2.0 delete mode 100644 tools/regression/bin/sh/expansion/pathname3.0 delete mode 100644 tools/regression/bin/sh/expansion/pathname4.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus1.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus2.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus3.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus4.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus5.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus6.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus7.0 delete mode 100644 tools/regression/bin/sh/expansion/plus-minus8.0 delete mode 100644 tools/regression/bin/sh/expansion/question1.0 delete mode 100644 tools/regression/bin/sh/expansion/readonly1.0 delete mode 100644 tools/regression/bin/sh/expansion/set-u1.0 delete mode 100644 tools/regression/bin/sh/expansion/set-u2.0 delete mode 100644 tools/regression/bin/sh/expansion/set-u3.0 delete mode 100644 tools/regression/bin/sh/expansion/tilde1.0 delete mode 100644 tools/regression/bin/sh/expansion/tilde2.0 delete mode 100644 tools/regression/bin/sh/expansion/trim1.0 delete mode 100644 tools/regression/bin/sh/expansion/trim2.0 delete mode 100644 tools/regression/bin/sh/expansion/trim3.0 delete mode 100644 tools/regression/bin/sh/expansion/trim4.0 delete mode 100644 tools/regression/bin/sh/expansion/trim5.0 delete mode 100644 tools/regression/bin/sh/expansion/trim6.0 delete mode 100644 tools/regression/bin/sh/expansion/trim7.0 delete mode 100644 tools/regression/bin/sh/expansion/trim8.0 delete mode 100644 tools/regression/bin/sh/parameters/env1.0 delete mode 100644 tools/regression/bin/sh/parameters/exitstatus1.0 delete mode 100644 tools/regression/bin/sh/parameters/mail1.0 delete mode 100644 tools/regression/bin/sh/parameters/mail2.0 delete mode 100644 tools/regression/bin/sh/parameters/optind1.0 delete mode 100644 tools/regression/bin/sh/parameters/positional1.0 delete mode 100644 tools/regression/bin/sh/parameters/positional2.0 delete mode 100644 tools/regression/bin/sh/parameters/pwd1.0 delete mode 100644 tools/regression/bin/sh/parameters/pwd2.0 delete mode 100644 tools/regression/bin/sh/parser/alias1.0 delete mode 100644 tools/regression/bin/sh/parser/alias10.0 delete mode 100644 tools/regression/bin/sh/parser/alias2.0 delete mode 100644 tools/regression/bin/sh/parser/alias3.0 delete mode 100644 tools/regression/bin/sh/parser/alias4.0 delete mode 100644 tools/regression/bin/sh/parser/alias5.0 delete mode 100644 tools/regression/bin/sh/parser/alias6.0 delete mode 100644 tools/regression/bin/sh/parser/alias7.0 delete mode 100644 tools/regression/bin/sh/parser/alias8.0 delete mode 100644 tools/regression/bin/sh/parser/alias9.0 delete mode 100644 tools/regression/bin/sh/parser/and-pipe-not.0 delete mode 100644 tools/regression/bin/sh/parser/case1.0 delete mode 100644 tools/regression/bin/sh/parser/case2.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote1.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote10.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote11.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote2.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote3.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote4.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote5.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote6.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote7.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote8.0 delete mode 100644 tools/regression/bin/sh/parser/dollar-quote9.0 delete mode 100644 tools/regression/bin/sh/parser/empty-braces1.0 delete mode 100644 tools/regression/bin/sh/parser/empty-cmd1.0 delete mode 100644 tools/regression/bin/sh/parser/for1.0 delete mode 100644 tools/regression/bin/sh/parser/for2.0 delete mode 100644 tools/regression/bin/sh/parser/func1.0 delete mode 100644 tools/regression/bin/sh/parser/func2.0 delete mode 100644 tools/regression/bin/sh/parser/func3.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc1.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc10.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc11.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc2.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc3.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc4.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc5.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc6.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc7.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc8.0 delete mode 100644 tools/regression/bin/sh/parser/heredoc9.0 delete mode 100644 tools/regression/bin/sh/parser/no-space1.0 delete mode 100644 tools/regression/bin/sh/parser/no-space2.0 delete mode 100644 tools/regression/bin/sh/parser/only-redir1.0 delete mode 100644 tools/regression/bin/sh/parser/only-redir2.0 delete mode 100644 tools/regression/bin/sh/parser/only-redir3.0 delete mode 100644 tools/regression/bin/sh/parser/only-redir4.0 delete mode 100644 tools/regression/bin/sh/parser/pipe-not1.0 delete mode 100644 tools/regression/bin/sh/parser/var-assign1.0 delete mode 100644 tools/regression/bin/sh/regress.sh delete mode 100644 tools/regression/bin/sh/regress.t delete mode 100644 tools/regression/bin/sh/set-e/and1.0 delete mode 100644 tools/regression/bin/sh/set-e/and2.1 delete mode 100644 tools/regression/bin/sh/set-e/and3.0 delete mode 100644 tools/regression/bin/sh/set-e/and4.0 delete mode 100644 tools/regression/bin/sh/set-e/background1.0 delete mode 100644 tools/regression/bin/sh/set-e/cmd1.0 delete mode 100644 tools/regression/bin/sh/set-e/cmd2.1 delete mode 100644 tools/regression/bin/sh/set-e/elif1.0 delete mode 100644 tools/regression/bin/sh/set-e/elif2.0 delete mode 100644 tools/regression/bin/sh/set-e/eval1.0 delete mode 100644 tools/regression/bin/sh/set-e/eval2.1 delete mode 100644 tools/regression/bin/sh/set-e/for1.0 delete mode 100644 tools/regression/bin/sh/set-e/func1.0 delete mode 100644 tools/regression/bin/sh/set-e/func2.1 delete mode 100644 tools/regression/bin/sh/set-e/if1.0 delete mode 100644 tools/regression/bin/sh/set-e/if2.0 delete mode 100644 tools/regression/bin/sh/set-e/if3.0 delete mode 100644 tools/regression/bin/sh/set-e/not1.0 delete mode 100644 tools/regression/bin/sh/set-e/not2.0 delete mode 100644 tools/regression/bin/sh/set-e/or1.0 delete mode 100644 tools/regression/bin/sh/set-e/or2.0 delete mode 100644 tools/regression/bin/sh/set-e/or3.1 delete mode 100644 tools/regression/bin/sh/set-e/pipe1.1 delete mode 100644 tools/regression/bin/sh/set-e/pipe2.0 delete mode 100644 tools/regression/bin/sh/set-e/return1.0 delete mode 100644 tools/regression/bin/sh/set-e/semi1.1 delete mode 100644 tools/regression/bin/sh/set-e/semi2.1 delete mode 100644 tools/regression/bin/sh/set-e/subshell1.0 delete mode 100644 tools/regression/bin/sh/set-e/subshell2.1 delete mode 100644 tools/regression/bin/sh/set-e/until1.0 delete mode 100644 tools/regression/bin/sh/set-e/until2.0 delete mode 100644 tools/regression/bin/sh/set-e/until3.0 delete mode 100644 tools/regression/bin/sh/set-e/while1.0 delete mode 100644 tools/regression/bin/sh/set-e/while2.0 delete mode 100644 tools/regression/bin/sh/set-e/while3.0 delete mode 100644 tools/regression/bin/test/Makefile delete mode 100644 tools/regression/bin/test/regress.sh delete mode 100644 tools/regression/bin/test/regress.t diff --git a/bin/Makefile b/bin/Makefile index 7b6a4ab..e4bc281 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 4f5c3fe..6da5848 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 0000000..540008b --- /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/bin/date/tests/legacy_test.sh b/bin/date/tests/legacy_test.sh new file mode 100644 index 0000000..981bdd0 --- /dev/null +++ b/bin/date/tests/legacy_test.sh @@ -0,0 +1,91 @@ +#!/bin/sh + +# +# Regression tests for date(1) +# +# Submitted by Edwin Groothuis +# +# $FreeBSD$ +# + +# +# These two date/times have been chosen carefully, they +# create both the single digit and double/multidigit version of +# the values. +# +# To create a new one, make sure you are using the UTC timezone! +# + +TEST1=3222243 # 1970-02-07 07:04:03 +TEST2=1005600000 # 2001-11-12 21:11:12 + +export LC_ALL=C +export TZ=UTC +count=0 + +check() +{ + S=$1 + A1=$2 + A2=$3 + + count=`expr ${count} + 1` + + if [ -z "${A2}" ]; then A2=${A1}; fi + + R=`date -r ${TEST1} +%${S}` + if [ "${R}" = "${A1}" ]; then + echo "ok ${S}{t1}" + else + echo "no ok ${S}{t1} - (got ${R}, expected ${A1})" + fi + + R=`date -r ${TEST2} +%${S}` + if [ "${R}" = "${A2}" ]; then + echo "ok ${S}{t2}" + else + echo "no ok ${S}{t2} - (got ${R}, expected ${A2})" + fi +} + +echo "1..78" + +check A Saturday Monday +check a Sat Mon +check B February November +check b Feb Nov +check C 19 20 +check c "Sat Feb 7 07:04:03 1970" "Mon Nov 12 21:20:00 2001" +check D 02/07/70 11/12/01 +check d 07 12 +check e " 7" 12 +check F "1970-02-07" "2001-11-12" +check G 1970 2001 +check g 70 01 +check H 07 21 +check h Feb Nov +check I 07 09 +check j 038 316 +check k " 7" 21 +check l " 7" " 9" +check M 04 20 +check m 02 11 +check p AM PM +check R 07:04 21:20 +check r "07:04:03 AM" "09:20:00 PM" +check S 03 00 +check s ${TEST1} ${TEST2} +check U 05 45 +check u 6 1 +check V 06 46 +check v " 7-Feb-1970" "12-Nov-2001" +check W 05 46 +check w 6 1 +check X "07:04:03" "21:20:00" +check x "02/07/70" "11/12/01" +check Y 1970 2001 +check y 70 01 +check Z UTC UTC +check z +0000 +0000 +check % % % +check + "Sat Feb 7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001" diff --git a/bin/mv/Makefile b/bin/mv/Makefile index 8405782..ad8cc4f 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 0000000..051a3b6 --- /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/bin/mv/tests/legacy_test.sh b/bin/mv/tests/legacy_test.sh new file mode 100644 index 0000000..d0a5e83 --- /dev/null +++ b/bin/mv/tests/legacy_test.sh @@ -0,0 +1,296 @@ +#!/bin/sh +# $FreeBSD$ + +# A directory in a device different from that where the tests are run +TMPDIR=/tmp/regress.$$ +COUNT=0 + +# Begin an individual test +begin() +{ + COUNT=`expr $COUNT + 1` + OK=1 + if [ -z "$FS" ] + then + NAME="$1" + else + NAME="$1 (cross device)" + fi + rm -rf testdir $TMPDIR/testdir + mkdir -p testdir $TMPDIR/testdir + cd testdir +} + +# End an individual test +end() +{ + if [ $OK = 1 ] + then + printf 'ok ' + else + printf 'not ok ' + fi + echo "$COUNT - $NAME" + cd .. + rm -rf testdir $TMPDIR/testdir +} + +# Make a file that can later be verified +mkf() +{ + CN=`basename $1` + echo "$CN-$CN" >$1 +} + +# Verify that the file specified is correct +ckf() +{ + if [ -f $2 ] && echo "$1-$1" | diff - $2 >/dev/null + then + ok + else + notok + fi +} + +# Make a fifo that can later be verified +mkp() +{ + mkfifo $1 +} + +# Verify that the file specified is correct +ckp() +{ + if [ -p $2 ] + then + ok + else + notok + fi +} + +# Make a directory that can later be verified +mkd() +{ + CN=`basename $1` + mkdir -p $1/"$CN-$CN" +} + +# Verify that the directory specified is correct +ckd() +{ + if [ -d $2/$1-$1 ] + then + ok + else + notok + fi +} + +# Verify that the specified file does not exist +# (is not there) +cknt() +{ + if [ -r $1 ] + then + notok + else + ok + fi +} + +# A part of a test succeeds +ok() +{ + : +} + +# A part of a test fails +notok() +{ + OK=0 +} + +# Verify that the exit code passed is for unsuccessful termination +ckfail() +{ + if [ $1 -gt 0 ] + then + ok + else + notok + fi +} + +# Verify that the exit code passed is for successful termination +ckok() +{ + if [ $1 -eq 0 ] + then + ok + else + notok + fi +} + +# Run all tests locally and across devices +echo 1..32 +for FS in '' $TMPDIR/testdir/ +do + begin 'Rename file' + mkf fa + mv fa ${FS}fb + ckok $? + ckf fa ${FS}fb + cknt fa + end + + begin 'Move files into directory' + mkf fa + mkf fb + mkdir -p ${FS}1/2/3 + mv fa fb ${FS}1/2/3 + ckok $? + ckf fa ${FS}1/2/3/fa + ckf fb ${FS}1/2/3/fb + cknt fa + cknt fb + end + + begin 'Move file from directory to file' + mkdir -p 1/2/3 + mkf 1/2/3/fa + mv 1/2/3/fa ${FS}fb + ckok $? + ckf fa ${FS}fb + cknt 1/2/3/fa + end + + begin 'Move file from directory to existing file' + mkdir -p 1/2/3 + mkf 1/2/3/fa + :> ${FS}fb + mv 1/2/3/fa ${FS}fb + ckok $? + ckf fa ${FS}fb + cknt 1/2/3/fa + end + + begin 'Move file from directory to existing directory' + mkdir -p 1/2/3 + mkf 1/2/3/fa + mkdir -p ${FS}db/fa + # Should fail per POSIX step 3a: + # Destination path is a file of type directory and + # source_file is not a file of type directory + mv 1/2/3/fa ${FS}db 2>/dev/null + ckfail $? + ckf fa 1/2/3/fa + end + + begin 'Move file from directory to directory' + mkdir -p da1/da2/da3 + mkdir -p ${FS}db1/db2/db3 + mkf da1/da2/da3/fa + mv da1/da2/da3/fa ${FS}db1/db2/db3/fb + ckok $? + ckf fa ${FS}db1/db2/db3/fb + cknt da1/da2/da3/fa + end + + begin 'Rename directory' + mkd da + mv da ${FS}db + ckok $? + ckd da ${FS}db + cknt da + end + + begin 'Move directory to directory name' + mkd da1/da2/da3/da + mkdir -p ${FS}db1/db2/db3 + mv da1/da2/da3/da ${FS}db1/db2/db3/db + ckok $? + ckd da ${FS}db1/db2/db3/db + cknt da1/da2/da3/da + end + + begin 'Move directory to directory' + mkd da1/da2/da3/da + mkdir -p ${FS}db1/db2/db3 + mv da1/da2/da3/da ${FS}db1/db2/db3 + ckok $? + ckd da ${FS}db1/db2/db3/da + cknt da1/da2/da3/da + end + + begin 'Move directory to existing empty directory' + mkd da1/da2/da3/da + mkdir -p ${FS}db1/db2/db3/da + mv da1/da2/da3/da ${FS}db1/db2/db3 + ckok $? + ckd da ${FS}db1/db2/db3/da + cknt da1/da2/da3/da + end + + begin 'Move directory to existing non-empty directory' + mkd da1/da2/da3/da + mkdir -p ${FS}db1/db2/db3/da/full + # Should fail (per the semantics of rename(2)) + mv da1/da2/da3/da ${FS}db1/db2/db3 2>/dev/null + ckfail $? + ckd da da1/da2/da3/da + end + + begin 'Move directory to existing file' + mkd da1/da2/da3/da + mkdir -p ${FS}db1/db2/db3 + :> ${FS}db1/db2/db3/da + # Should fail per POSIX step 3b: + # Destination path is a file not of type directory + # and source_file is a file of type directory + mv da1/da2/da3/da ${FS}db1/db2/db3/da 2>/dev/null + ckfail $? + ckd da da1/da2/da3/da + end + + begin 'Rename fifo' + mkp fa + mv fa ${FS}fb + ckok $? + ckp fa ${FS}fb + cknt fa + end + + begin 'Move fifos into directory' + mkp fa + mkp fb + mkdir -p ${FS}1/2/3 + mv fa fb ${FS}1/2/3 + ckok $? + ckp fa ${FS}1/2/3/fa + ckp fb ${FS}1/2/3/fb + cknt fa + cknt fb + end + + begin 'Move fifo from directory to fifo' + mkdir -p 1/2/3 + mkp 1/2/3/fa + mv 1/2/3/fa ${FS}fb + ckok $? + ckp fa ${FS}fb + cknt 1/2/3/fa + end + + begin 'Move fifo from directory to directory' + mkdir -p da1/da2/da3 + mkdir -p ${FS}db1/db2/db3 + mkp da1/da2/da3/fa + mv da1/da2/da3/fa ${FS}db1/db2/db3/fb + ckok $? + ckp fa ${FS}db1/db2/db3/fb + cknt da1/da2/da3/fa + end +done diff --git a/bin/pax/Makefile b/bin/pax/Makefile index 9e8d4e1..95f18bb 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 0000000..b3c4b85 --- /dev/null +++ b/bin/pax/tests/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/pax + +TAP_TESTS_SH= legacy_test + +.include diff --git a/bin/pax/tests/legacy_test.sh b/bin/pax/tests/legacy_test.sh new file mode 100644 index 0000000..7c392cb --- /dev/null +++ b/bin/pax/tests/legacy_test.sh @@ -0,0 +1,91 @@ +#! /usr/bin/perl +# +# $FreeBSD$ + +use strict; +use warnings; + +use Test::More tests => 6; +use File::Path qw(rmtree mkpath); +use Cwd; + +my $n = 0; +sub create_file { + my $fn = shift; + + $n++; + (my $dir = $fn) =~ s,/[^/]+$,,; + mkpath $dir; + open my $fd, ">", $fn or die "$fn: $!"; + print $fd "file $n\n"; +} + + +ustar_pathnames: { SKIP: { + # Prove that pax breaks up ustar pathnames properly + + my $top = getcwd . "/ustar-pathnames-1"; + skip "Current path is too long", 6 if length $top > 92; + rmtree $top; + my $subdir = "x" . "x" x (92 - length $top); + my $work94 = "$top/$subdir"; + mkpath $work94; # $work is 94 characters long + + my $x49 = "x" x 49; + my $x50 = "x" x 50; + my $x60 = "x" x 60; + my $x95 = "x" x 95; + + my @paths = ( + "$work94/x099", # 99 chars + "$work94/xx100", # 100 chars + "$work94/xxx101", # 101 chars + "$work94/$x49/${x50}x199", # 199 chars + "$work94/$x49/${x50}xx200", # 200 chars + "$work94/$x49/${x50}xxx201", # 201 chars + "$work94/$x60/${x95}254", # 254 chars + "$work94/$x60/${x95}x255", # 255 chars + ); + + my @l = map { length } @paths; + + my $n = 0; + create_file $_ for @paths; + system "pax -wf ustar.ok $work94"; + ok($? == 0, "Wrote 'ustar.ok' containing files with lengths @l"); + + (my $orig = $top) =~ s,1$,2,; + rmtree $orig; + rename $top, $orig; + + system "pax -rf ustar.ok"; + ok($? == 0, "Restored 'ustar.ok' containing files with lengths @l"); + + system "diff -ru $orig $top"; + ok($? == 0, "Restored files are identical"); + + rmtree $top; + rename $orig, $top; + + # 256 chars (with components < 100 chars) should not work + push @paths, "$work94/x$x60/${x95}x256"; # 256 chars + push @l, length $paths[-1]; + create_file $paths[-1]; + system "pax -wf ustar.fail1 $work94"; + ok($?, "Failed to write 'ustar.fail1' containing files with lengths @l"); + + # Components with 100 chars shouldn't work + unlink $paths[-1]; + $paths[-1] = "$work94/${x95}xc100"; # 100 char filename + $l[-1] = length $paths[-1]; + create_file $paths[-1]; + system "pax -wf ustar.fail2 $work94"; + ok($?, "Failed to write 'ustar.fail2' with a 100 char filename"); + + unlink $paths[-1]; + $paths[-1] = "$work94/${x95}xc100/x"; # 100 char component + $l[-1] = length $paths[-1]; + create_file $paths[-1]; + system "pax -wf ustar.fail3 $work94"; + ok($?, "Failed to write 'ustar.fail3' with a 100 char component"); +}} diff --git a/bin/sh/Makefile b/bin/sh/Makefile index 00d34fa..e1ce5fe 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/tests/Makefile b/bin/sh/tests/Makefile new file mode 100644 index 0000000..cd8b7a2 --- /dev/null +++ b/bin/sh/tests/Makefile @@ -0,0 +1,12 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/sh + +TAP_TESTS_SH= legacy_test +TAP_TESTS_SH_SED_legacy_test= -e 's,__SH__,/bin/sh,g' + +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 0000000..3b1d24b --- /dev/null +++ b/bin/sh/tests/builtins/Makefile @@ -0,0 +1,147 @@ +# $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+= 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/bin/sh/tests/builtins/alias.0 b/bin/sh/tests/builtins/alias.0 new file mode 100644 index 0000000..d9b2796 --- /dev/null +++ b/bin/sh/tests/builtins/alias.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ +set -e + +unalias -a +alias foo=bar +alias bar= +alias quux="1 2 3" +alias +alias foo diff --git a/bin/sh/tests/builtins/alias.0.stdout b/bin/sh/tests/builtins/alias.0.stdout new file mode 100644 index 0000000..52efaf0 --- /dev/null +++ b/bin/sh/tests/builtins/alias.0.stdout @@ -0,0 +1,4 @@ +bar='' +foo=bar +quux='1 2 3' +foo=bar diff --git a/bin/sh/tests/builtins/alias.1 b/bin/sh/tests/builtins/alias.1 new file mode 100644 index 0000000..31403dc --- /dev/null +++ b/bin/sh/tests/builtins/alias.1 @@ -0,0 +1,3 @@ +# $FreeBSD$ +unalias -a +alias foo diff --git a/bin/sh/tests/builtins/alias.1.stderr b/bin/sh/tests/builtins/alias.1.stderr new file mode 100644 index 0000000..c9f4011 --- /dev/null +++ b/bin/sh/tests/builtins/alias.1.stderr @@ -0,0 +1 @@ +alias: foo: not found diff --git a/bin/sh/tests/builtins/alias3.0 b/bin/sh/tests/builtins/alias3.0 new file mode 100644 index 0000000..fe65e31f --- /dev/null +++ b/bin/sh/tests/builtins/alias3.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ +set -e + +unalias -a +alias foo=bar +alias bar= +alias quux="1 2 3" +alias foo=bar +alias bar= +alias quux="1 2 3" +alias +alias foo diff --git a/bin/sh/tests/builtins/alias3.0.stdout b/bin/sh/tests/builtins/alias3.0.stdout new file mode 100644 index 0000000..52efaf0 --- /dev/null +++ b/bin/sh/tests/builtins/alias3.0.stdout @@ -0,0 +1,4 @@ +bar='' +foo=bar +quux='1 2 3' +foo=bar diff --git a/bin/sh/tests/builtins/alias4.0 b/bin/sh/tests/builtins/alias4.0 new file mode 100644 index 0000000..3d5efec --- /dev/null +++ b/bin/sh/tests/builtins/alias4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +unalias -a +alias -- diff --git a/bin/sh/tests/builtins/break1.0 b/bin/sh/tests/builtins/break1.0 new file mode 100644 index 0000000..ba0cbb4 --- /dev/null +++ b/bin/sh/tests/builtins/break1.0 @@ -0,0 +1,16 @@ +# $FreeBSD$ + +if [ "$1" != nested ]; then + while :; do + set -- nested + . "$0" + echo bad2 + exit 2 + done + exit 0 +fi +# To trigger the bug, the following commands must be at the top level, +# with newlines in between. +break +echo bad1 +exit 1 diff --git a/bin/sh/tests/builtins/break2.0 b/bin/sh/tests/builtins/break2.0 new file mode 100644 index 0000000..ff52dd3 --- /dev/null +++ b/bin/sh/tests/builtins/break2.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +# It is not immediately obvious that this should work, and someone probably +# relies on it. + +while :; do + trap 'break' USR1 + kill -USR1 $$ + echo bad + exit 1 +done +echo good diff --git a/bin/sh/tests/builtins/break2.0.stdout b/bin/sh/tests/builtins/break2.0.stdout new file mode 100644 index 0000000..12799cc --- /dev/null +++ b/bin/sh/tests/builtins/break2.0.stdout @@ -0,0 +1 @@ +good diff --git a/bin/sh/tests/builtins/break3.0 b/bin/sh/tests/builtins/break3.0 new file mode 100644 index 0000000..10a5ca8 --- /dev/null +++ b/bin/sh/tests/builtins/break3.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ + +# We accept this and people might rely on it. +# However, various other shells do not accept it. + +f() { + break + echo bad1 +} + +while :; do + f + echo bad2 + exit 2 +done diff --git a/bin/sh/tests/builtins/break4.4 b/bin/sh/tests/builtins/break4.4 new file mode 100644 index 0000000..d52ff52 --- /dev/null +++ b/bin/sh/tests/builtins/break4.4 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +# Although this is not specified by POSIX, some configure scripts (gawk 4.1.0) +# appear to depend on it. + +break +exit 4 diff --git a/bin/sh/tests/builtins/break5.4 b/bin/sh/tests/builtins/break5.4 new file mode 100644 index 0000000..7df8e18 --- /dev/null +++ b/bin/sh/tests/builtins/break5.4 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +# Although this is not specified by POSIX, some configure scripts (gawk 4.1.0) +# appear to depend on it. +# In some uncommitted code, the subshell environment corrupted the outer +# shell environment's state. + +(for i in a b c; do + exit 3 +done) +break +exit 4 diff --git a/bin/sh/tests/builtins/builtin1.0 b/bin/sh/tests/builtins/builtin1.0 new file mode 100644 index 0000000..b608385 --- /dev/null +++ b/bin/sh/tests/builtins/builtin1.0 @@ -0,0 +1,31 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +builtin : || echo "Bad return code at $LINENO" +builtin true || echo "Bad return code at $LINENO" +builtin ls 2>/dev/null && echo "Bad return code at $LINENO" +check '"$(builtin pwd)" = "$(pwd)"' +check '-z "$(builtin :)"' +check '-z "$(builtin true)"' +check '-z "$( (builtin nosuchtool) 2>/dev/null)"' +check '-z "$(builtin nosuchtool 2>/dev/null)"' +check '-z "$(builtin nosuchtool 2>/dev/null; :)"' +check '-z "$( (builtin ls) 2>/dev/null)"' +check '-z "$(builtin ls 2>/dev/null)"' +check '-z "$(builtin ls 2>/dev/null; :)"' +check '-n "$( (builtin nosuchtool) 2>&1)"' +check '-n "$(builtin nosuchtool 2>&1)"' +check '-n "$(builtin nosuchtool 2>&1; :)"' +check '-n "$( (builtin ls) 2>&1)"' +check '-n "$(builtin ls 2>&1)"' +check '-n "$(builtin ls 2>&1; :)"' + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/case1.0 b/bin/sh/tests/builtins/case1.0 new file mode 100644 index 0000000..860fc67 --- /dev/null +++ b/bin/sh/tests/builtins/case1.0 @@ -0,0 +1,13 @@ +#$FreeBSD$ +f() +{ + false + case $1 in + foo) true ;; + bar) false ;; + esac +} + +f foo || exit 1 +f bar && exit 1 +f quux || exit 1 diff --git a/bin/sh/tests/builtins/case10.0 b/bin/sh/tests/builtins/case10.0 new file mode 100644 index 0000000..a627b5c --- /dev/null +++ b/bin/sh/tests/builtins/case10.0 @@ -0,0 +1,16 @@ +# $FreeBSD$ + +case ! in +[\!!]) ;; +*) echo Failed at $LINENO ;; +esac + +case ! in +['!'!]) ;; +*) echo Failed at $LINENO ;; +esac + +case ! in +["!"!]) ;; +*) echo Failed at $LINENO ;; +esac diff --git a/bin/sh/tests/builtins/case11.0 b/bin/sh/tests/builtins/case11.0 new file mode 100644 index 0000000..0e66e11 --- /dev/null +++ b/bin/sh/tests/builtins/case11.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +false +case x in +*) +esac diff --git a/bin/sh/tests/builtins/case12.0 b/bin/sh/tests/builtins/case12.0 new file mode 100644 index 0000000..2a442ba --- /dev/null +++ b/bin/sh/tests/builtins/case12.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +false +case x in +y) +esac diff --git a/bin/sh/tests/builtins/case13.0 b/bin/sh/tests/builtins/case13.0 new file mode 100644 index 0000000..78f4e9b --- /dev/null +++ b/bin/sh/tests/builtins/case13.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +case ^ in +[\^^]) ;; +*) echo Failed at $LINENO ;; +esac + +case s in +[\^^]) echo Failed at $LINENO ;; +[s\]]) ;; +*) echo Failed at $LINENO ;; +esac diff --git a/bin/sh/tests/builtins/case14.0 b/bin/sh/tests/builtins/case14.0 new file mode 100644 index 0000000..0338e8a --- /dev/null +++ b/bin/sh/tests/builtins/case14.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +case `false` in +no) exit 3 ;; +esac diff --git a/bin/sh/tests/builtins/case15.0 b/bin/sh/tests/builtins/case15.0 new file mode 100644 index 0000000..09b0e11 --- /dev/null +++ b/bin/sh/tests/builtins/case15.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +case x in +`false`) exit 3 ;; +esac diff --git a/bin/sh/tests/builtins/case16.0 b/bin/sh/tests/builtins/case16.0 new file mode 100644 index 0000000..2430302 --- /dev/null +++ b/bin/sh/tests/builtins/case16.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +f() { return 42; } +f +case x in +x) [ $? = 42 ] ;; +esac diff --git a/bin/sh/tests/builtins/case17.0 b/bin/sh/tests/builtins/case17.0 new file mode 100644 index 0000000..ed1d25f --- /dev/null +++ b/bin/sh/tests/builtins/case17.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! case x in x) false ;& y) esac diff --git a/bin/sh/tests/builtins/case18.0 b/bin/sh/tests/builtins/case18.0 new file mode 100644 index 0000000..470253f --- /dev/null +++ b/bin/sh/tests/builtins/case18.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +case x$(false) in +x) ;& +y) [ $? != 0 ] ;; +z) false ;; +esac diff --git a/bin/sh/tests/builtins/case19.0 b/bin/sh/tests/builtins/case19.0 new file mode 100644 index 0000000..215066a --- /dev/null +++ b/bin/sh/tests/builtins/case19.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +[ "`case x in +x) false ;& +y) ;& +z) echo $? ;; +esac`" != 0 ] diff --git a/bin/sh/tests/builtins/case2.0 b/bin/sh/tests/builtins/case2.0 new file mode 100644 index 0000000..e319148 --- /dev/null +++ b/bin/sh/tests/builtins/case2.0 @@ -0,0 +1,106 @@ +# Generated by ./test-fnmatch -s 1, do not edit. +# $FreeBSD$ +failures= +failed() { printf '%s\n' "Failed: $1 '$2' '$3'"; failures=x$failures; } +testmatch() { eval "case \$2 in ''$1) ;; *) failed testmatch \"\$@\";; esac"; } +testnomatch() { eval "case \$2 in ''$1) failed testnomatch \"\$@\";; esac"; } +testmatch '' '' +testmatch 'a' 'a' +testnomatch 'a' 'b' +testnomatch 'a' 'A' +testmatch '*' 'a' +testmatch '*' 'aa' +testmatch '*a' 'a' +testnomatch '*a' 'b' +testnomatch '*a*' 'b' +testmatch '*a*b*' 'ab' +testmatch '*a*b*' 'qaqbq' +testmatch '*a*bb*' 'qaqbqbbq' +testmatch '*a*bc*' 'qaqbqbcq' +testmatch '*a*bb*' 'qaqbqbb' +testmatch '*a*bc*' 'qaqbqbc' +testmatch '*a*bb' 'qaqbqbb' +testmatch '*a*bc' 'qaqbqbc' +testnomatch '*a*bb' 'qaqbqbbq' +testnomatch '*a*bc' 'qaqbqbcq' +testnomatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaa' +testmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaa' +testmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaaa' +testnomatch '.*.*.*.*.*.*.*.*.*.*' '.........' +testmatch '.*.*.*.*.*.*.*.*.*.*' '..........' +testmatch '.*.*.*.*.*.*.*.*.*.*' '...........' +testnomatch '*?*?*?*?*?*?*?*?*?*?*' '123456789' +testnomatch '??????????*' '123456789' +testnomatch '*??????????' '123456789' +testmatch '*?*?*?*?*?*?*?*?*?*?*' '1234567890' +testmatch '??????????*' '1234567890' +testmatch '*??????????' '1234567890' +testmatch '*?*?*?*?*?*?*?*?*?*?*' '12345678901' +testmatch '??????????*' '12345678901' +testmatch '*??????????' '12345678901' +testmatch '[x]' 'x' +testmatch '[*]' '*' +testmatch '[?]' '?' +testmatch '[' '[' +testmatch '[[]' '[' +testnomatch '[[]' 'x' +testnomatch '[*]' '' +testnomatch '[*]' 'x' +testnomatch '[?]' 'x' +testmatch '*[*]*' 'foo*foo' +testnomatch '*[*]*' 'foo' +testmatch '[0-9]' '0' +testmatch '[0-9]' '5' +testmatch '[0-9]' '9' +testnomatch '[0-9]' '/' +testnomatch '[0-9]' ':' +testnomatch '[0-9]' '*' +testnomatch '[!0-9]' '0' +testnomatch '[!0-9]' '5' +testnomatch '[!0-9]' '9' +testmatch '[!0-9]' '/' +testmatch '[!0-9]' ':' +testmatch '[!0-9]' '*' +testmatch '*[0-9]' 'a0' +testmatch '*[0-9]' 'a5' +testmatch '*[0-9]' 'a9' +testnomatch '*[0-9]' 'a/' +testnomatch '*[0-9]' 'a:' +testnomatch '*[0-9]' 'a*' +testnomatch '*[!0-9]' 'a0' +testnomatch '*[!0-9]' 'a5' +testnomatch '*[!0-9]' 'a9' +testmatch '*[!0-9]' 'a/' +testmatch '*[!0-9]' 'a:' +testmatch '*[!0-9]' 'a*' +testmatch '*[0-9]' 'a00' +testmatch '*[0-9]' 'a55' +testmatch '*[0-9]' 'a99' +testmatch '*[0-9]' 'a0a0' +testmatch '*[0-9]' 'a5a5' +testmatch '*[0-9]' 'a9a9' +testmatch '\*' '*' +testmatch '\?' '?' +testmatch '\[x]' '[x]' +testmatch '\[' '[' +testmatch '\\' '\' +testmatch '*\**' 'foo*foo' +testnomatch '*\**' 'foo' +testmatch '*\\*' 'foo\foo' +testnomatch '*\\*' 'foo' +testmatch '\(' '(' +testmatch '\a' 'a' +testnomatch '\*' 'a' +testnomatch '\?' 'a' +testnomatch '\*' '\*' +testnomatch '\?' '\?' +testnomatch '\[x]' '\[x]' +testnomatch '\[x]' '\x' +testnomatch '\[' '\[' +testnomatch '\(' '\(' +testnomatch '\a' '\a' +testmatch '.*' '.' +testmatch '.*' '..' +testmatch '.*' '.a' +testmatch 'a*' 'a.' +[ -z "$failures" ] diff --git a/bin/sh/tests/builtins/case3.0 b/bin/sh/tests/builtins/case3.0 new file mode 100644 index 0000000..42e53d6 --- /dev/null +++ b/bin/sh/tests/builtins/case3.0 @@ -0,0 +1,95 @@ +# Generated by ./test-fnmatch -s 2, do not edit. +# $FreeBSD$ +failures= +failed() { printf '%s\n' "Failed: $1 '$2' '$3'"; failures=x$failures; } +# We do not treat a backslash specially in this case, +# but this is not the case in all shells. +netestmatch() { case $2 in $1) ;; *) failed netestmatch "$@";; esac; } +netestnomatch() { case $2 in $1) failed netestnomatch "$@";; esac; } +netestmatch '' '' +netestmatch 'a' 'a' +netestnomatch 'a' 'b' +netestnomatch 'a' 'A' +netestmatch '*' 'a' +netestmatch '*' 'aa' +netestmatch '*a' 'a' +netestnomatch '*a' 'b' +netestnomatch '*a*' 'b' +netestmatch '*a*b*' 'ab' +netestmatch '*a*b*' 'qaqbq' +netestmatch '*a*bb*' 'qaqbqbbq' +netestmatch '*a*bc*' 'qaqbqbcq' +netestmatch '*a*bb*' 'qaqbqbb' +netestmatch '*a*bc*' 'qaqbqbc' +netestmatch '*a*bb' 'qaqbqbb' +netestmatch '*a*bc' 'qaqbqbc' +netestnomatch '*a*bb' 'qaqbqbbq' +netestnomatch '*a*bc' 'qaqbqbcq' +netestnomatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaa' +netestmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaa' +netestmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaaa' +netestnomatch '.*.*.*.*.*.*.*.*.*.*' '.........' +netestmatch '.*.*.*.*.*.*.*.*.*.*' '..........' +netestmatch '.*.*.*.*.*.*.*.*.*.*' '...........' +netestnomatch '*?*?*?*?*?*?*?*?*?*?*' '123456789' +netestnomatch '??????????*' '123456789' +netestnomatch '*??????????' '123456789' +netestmatch '*?*?*?*?*?*?*?*?*?*?*' '1234567890' +netestmatch '??????????*' '1234567890' +netestmatch '*??????????' '1234567890' +netestmatch '*?*?*?*?*?*?*?*?*?*?*' '12345678901' +netestmatch '??????????*' '12345678901' +netestmatch '*??????????' '12345678901' +netestmatch '[x]' 'x' +netestmatch '[*]' '*' +netestmatch '[?]' '?' +netestmatch '[' '[' +netestmatch '[[]' '[' +netestnomatch '[[]' 'x' +netestnomatch '[*]' '' +netestnomatch '[*]' 'x' +netestnomatch '[?]' 'x' +netestmatch '*[*]*' 'foo*foo' +netestnomatch '*[*]*' 'foo' +netestmatch '[0-9]' '0' +netestmatch '[0-9]' '5' +netestmatch '[0-9]' '9' +netestnomatch '[0-9]' '/' +netestnomatch '[0-9]' ':' +netestnomatch '[0-9]' '*' +netestnomatch '[!0-9]' '0' +netestnomatch '[!0-9]' '5' +netestnomatch '[!0-9]' '9' +netestmatch '[!0-9]' '/' +netestmatch '[!0-9]' ':' +netestmatch '[!0-9]' '*' +netestmatch '*[0-9]' 'a0' +netestmatch '*[0-9]' 'a5' +netestmatch '*[0-9]' 'a9' +netestnomatch '*[0-9]' 'a/' +netestnomatch '*[0-9]' 'a:' +netestnomatch '*[0-9]' 'a*' +netestnomatch '*[!0-9]' 'a0' +netestnomatch '*[!0-9]' 'a5' +netestnomatch '*[!0-9]' 'a9' +netestmatch '*[!0-9]' 'a/' +netestmatch '*[!0-9]' 'a:' +netestmatch '*[!0-9]' 'a*' +netestmatch '*[0-9]' 'a00' +netestmatch '*[0-9]' 'a55' +netestmatch '*[0-9]' 'a99' +netestmatch '*[0-9]' 'a0a0' +netestmatch '*[0-9]' 'a5a5' +netestmatch '*[0-9]' 'a9a9' +netestmatch '\*' '\*' +netestmatch '\?' '\?' +netestmatch '\' '\' +netestnomatch '\\' '\' +netestmatch '\\' '\\' +netestmatch '*\*' 'foo\foo' +netestnomatch '*\*' 'foo' +netestmatch '.*' '.' +netestmatch '.*' '..' +netestmatch '.*' '.a' +netestmatch 'a*' 'a.' +[ -z "$failures" ] diff --git a/bin/sh/tests/builtins/case4.0 b/bin/sh/tests/builtins/case4.0 new file mode 100644 index 0000000..18219f5 --- /dev/null +++ b/bin/sh/tests/builtins/case4.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +set -- "*" +case x in +"$1") echo failed ;; +esac diff --git a/bin/sh/tests/builtins/case5.0 b/bin/sh/tests/builtins/case5.0 new file mode 100644 index 0000000..8c6db5a --- /dev/null +++ b/bin/sh/tests/builtins/case5.0 @@ -0,0 +1,57 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.UTF-8 +export LC_CTYPE + +c1=e +# a umlaut +c2=$(printf '\303\244') +# euro sign +c3=$(printf '\342\202\254') +# some sort of 't' outside BMP +c4=$(printf '\360\235\225\245') + +ok=0 +case $c1$c2$c3$c4 in +*) ok=1 ;; +esac +if [ $ok = 0 ]; then + echo wrong at $LINENO + exit 3 +fi + +case $c1$c2$c3$c4 in +$c1$c2$c3$c4) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +"$c1$c2$c3$c4") ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +????) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1.$c2.$c3.$c4 in +?.?.?.?) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[!a][!b][!c][!d]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[$c1][$c2][$c3][$c4]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +["$c1"]["$c2"]["$c3"]["$c4"]) ;; +*) echo wrong at $LINENO ;; +esac diff --git a/bin/sh/tests/builtins/case6.0 b/bin/sh/tests/builtins/case6.0 new file mode 100644 index 0000000..8d79183 --- /dev/null +++ b/bin/sh/tests/builtins/case6.0 @@ -0,0 +1,52 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=de_DE.ISO8859-1 +export LC_CTYPE + +c1=e +# o umlaut +c2=$(printf '\366') +# non-break space +c3=$(printf '\240') +c4=$(printf '\240') +# $c2$c3$c4 form one utf-8 character + +ok=0 +case $c1$c2$c3$c4 in +*) ok=1 ;; +esac +if [ $ok = 0 ]; then + echo wrong at $LINENO + exit 3 +fi + +case $c1$c2$c3$c4 in +$c1$c2$c3$c4) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +"$c1$c2$c3$c4") ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +????) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[!$c2][!b][!c][!d]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[$c1][$c2][$c3][$c4]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +["$c1"]["$c2"]["$c3"]["$c4"]) ;; +*) echo wrong at $LINENO ;; +esac diff --git a/bin/sh/tests/builtins/case7.0 b/bin/sh/tests/builtins/case7.0 new file mode 100644 index 0000000..96b9de6 --- /dev/null +++ b/bin/sh/tests/builtins/case7.0 @@ -0,0 +1,24 @@ +# $FreeBSD$ + +# Character ranges in a locale other than the POSIX locale, not specified +# by POSIX. + +unset LC_ALL +LC_CTYPE=de_DE.ISO8859-1 +export LC_CTYPE +LC_COLLATE=de_DE.ISO8859-1 +export LC_COLLATE + +c1=e +# o umlaut +c2=$(printf '\366') + +case $c1$c2 in +[a-z][a-z]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2 in +[a-f][n-p]) ;; +*) echo wrong at $LINENO ;; +esac diff --git a/bin/sh/tests/builtins/case8.0 b/bin/sh/tests/builtins/case8.0 new file mode 100644 index 0000000..8d9f8b6 --- /dev/null +++ b/bin/sh/tests/builtins/case8.0 @@ -0,0 +1,32 @@ +# $FreeBSD$ + +case aZ_ in +[[:alpha:]_][[:upper:]_][[:alpha:]_]) ;; +*) echo Failed at $LINENO ;; +esac + +case ' ' in +[[:alpha:][:digit:]]) echo Failed at $LINENO ;; +[![:alpha:][:digit:]]) ;; +*) echo Failed at $LINENO ;; +esac + +case '.X.' in +*[[:lower:]]*) echo Failed at $LINENO ;; +*[[:upper:]]*) ;; +*) echo Failed at $LINENO ;; +esac + +case ' ' in +[![:print:]]) echo Failed at $LINENO ;; +[![:alnum:][:punct:]]) ;; +*) echo Failed at $LINENO ;; +esac + +case ' +' in +[[:print:]]) echo Failed at $LINENO ;; +[' +'[:digit:]]) ;; +*) echo Failed at $LINENO ;; +esac diff --git a/bin/sh/tests/builtins/case9.0 b/bin/sh/tests/builtins/case9.0 new file mode 100644 index 0000000..476caec --- /dev/null +++ b/bin/sh/tests/builtins/case9.0 @@ -0,0 +1,39 @@ +# $FreeBSD$ + +errors=0 + +f() { + result= + case $1 in + a) result=${result}a ;; + b) result=${result}b ;& + c) result=${result}c ;& + d) result=${result}d ;; + e) result=${result}e ;& + esac +} + +check() { + f "$1" + if [ "$result" != "$2" ]; then + printf "For %s, expected %s got %s\n" "$1" "$2" "$result" + errors=$((errors + 1)) + fi +} + +check '' '' +check a a +check b bcd +check c cd +check d d +check e e + +if ! (case 1 in + 1) false ;& + 2) true ;; +esac) then + echo "Subshell bad" + errors=$((errors + 1)) +fi + +exit $((errors != 0)) diff --git a/bin/sh/tests/builtins/cd1.0 b/bin/sh/tests/builtins/cd1.0 new file mode 100644 index 0000000..bc5108e --- /dev/null +++ b/bin/sh/tests/builtins/cd1.0 @@ -0,0 +1,30 @@ +# $FreeBSD$ +set -e + +P=${TMPDIR:-/tmp} +cd $P +T=$(mktemp -d sh-test.XXXXXX) + +chmod 0 $T +if [ `id -u` -ne 0 ]; then + # Root can always cd, regardless of directory permissions. + cd -L $T 2>/dev/null && exit 1 + [ "$PWD" = "$P" ] + [ "$(pwd)" = "$P" ] + cd -P $T 2>/dev/null && exit 1 + [ "$PWD" = "$P" ] + [ "$(pwd)" = "$P" ] +fi + +chmod 755 $T +cd $T +mkdir -p 1/2/3 +ln -s 1/2 link1 +ln -s 2/3 1/link2 +(cd -L 1/../1 && [ "$(pwd -L)" = "$P/$T/1" ]) +(cd -L link1 && [ "$(pwd -L)" = "$P/$T/link1" ]) +(cd -L link1 && [ "$(pwd -P)" = "$P/$T/1/2" ]) +(cd -P link1 && [ "$(pwd -L)" = "$P/$T/1/2" ]) +(cd -P link1 && [ "$(pwd -P)" = "$P/$T/1/2" ]) + +rm -rf ${P}/${T} diff --git a/bin/sh/tests/builtins/cd2.0 b/bin/sh/tests/builtins/cd2.0 new file mode 100644 index 0000000..f2b6416 --- /dev/null +++ b/bin/sh/tests/builtins/cd2.0 @@ -0,0 +1,16 @@ +# $FreeBSD$ +set -e + +L=$(getconf PATH_MAX / 2>/dev/null) || L=4096 +[ "$L" -lt 100000 ] 2>/dev/null || L=4096 +L=$((L+100)) +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf ${T}' 0 +cd $T +D=$T +while [ ${#D} -lt $L ]; do + mkdir veryverylongdirectoryname + cd veryverylongdirectoryname + D=$D/veryverylongdirectoryname +done +[ $(pwd | wc -c) -eq $((${#D} + 1)) ] # +\n diff --git a/bin/sh/tests/builtins/cd3.0 b/bin/sh/tests/builtins/cd3.0 new file mode 100644 index 0000000..7729c54 --- /dev/null +++ b/bin/sh/tests/builtins/cd3.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +# If fully successful, cd -Pe must be like cd -P. + +set -e + +cd "${TMPDIR:-/tmp}" +cd -Pe / +[ "$PWD" = / ] +[ "$(pwd)" = / ] +cd "${TMPDIR:-/tmp}" +cd -eP / +[ "$PWD" = / ] +[ "$(pwd)" = / ] + +set +e + +# If cd -Pe cannot chdir, the exit status must be greater than 1. + +v=$( (cd -Pe /var/empty/nonexistent) 2>&1 >/dev/null) +[ $? -gt 1 ] && [ -n "$v" ] diff --git a/bin/sh/tests/builtins/cd4.0 b/bin/sh/tests/builtins/cd4.0 new file mode 100644 index 0000000..df3a9a4 --- /dev/null +++ b/bin/sh/tests/builtins/cd4.0 @@ -0,0 +1,38 @@ +# $FreeBSD$ + +# This test assumes that whatever mechanism cd -P uses to determine the +# pathname to the current directory if it is longer than PATH_MAX requires +# read permission on all parent directories. It also works if this +# requirement always applies. + +set -e +L=$(getconf PATH_MAX / 2>/dev/null) || L=4096 +[ "$L" -lt 100000 ] 2>/dev/null || L=4096 +L=$((L+100)) +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'chmod u+r ${T}; rm -rf ${T}' 0 +cd -Pe $T +D=$(pwd) +chmod u-r "$D" +if [ -r "$D" ]; then + # Running as root, cannot test. + exit 0 +fi +set +e +while [ ${#D} -lt $L ]; do + mkdir veryverylongdirectoryname || exit + cd -Pe veryverylongdirectoryname 2>/dev/null + r=$? + [ $r -gt 1 ] && exit $r + if [ $r -eq 1 ]; then + # Verify that the directory was changed correctly. + cd -Pe .. || exit + [ "$(pwd)" = "$D" ] || exit + # Verify that omitting -e results in success. + cd -P veryverylongdirectoryname 2>/dev/null || exit + exit 0 + fi + D=$D/veryverylongdirectoryname +done +echo "cd -Pe never returned 1" +exit 0 diff --git a/bin/sh/tests/builtins/cd5.0 b/bin/sh/tests/builtins/cd5.0 new file mode 100644 index 0000000..3dff604 --- /dev/null +++ b/bin/sh/tests/builtins/cd5.0 @@ -0,0 +1,23 @@ +# $FreeBSD$ + +set -e +T=$(mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXX") +trap 'rm -rf "$T"' 0 + +cd -P "$T" +D=$(pwd) + +mkdir a a/1 b b/1 b/2 + +CDPATH=$D/a: +# Basic test. +cd 1 >/dev/null +[ "$(pwd)" = "$D/a/1" ] +# Test that the current directory is not checked before CDPATH. +cd "$D/b" +cd 1 >/dev/null +[ "$(pwd)" = "$D/a/1" ] +# Test not using a CDPATH entry. +cd "$D/b" +cd 2 +[ "$(pwd)" = "$D/b/2" ] diff --git a/bin/sh/tests/builtins/cd6.0 b/bin/sh/tests/builtins/cd6.0 new file mode 100644 index 0000000..083a061 --- /dev/null +++ b/bin/sh/tests/builtins/cd6.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +set -e +cd -P /bin +d=$PWD +CDPATH=/: +cd -P . +[ "$d" = "$PWD" ] +cd -P ./ +[ "$d" = "$PWD" ] diff --git a/bin/sh/tests/builtins/cd7.0 b/bin/sh/tests/builtins/cd7.0 new file mode 100644 index 0000000..9adda86 --- /dev/null +++ b/bin/sh/tests/builtins/cd7.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ + +set -e +cd /usr/bin +[ "$PWD" = /usr/bin ] +CDPATH=/: +cd . +[ "$PWD" = /usr/bin ] +cd ./ +[ "$PWD" = /usr/bin ] +cd .. +[ "$PWD" = /usr ] +cd /usr/bin +cd ../ +[ "$PWD" = /usr ] diff --git a/bin/sh/tests/builtins/cd8.0 b/bin/sh/tests/builtins/cd8.0 new file mode 100644 index 0000000..a68f77f --- /dev/null +++ b/bin/sh/tests/builtins/cd8.0 @@ -0,0 +1,26 @@ +# $FreeBSD$ + +# The exact wording of the error message is not standardized, but giving +# a description of the errno is useful. + +LC_ALL=C +export LC_ALL +r=0 + +t() { + exec 3>&1 + errmsg=`cd "$1" 2>&1 >&3 3>&-` + exec 3>&- + case $errmsg in + *[Nn]ot\ a\ directory*) + ;; + *) + printf "Wrong error message for %s: %s\n" "$1" "$errmsg" + r=3 + ;; + esac +} + +t /dev/tty +t /dev/tty/x +exit $r diff --git a/bin/sh/tests/builtins/command1.0 b/bin/sh/tests/builtins/command1.0 new file mode 100644 index 0000000..fd0afdf --- /dev/null +++ b/bin/sh/tests/builtins/command1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +true() { + false +} +command true diff --git a/bin/sh/tests/builtins/command10.0 b/bin/sh/tests/builtins/command10.0 new file mode 100644 index 0000000..2c1adf1 --- /dev/null +++ b/bin/sh/tests/builtins/command10.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '"$(f() { shift x; }; { command eval f 2>/dev/null; } >/dev/null; echo hi)" = hi' + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/command11.0 b/bin/sh/tests/builtins/command11.0 new file mode 100644 index 0000000..10c8647 --- /dev/null +++ b/bin/sh/tests/builtins/command11.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '"$({ command eval \{ shift x\; \} 2\>/dev/null; } >/dev/null; echo hi)" = hi' + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/command12.0 b/bin/sh/tests/builtins/command12.0 new file mode 100644 index 0000000..f981db3 --- /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/bin/sh/tests/builtins/command2.0 b/bin/sh/tests/builtins/command2.0 new file mode 100644 index 0000000..ff7b5f2 --- /dev/null +++ b/bin/sh/tests/builtins/command2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +PATH= +command -p cat < /dev/null diff --git a/bin/sh/tests/builtins/command3.0 b/bin/sh/tests/builtins/command3.0 new file mode 100644 index 0000000..9d4ae89 --- /dev/null +++ b/bin/sh/tests/builtins/command3.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ +command -v ls +command -v true +command -v /bin/ls + +fun() { + : +} +command -v fun +command -v break +command -v if + +alias foo=bar +command -v foo diff --git a/bin/sh/tests/builtins/command3.0.stdout b/bin/sh/tests/builtins/command3.0.stdout new file mode 100644 index 0000000..239c53f --- /dev/null +++ b/bin/sh/tests/builtins/command3.0.stdout @@ -0,0 +1,7 @@ +/bin/ls +true +/bin/ls +fun +break +if +alias foo='bar ' diff --git a/bin/sh/tests/builtins/command4.0 b/bin/sh/tests/builtins/command4.0 new file mode 100644 index 0000000..3e49613 --- /dev/null +++ b/bin/sh/tests/builtins/command4.0 @@ -0,0 +1,2 @@ +# $FreeBSD$ +! command -v nonexisting diff --git a/bin/sh/tests/builtins/command5.0 b/bin/sh/tests/builtins/command5.0 new file mode 100644 index 0000000..13b3fe1 --- /dev/null +++ b/bin/sh/tests/builtins/command5.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ +command -V ls +command -V true +command -V /bin/ls + +fun() { + : +} +command -V fun +command -V break +command -V if +command -V { + +alias foo=bar +command -V foo diff --git a/bin/sh/tests/builtins/command5.0.stdout b/bin/sh/tests/builtins/command5.0.stdout new file mode 100644 index 0000000..4cb2b11 --- /dev/null +++ b/bin/sh/tests/builtins/command5.0.stdout @@ -0,0 +1,8 @@ +ls is /bin/ls +true is a shell builtin +/bin/ls is /bin/ls +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 diff --git a/bin/sh/tests/builtins/command6.0 b/bin/sh/tests/builtins/command6.0 new file mode 100644 index 0000000..5b63bfe --- /dev/null +++ b/bin/sh/tests/builtins/command6.0 @@ -0,0 +1,22 @@ +# $FreeBSD$ +PATH=/var/empty +case $(command -pV ls) in +*/var/empty/ls*) + echo "Failed: \$(command -pV ls) should not match */var/empty/ls*" ;; +"ls is"*" "/*/ls) ;; +*) + echo "Failed: \$(command -pV ls) match \"ls is\"*\" \"/*/ls" ;; +esac +command -pV true +command -pV /bin/ls + +fun() { + : +} +command -pV fun +command -pV break +command -pV if +command -pV { + +alias foo=bar +command -pV foo diff --git a/bin/sh/tests/builtins/command6.0.stdout b/bin/sh/tests/builtins/command6.0.stdout new file mode 100644 index 0000000..df4d647 --- /dev/null +++ b/bin/sh/tests/builtins/command6.0.stdout @@ -0,0 +1,7 @@ +true is a shell builtin +/bin/ls is /bin/ls +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 diff --git a/bin/sh/tests/builtins/command7.0 b/bin/sh/tests/builtins/command7.0 new file mode 100644 index 0000000..fc652f2 --- /dev/null +++ b/bin/sh/tests/builtins/command7.0 @@ -0,0 +1,34 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '"$(PATH=/libexec command -V ld-elf.so.1)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' +check '"$(PATH=/libexec command -V ld-elf.so.1; :)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' +check '"$(PATH=/libexec command -pv ld-elf.so.1)" = ""' +check '"$(PATH=/libexec command -pv ld-elf.so.1; :)" = ""' + +PATH=/libexec:$PATH + +check '"$(command -V ld-elf.so.1)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' +check '"$(command -V ld-elf.so.1; :)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' +check '"$(command -pv ld-elf.so.1)" = ""' +check '"$(command -pv ld-elf.so.1; :)" = ""' + +PATH=/libexec + +check '"$(command -v ls)" = ""' +case $(command -pv ls) in +/*/ls) ;; +*) + echo "Failed: \$(command -pv ls) match /*/ls" + : $((failures += 1)) ;; +esac + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/command8.0 b/bin/sh/tests/builtins/command8.0 new file mode 100644 index 0000000..9e3a2b6 --- /dev/null +++ b/bin/sh/tests/builtins/command8.0 @@ -0,0 +1,45 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null,\ + eval,\ + exec,\ + export -p,\ + readonly -p,\ + set,\ + shift 0,\ + times,\ + trap,\ + unset foo" + +set -e + +# Check that special builtins can be executed via "command". + +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "v=:; while \$v; do v=false; command ${cmd}; done" >/dev/null +done + +while :; do + command break + echo Error on line $LINENO +done + +set p q r +command shift 2 +if [ $# -ne 1 ]; then + echo Error on line $LINENO +fi + +( + command exec >/dev/null + echo Error on line $LINENO +) + +set +e +! command shift 2 2>/dev/null diff --git a/bin/sh/tests/builtins/command9.0 b/bin/sh/tests/builtins/command9.0 new file mode 100644 index 0000000..212e52a --- /dev/null +++ b/bin/sh/tests/builtins/command9.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '"$({ command eval shift x 2>/dev/null; } >/dev/null; echo hi)" = hi' + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/dot1.0 b/bin/sh/tests/builtins/dot1.0 new file mode 100644 index 0000000..43eab0d --- /dev/null +++ b/bin/sh/tests/builtins/dot1.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit +trap 'rm -rf $T' 0 +cd $T || exit 3 +unset x +echo 'x=2' >testscript +. ./testscript +[ "$x" = 2 ] || failure $LINENO +cd / || exit 3 +x=1 +PATH=$T:$PATH . testscript +[ "$x" = 2 ] || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/dot2.0 b/bin/sh/tests/builtins/dot2.0 new file mode 100644 index 0000000..ed6379b --- /dev/null +++ b/bin/sh/tests/builtins/dot2.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit +trap 'rm -rf $T' 0 +cd $T || exit 3 +unset x +echo 'x=2' >testscript +. -- ./testscript +[ "$x" = 2 ] || failure $LINENO +cd / || exit 3 +x=1 +PATH=$T:$PATH . -- testscript +[ "$x" = 2 ] || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/dot3.0 b/bin/sh/tests/builtins/dot3.0 new file mode 100644 index 0000000..b337f0f --- /dev/null +++ b/bin/sh/tests/builtins/dot3.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +# . should return 0 if no command was executed. + +if false; then + exit 3 +else + . /dev/null + exit $? +fi diff --git a/bin/sh/tests/builtins/dot4.0 b/bin/sh/tests/builtins/dot4.0 new file mode 100644 index 0000000..b898131 --- /dev/null +++ b/bin/sh/tests/builtins/dot4.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +v=abcd +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +r=$( ( + trap 'exit 0' 0 + . "$v" +) 2>&1 >/dev/null) && [ -n "$r" ] diff --git a/bin/sh/tests/builtins/eval1.0 b/bin/sh/tests/builtins/eval1.0 new file mode 100644 index 0000000..04606a4 --- /dev/null +++ b/bin/sh/tests/builtins/eval1.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ +set -e + +eval +eval "" "" +eval "true" +! eval "false + +" diff --git a/bin/sh/tests/builtins/eval2.0 b/bin/sh/tests/builtins/eval2.0 new file mode 100644 index 0000000..bf06b6e --- /dev/null +++ b/bin/sh/tests/builtins/eval2.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +eval ' +false + +' && exit 1 +exit 0 diff --git a/bin/sh/tests/builtins/eval3.0 b/bin/sh/tests/builtins/eval3.0 new file mode 100644 index 0000000..dfb8357 --- /dev/null +++ b/bin/sh/tests/builtins/eval3.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +eval 'false;' && exit 1 +eval 'true;' || exit 1 +eval 'false; +' && exit 1 +eval 'true; +' || exit 1 +exit 0 diff --git a/bin/sh/tests/builtins/eval4.0 b/bin/sh/tests/builtins/eval4.0 new file mode 100644 index 0000000..67da2f5 --- /dev/null +++ b/bin/sh/tests/builtins/eval4.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# eval should preserve $? from command substitutions when starting +# the parsed command. +[ $(eval 'echo $?' $(false)) = 1 ] diff --git a/bin/sh/tests/builtins/eval5.0 b/bin/sh/tests/builtins/eval5.0 new file mode 100644 index 0000000..3e86de9 --- /dev/null +++ b/bin/sh/tests/builtins/eval5.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +# eval should return 0 if no command was executed. +eval $(false) diff --git a/bin/sh/tests/builtins/eval6.0 b/bin/sh/tests/builtins/eval6.0 new file mode 100644 index 0000000..6752bb6 --- /dev/null +++ b/bin/sh/tests/builtins/eval6.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# eval should preserve $? from command substitutions when starting +# the parsed command. +[ $(false; eval 'echo $?' $(:)) = 0 ] diff --git a/bin/sh/tests/builtins/exec1.0 b/bin/sh/tests/builtins/exec1.0 new file mode 100644 index 0000000..dd30a4c --- /dev/null +++ b/bin/sh/tests/builtins/exec1.0 @@ -0,0 +1,25 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +( + exec >/dev/null + echo bad +) +[ $? = 0 ] || failure $LINENO +( + exec ${SH} -c 'exit 42' + echo bad +) +[ $? = 42 ] || failure $LINENO +( + exec /var/empty/nosuch + echo bad +) 2>/dev/null +[ $? = 127 ] || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/exec2.0 b/bin/sh/tests/builtins/exec2.0 new file mode 100644 index 0000000..3dcb6c4 --- /dev/null +++ b/bin/sh/tests/builtins/exec2.0 @@ -0,0 +1,25 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +( + exec -- >/dev/null + echo bad +) +[ $? = 0 ] || failure $LINENO +( + exec -- ${SH} -c 'exit 42' + echo bad +) +[ $? = 42 ] || failure $LINENO +( + exec -- /var/empty/nosuch + echo bad +) 2>/dev/null +[ $? = 127 ] || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/exit1.0 b/bin/sh/tests/builtins/exit1.0 new file mode 100644 index 0000000..496d448 --- /dev/null +++ b/bin/sh/tests/builtins/exit1.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +# exit with an argument should overwrite the exit status in an EXIT trap. + +trap 'true; exit $?' 0 +false diff --git a/bin/sh/tests/builtins/exit2.8 b/bin/sh/tests/builtins/exit2.8 new file mode 100644 index 0000000..124c32e --- /dev/null +++ b/bin/sh/tests/builtins/exit2.8 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +# exit without arguments is the same as exit $? outside a trap. + +trap 'true; true' 0 +(exit 8) +exit diff --git a/bin/sh/tests/builtins/exit3.0 b/bin/sh/tests/builtins/exit3.0 new file mode 100644 index 0000000..80655ac --- /dev/null +++ b/bin/sh/tests/builtins/exit3.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# exit without arguments differs from exit $? in an EXIT trap. + +trap 'false; exit' 0 diff --git a/bin/sh/tests/builtins/export1.0 b/bin/sh/tests/builtins/export1.0 new file mode 100644 index 0000000..7b08c9d --- /dev/null +++ b/bin/sh/tests/builtins/export1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +env @badness=1 ${SH} -c 'v=`export -p`; eval "$v"' diff --git a/bin/sh/tests/builtins/fc1.0 b/bin/sh/tests/builtins/fc1.0 new file mode 100644 index 0000000..ab7a387 --- /dev/null +++ b/bin/sh/tests/builtins/fc1.0 @@ -0,0 +1,27 @@ +# $FreeBSD$ +set -e +trap 'echo Broken pipe -- test failed' PIPE + +P=${TMPDIR:-/tmp} +cd $P +T=$(mktemp -d sh-test.XXXXXX) +cd $T + +mkfifo input output error +HISTFILE=/dev/null ${SH} +m -i output 2>error & +{ + # Syntax error + echo ')' >&3 + # Read error message, shell will read new input now + read dummy <&5 + # Execute bad command again + echo 'fc -e true' >&3 + # Verify that the shell is still running + echo 'echo continued' >&3 || rc=3 + echo 'exit' >&3 || rc=3 + read line <&4 && [ "$line" = continued ] && : ${rc:=0} +} 3>input 4output 2>error & +exec 3>input +{ + # Command not found, containing slash + echo '/var/empty/nonexistent' >&3 + # Read error message, shell will read new input now + read dummy <&5 + # Execute bad command again + echo 'fc -e true; echo continued' >&3 + read dummy <&5 + read line <&4 && [ "$line" = continued ] && : ${rc:=0} + exec 3>&- + # Old sh duplicates itself after the fc, producing another line + # of output. + if read line <&4; then + echo "Extraneous output: $line" + rc=1 + fi +} 4&- + +rm input output error +rmdir ${P}/${T} +exit ${rc:-3} diff --git a/bin/sh/tests/builtins/for1.0 b/bin/sh/tests/builtins/for1.0 new file mode 100644 index 0000000..cd55e2c --- /dev/null +++ b/bin/sh/tests/builtins/for1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +false +for i in `false`; do exit 3; done diff --git a/bin/sh/tests/builtins/for2.0 b/bin/sh/tests/builtins/for2.0 new file mode 100644 index 0000000..48c22ce --- /dev/null +++ b/bin/sh/tests/builtins/for2.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +r=x +f() { return 42; } +f +for i in x; do + r=$? +done +[ "$r" = 42 ] diff --git a/bin/sh/tests/builtins/for3.0 b/bin/sh/tests/builtins/for3.0 new file mode 100644 index 0000000..cc37238 --- /dev/null +++ b/bin/sh/tests/builtins/for3.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +r=x +f() { return 42; } +for i in x`f`; do + r=$? +done +[ "$r" = 42 ] diff --git a/bin/sh/tests/builtins/getopts1.0 b/bin/sh/tests/builtins/getopts1.0 new file mode 100644 index 0000000..af31d55 --- /dev/null +++ b/bin/sh/tests/builtins/getopts1.0 @@ -0,0 +1,25 @@ +# $FreeBSD$ + +printf -- '-1-\n' +set -- -abc +getopts "ab:" OPTION +echo ${OPTION} + +# In this case 'getopts' should realize that we have not provided the +# required argument for "-b". +# Note that Solaris 10's (UNIX 03) /usr/xpg4/bin/sh, /bin/sh, and /bin/ksh; +# ksh93 20090505; pdksh 5.2.14p2; mksh R39c; bash 4.1 PL7; and zsh 4.3.10. +# all recognize that "b" is missing its argument on the *first* iteration +# of 'getopts' and do not produce the "a" in $OPTION. +printf -- '-2-\n' +set -- -ab +getopts "ab:" OPTION +echo ${OPTION} +getopts "ab:" OPTION +echo ${OPTION} + +# The 'shift' is aimed at causing an error. +printf -- '-3-\n' +shift 1 +getopts "ab:" OPTION +echo ${OPTION} diff --git a/bin/sh/tests/builtins/getopts1.0.stdout b/bin/sh/tests/builtins/getopts1.0.stdout new file mode 100644 index 0000000..a0a347e --- /dev/null +++ b/bin/sh/tests/builtins/getopts1.0.stdout @@ -0,0 +1,8 @@ +-1- +a +-2- +a +No arg for -b option +? +-3- +? diff --git a/bin/sh/tests/builtins/getopts2.0 b/bin/sh/tests/builtins/getopts2.0 new file mode 100644 index 0000000..5a5dbe2 --- /dev/null +++ b/bin/sh/tests/builtins/getopts2.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ +set - -ax +getopts ax option +set -C +getopts ax option +echo $option diff --git a/bin/sh/tests/builtins/getopts2.0.stdout b/bin/sh/tests/builtins/getopts2.0.stdout new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/bin/sh/tests/builtins/getopts2.0.stdout @@ -0,0 +1 @@ +x diff --git a/bin/sh/tests/builtins/hash1.0 b/bin/sh/tests/builtins/hash1.0 new file mode 100644 index 0000000..45cc300 --- /dev/null +++ b/bin/sh/tests/builtins/hash1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +cat /dev/null +hash +hash -r +hash diff --git a/bin/sh/tests/builtins/hash1.0.stdout b/bin/sh/tests/builtins/hash1.0.stdout new file mode 100644 index 0000000..3afc3e7 --- /dev/null +++ b/bin/sh/tests/builtins/hash1.0.stdout @@ -0,0 +1 @@ +/bin/cat diff --git a/bin/sh/tests/builtins/hash2.0 b/bin/sh/tests/builtins/hash2.0 new file mode 100644 index 0000000..e5cd21b --- /dev/null +++ b/bin/sh/tests/builtins/hash2.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +hash +hash cat +hash diff --git a/bin/sh/tests/builtins/hash2.0.stdout b/bin/sh/tests/builtins/hash2.0.stdout new file mode 100644 index 0000000..3afc3e7 --- /dev/null +++ b/bin/sh/tests/builtins/hash2.0.stdout @@ -0,0 +1 @@ +/bin/cat diff --git a/bin/sh/tests/builtins/hash3.0 b/bin/sh/tests/builtins/hash3.0 new file mode 100644 index 0000000..eade0b3 --- /dev/null +++ b/bin/sh/tests/builtins/hash3.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +hash -v cat +hash diff --git a/bin/sh/tests/builtins/hash3.0.stdout b/bin/sh/tests/builtins/hash3.0.stdout new file mode 100644 index 0000000..a34864c --- /dev/null +++ b/bin/sh/tests/builtins/hash3.0.stdout @@ -0,0 +1,2 @@ +/bin/cat +/bin/cat diff --git a/bin/sh/tests/builtins/hash4.0 b/bin/sh/tests/builtins/hash4.0 new file mode 100644 index 0000000..dec584c --- /dev/null +++ b/bin/sh/tests/builtins/hash4.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +exec 3>&1 +m=`hash nosuchtool 2>&1 >&3` +r=$? +[ "$r" != 0 ] && [ -n "$m" ] diff --git a/bin/sh/tests/builtins/jobid1.0 b/bin/sh/tests/builtins/jobid1.0 new file mode 100644 index 0000000..483fda2 --- /dev/null +++ b/bin/sh/tests/builtins/jobid1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +# Non-standard builtin. + +: & +p1=$! +p2=$(jobid) +[ "${p1:?}" = "${p2:?}" ] diff --git a/bin/sh/tests/builtins/jobid2.0 b/bin/sh/tests/builtins/jobid2.0 new file mode 100644 index 0000000..101831a --- /dev/null +++ b/bin/sh/tests/builtins/jobid2.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +: & +p1=$(jobid) +p2=$(jobid --) +p3=$(jobid %+) +p4=$(jobid -- %+) +[ "${p1:?}" = "${p2:?}" ] && [ "${p2:?}" = "${p3:?}" ] && +[ "${p3:?}" = "${p4:?}" ] && [ "${p4:?}" = "${p1:?}" ] diff --git a/bin/sh/tests/builtins/lineno.0 b/bin/sh/tests/builtins/lineno.0 new file mode 100644 index 0000000..c9311f8 --- /dev/null +++ b/bin/sh/tests/builtins/lineno.0 @@ -0,0 +1,16 @@ +# $FreeBSD$ +echo $LINENO +echo $LINENO + +f() { + echo $LINENO + echo $LINENO +} + +f + +echo ${LINENO:-foo} +echo ${LINENO=foo} +echo ${LINENO:+foo} +echo ${LINENO+foo} +echo ${#LINENO} diff --git a/bin/sh/tests/builtins/lineno.0.stdout b/bin/sh/tests/builtins/lineno.0.stdout new file mode 100644 index 0000000..82583a9 --- /dev/null +++ b/bin/sh/tests/builtins/lineno.0.stdout @@ -0,0 +1,9 @@ +2 +3 +2 +3 +12 +13 +foo +foo +2 diff --git a/bin/sh/tests/builtins/local1.0 b/bin/sh/tests/builtins/local1.0 new file mode 100644 index 0000000..b28837ec --- /dev/null +++ b/bin/sh/tests/builtins/local1.0 @@ -0,0 +1,13 @@ +# $FreeBSD$ +# A commonly used but non-POSIX builtin. + +f() { + local x + x=2 + [ "$x" = 2 ] +} +x=1 +f || exit 3 +[ "$x" = 1 ] || exit 3 +f || exit 3 +[ "$x" = 1 ] || exit 3 diff --git a/bin/sh/tests/builtins/local2.0 b/bin/sh/tests/builtins/local2.0 new file mode 100644 index 0000000..cc8c10f --- /dev/null +++ b/bin/sh/tests/builtins/local2.0 @@ -0,0 +1,17 @@ +# $FreeBSD$ + +f() { + local - + set -a + case $- in + *a*) : ;; + *) echo In-function \$- bad + esac +} +case $- in +*a*) echo Initial \$- bad +esac +f +case $- in +*a*) echo Final \$- bad +esac diff --git a/bin/sh/tests/builtins/local3.0 b/bin/sh/tests/builtins/local3.0 new file mode 100644 index 0000000..39ee370 --- /dev/null +++ b/bin/sh/tests/builtins/local3.0 @@ -0,0 +1,26 @@ +# $FreeBSD$ + +f() { + local "$@" + set -a + x=7 + case $- in + *a*) : ;; + *) echo In-function \$- bad + esac + [ "$x" = 7 ] || echo In-function \$x bad +} +x=1 +case $- in +*a*) echo Initial \$- bad +esac +f x - +case $- in +*a*) echo Intermediate \$- bad +esac +[ "$x" = 1 ] || echo Intermediate \$x bad +f - x +case $- in +*a*) echo Final \$- bad +esac +[ "$x" = 1 ] || echo Final \$x bad diff --git a/bin/sh/tests/builtins/local4.0 b/bin/sh/tests/builtins/local4.0 new file mode 100644 index 0000000..3955aaa --- /dev/null +++ b/bin/sh/tests/builtins/local4.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +f() { + local -- x + x=2 + [ "$x" = 2 ] +} +x=1 +f || exit 3 +[ "$x" = 1 ] || exit 3 +f || exit 3 +[ "$x" = 1 ] || exit 3 diff --git a/bin/sh/tests/builtins/locale1.0 b/bin/sh/tests/builtins/locale1.0 new file mode 100644 index 0000000..90b1094 --- /dev/null +++ b/bin/sh/tests/builtins/locale1.0 @@ -0,0 +1,134 @@ +# $FreeBSD$ +# Note: this test depends on strerror() using locale. + +failures=0 + +check() { + if ! eval "[ $1 ]"; then + echo "Failed: $1 at $2" + : $((failures += 1)) + fi +} + +unset LANG LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES +unset LANGUAGE + +msgeng="No such file or directory" +msgdut="Bestand of map niet gevonden" + +# Verify C locale error message. +case $(command . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +# Various locale variables that should not affect the message. +case $(LC_ALL=C command . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_ALL=C LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_ALL=C LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_CTYPE=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +# Verify Dutch message. +case $(export LANG=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(export LC_MESSAGES=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(export LC_ALL=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +# Verify that command assignments do not set the locale persistently. +case $(command . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in + *"$msgdut"*"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in + *"$msgdut"*"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in + *"$msgdut"*"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +# Check special builtin; add colon invocation to avoid depending on certain fix. +case $(LC_ALL=nl_NL.ISO8859-1 . /var/empty/foo 2>&1; :) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +# Assignments on special builtins are exported to that builtin; the export +# is not persistent. +case $(LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in + *"$msgeng"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +case $(export LC_ALL; LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in + *"$msgdut"*) ok=1 ;; + *) ok=0 ;; +esac +check '$ok -eq 1' $LINENO + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/printf1.0 b/bin/sh/tests/builtins/printf1.0 new file mode 100644 index 0000000..99a82d0 --- /dev/null +++ b/bin/sh/tests/builtins/printf1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(printf '%c\0%s%d' x '\' 010 | tr '\0' Z)" = 'xZ\8' ] diff --git a/bin/sh/tests/builtins/printf2.0 b/bin/sh/tests/builtins/printf2.0 new file mode 100644 index 0000000..7763d6f --- /dev/null +++ b/bin/sh/tests/builtins/printf2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(printf '%cZ%s%d' x '\' 010)" = 'xZ\8' ] diff --git a/bin/sh/tests/builtins/printf3.0 b/bin/sh/tests/builtins/printf3.0 new file mode 100644 index 0000000..0e7ea85 --- /dev/null +++ b/bin/sh/tests/builtins/printf3.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +set -e +v=$(! printf "%d" @wrong 2>/dev/null) +[ "$v" = "0" ] diff --git a/bin/sh/tests/builtins/printf4.0 b/bin/sh/tests/builtins/printf4.0 new file mode 100644 index 0000000..2dd3e72 --- /dev/null +++ b/bin/sh/tests/builtins/printf4.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +set -e +v=$(! printf "%d" 4wrong 2>/dev/null) +[ "$v" = "4" ] diff --git a/bin/sh/tests/builtins/read1.0 b/bin/sh/tests/builtins/read1.0 new file mode 100644 index 0000000..06a68fa --- /dev/null +++ b/bin/sh/tests/builtins/read1.0 @@ -0,0 +1,26 @@ +# $FreeBSD$ +set -e + +echo "1 2 3" | { read a; echo "x${a}x"; } +echo "1 2 3" | { read a b; echo "x${a}x${b}x"; } +echo "1 2 3" | { read a b c; echo "x${a}x${b}x${c}x"; } +echo "1 2 3" | { read a b c d; echo "x${a}x${b}x${c}x${d}x"; } + +echo " 1 2 3 " | { read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 2 3 " | { unset IFS; read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 2 3 " | { IFS=$(printf ' \t\n') read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 2 3 " | { IFS= read a b; echo "x${a}x${b}x"; } + +echo " 1,2 3 " | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } +echo ", 2 ,3" | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 ,,3" | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 , , 3" | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 ,2 3," | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 ,2 3,," | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } + +echo " 1,2 3 " | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } +echo ", 2 ,3" | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 ,,3" | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 , , 3" | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 ,2 3," | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } +echo " 1 ,2 3,," | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } diff --git a/bin/sh/tests/builtins/read1.0.stdout b/bin/sh/tests/builtins/read1.0.stdout new file mode 100644 index 0000000..dbcb1af --- /dev/null +++ b/bin/sh/tests/builtins/read1.0.stdout @@ -0,0 +1,20 @@ +x1 2 3x +x1x2 3x +x1x2x3x +x1x2x3xx +x1x2x3x +x1x2x3x +x1x2x3x +x 1 2 3 xx +x1x2x3x +xx2x3x +x1xx3x +x1xx3x +x1x2x3x +x1x2x3,,x +x1x2x3x +xx2x3x +x1xx3x +x1xx3x +x1x2x3x +x1x2x3,,x diff --git a/bin/sh/tests/builtins/read2.0 b/bin/sh/tests/builtins/read2.0 new file mode 100644 index 0000000..fc74511 --- /dev/null +++ b/bin/sh/tests/builtins/read2.0 @@ -0,0 +1,31 @@ +# $FreeBSD$ + +set -e +{ + echo 1 + echo two + echo three +} | { + read x + [ "$x" = 1 ] + (read x + [ "$x" = two ]) + read x + [ "$x" = three ] +} + +T=`mktemp sh-test.XXXXXX` +trap 'rm -f "$T"' 0 +{ + echo 1 + echo two + echo three +} >$T +{ + read x + [ "$x" = 1 ] + (read x + [ "$x" = two ]) + read x + [ "$x" = three ] +} <$T diff --git a/bin/sh/tests/builtins/read3.0 b/bin/sh/tests/builtins/read3.0 new file mode 100644 index 0000000..c6ae9c1 --- /dev/null +++ b/bin/sh/tests/builtins/read3.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +printf '%s\n' 'a\ b c' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' 'a b\ c' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' 'a\:b:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' 'a:b\:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\:a' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\\ a' | { read -r a b; printf '%s\n' "x${a}x${b}x"; } diff --git a/bin/sh/tests/builtins/read3.0.stdout b/bin/sh/tests/builtins/read3.0.stdout new file mode 100644 index 0000000..8ed98ca --- /dev/null +++ b/bin/sh/tests/builtins/read3.0.stdout @@ -0,0 +1,9 @@ +xa bxcx +xaxb cx +xa:bxcx +xaxb:cx +x axx +x:axx +x\xx +x\ axx +x\\\xax diff --git a/bin/sh/tests/builtins/read4.0 b/bin/sh/tests/builtins/read4.0 new file mode 100644 index 0000000..7204a35 --- /dev/null +++ b/bin/sh/tests/builtins/read4.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +printf '%s\n' '\a\ b c' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\a b\ c' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\a\:b:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\a:b\:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\:a' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } +printf '%s\n' '\\\:a' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } diff --git a/bin/sh/tests/builtins/read4.0.stdout b/bin/sh/tests/builtins/read4.0.stdout new file mode 100644 index 0000000..a8747a4 --- /dev/null +++ b/bin/sh/tests/builtins/read4.0.stdout @@ -0,0 +1,8 @@ +xa bxcx +xaxb cx +xa:bxcx +xaxb:cx +x\xax +x\xax +x\ axx +x\:axx diff --git a/bin/sh/tests/builtins/read5.0 b/bin/sh/tests/builtins/read5.0 new file mode 100644 index 0000000..7d83391 --- /dev/null +++ b/bin/sh/tests/builtins/read5.0 @@ -0,0 +1,32 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.ISO8859-1 +export LC_CTYPE + +# Note: the first and last characters are not whitespace. +# Exclude backslash and newline. +bad1=`printf %03o \'\\\\` +bad2=`printf %03o \'' +'` +e= +for i in 0 1 2 3; do + for j in 0 1 2 3 4 5 6 7; do + for k in 0 1 2 3 4 5 6 7; do + case $i$j$k in + 000|$bad1|$bad2) continue ;; + esac + e="$e\\$i$j$k" + done + done +done +e=`printf "$e"` +[ "${#e}" = 253 ] || echo length bad + +r1=`printf '%s\n' "$e" | { read -r x; printf '%s' "$x"; }` +[ "$r1" = "$e" ] || echo "read with -r bad" +r2=`printf '%s\n' "$e" | { read x; printf '%s' "$x"; }` +[ "$r2" = "$e" ] || echo "read without -r bad 1" +IFS= +r3=`printf '%s\n' "$e" | { read x; printf '%s' "$x"; }` +[ "$r3" = "$e" ] || echo "read without -r bad 2" diff --git a/bin/sh/tests/builtins/read6.0 b/bin/sh/tests/builtins/read6.0 new file mode 100644 index 0000000..2168e10 --- /dev/null +++ b/bin/sh/tests/builtins/read6.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +: | read x +r=$? +[ "$r" = 1 ] diff --git a/bin/sh/tests/builtins/read7.0 b/bin/sh/tests/builtins/read7.0 new file mode 100644 index 0000000..e78f887 --- /dev/null +++ b/bin/sh/tests/builtins/read7.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +{ errmsg=`read x <&- 2>&1 >&3`; } 3>&1 +r=$? +[ "$r" -ge 2 ] && [ "$r" -le 128 ] && [ -n "$errmsg" ] diff --git a/bin/sh/tests/builtins/return1.0 b/bin/sh/tests/builtins/return1.0 new file mode 100644 index 0000000..787e892 --- /dev/null +++ b/bin/sh/tests/builtins/return1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +f() { + return 0 + exit 1 +} + +f diff --git a/bin/sh/tests/builtins/return2.1 b/bin/sh/tests/builtins/return2.1 new file mode 100644 index 0000000..0ef8171 --- /dev/null +++ b/bin/sh/tests/builtins/return2.1 @@ -0,0 +1,7 @@ +# $FreeBSD$ +f() { + true && return 1 + return 0 +} + +f diff --git a/bin/sh/tests/builtins/return3.1 b/bin/sh/tests/builtins/return3.1 new file mode 100644 index 0000000..605ec68 --- /dev/null +++ b/bin/sh/tests/builtins/return3.1 @@ -0,0 +1,3 @@ +# $FreeBSD$ +return 1 +exit 0 diff --git a/bin/sh/tests/builtins/return4.0 b/bin/sh/tests/builtins/return4.0 new file mode 100644 index 0000000..be5582b --- /dev/null +++ b/bin/sh/tests/builtins/return4.0 @@ -0,0 +1,16 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit +trap 'rm -rf $T' 0 +cd $T || exit 3 +echo 'return 42; exit 4' >testscript +. ./testscript +[ "$?" = 42 ] || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/return5.0 b/bin/sh/tests/builtins/return5.0 new file mode 100644 index 0000000..6e4b7bd --- /dev/null +++ b/bin/sh/tests/builtins/return5.0 @@ -0,0 +1,17 @@ +# $FreeBSD$ + +if [ "$1" != nested ]; then + f() { + set -- nested + . "$0" + # Allow return to return from the function or the dot script. + return 4 + } + f + exit $(($? ^ 4)) +fi +# To trigger the bug, the following commands must be at the top level, +# with newlines in between. +return 4 +echo bad +exit 1 diff --git a/bin/sh/tests/builtins/return6.4 b/bin/sh/tests/builtins/return6.4 new file mode 100644 index 0000000..e4d8e0d --- /dev/null +++ b/bin/sh/tests/builtins/return6.4 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +while return 4; do exit 3; done diff --git a/bin/sh/tests/builtins/return7.4 b/bin/sh/tests/builtins/return7.4 new file mode 100644 index 0000000..2047373 --- /dev/null +++ b/bin/sh/tests/builtins/return7.4 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +f() { + while return 4; do exit 3; done +} +f diff --git a/bin/sh/tests/builtins/return8.0 b/bin/sh/tests/builtins/return8.0 new file mode 100644 index 0000000..f00e859 --- /dev/null +++ b/bin/sh/tests/builtins/return8.0 @@ -0,0 +1,13 @@ +# $FreeBSD$ + +if [ "$1" = nested ]; then + return 17 +fi + +f() { + set -- nested + . "$0" + return $(($? ^ 1)) +} +f +exit $(($? ^ 16)) diff --git a/bin/sh/tests/builtins/set1.0 b/bin/sh/tests/builtins/set1.0 new file mode 100644 index 0000000..fc39fad --- /dev/null +++ b/bin/sh/tests/builtins/set1.0 @@ -0,0 +1,32 @@ +# $FreeBSD$ + +set +C +set +f +set -e + +settings=$(set +o) +set -C +set -f +set +e +case $- in +*C*) ;; +*) echo missing C ;; +esac +case $- in +*f*) ;; +*) echo missing C ;; +esac +case $- in +*e*) echo bad e ;; +esac +eval "$settings" +case $- in +*C*) echo bad C ;; +esac +case $- in +*f*) echo bad f ;; +esac +case $- in +*e*) ;; +*) echo missing e ;; +esac diff --git a/bin/sh/tests/builtins/set2.0 b/bin/sh/tests/builtins/set2.0 new file mode 100644 index 0000000..ad13eab --- /dev/null +++ b/bin/sh/tests/builtins/set2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! env @badness=1 ${SH} -c 'v=`set`; eval "$v"' 2>&1 | grep @badness diff --git a/bin/sh/tests/builtins/trap1.0 b/bin/sh/tests/builtins/trap1.0 new file mode 100644 index 0000000..313f6a3 --- /dev/null +++ b/bin/sh/tests/builtins/trap1.0 @@ -0,0 +1,22 @@ +# $FreeBSD$ + +test "$(trap 'echo trapped' EXIT; :)" = trapped || exit 1 + +test "$(trap 'echo trapped' EXIT; /usr/bin/true)" = trapped || exit 1 + +result=$(${SH} -c 'trap "echo trapped" EXIT; /usr/bin/false') +test $? -eq 1 || exit 1 +test "$result" = trapped || exit 1 + +result=$(${SH} -c 'trap "echo trapped" EXIT; exec /usr/bin/false') +test $? -eq 1 || exit 1 +test -z "$result" || exit 1 + +result=0 +trap 'result=$((result+1))' INT +kill -INT $$ +test "$result" -eq 1 || exit 1 +(kill -INT $$) +test "$result" -eq 2 || exit 1 + +exit 0 diff --git a/bin/sh/tests/builtins/trap10.0 b/bin/sh/tests/builtins/trap10.0 new file mode 100644 index 0000000..fa0e35d --- /dev/null +++ b/bin/sh/tests/builtins/trap10.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +# Check that the return statement will not break the EXIT trap, ie. all +# trap commands are executed before the script exits. + +test "$(trap 'printf trap; echo ped' EXIT; f() { return; }; f)" = trapped || exit 1 diff --git a/bin/sh/tests/builtins/trap11.0 b/bin/sh/tests/builtins/trap11.0 new file mode 100644 index 0000000..cfeea9e --- /dev/null +++ b/bin/sh/tests/builtins/trap11.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +# Check that the return statement will not break the USR1 trap, ie. all +# trap commands are executed before the script resumes. + +result=$(${SH} -c 'trap "printf trap; echo ped" USR1; f() { return $(kill -USR1 $$); }; f') +test $? -eq 0 || exit 1 +test "$result" = trapped || exit 1 diff --git a/bin/sh/tests/builtins/trap12.0 b/bin/sh/tests/builtins/trap12.0 new file mode 100644 index 0000000..8c62ffd --- /dev/null +++ b/bin/sh/tests/builtins/trap12.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +f() { + trap 'return 42' USR1 + kill -USR1 $$ + return 3 +} +f +r=$? +[ "$r" = 42 ] diff --git a/bin/sh/tests/builtins/trap13.0 b/bin/sh/tests/builtins/trap13.0 new file mode 100644 index 0000000..d90eb08 --- /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 0000000..97cce8d --- /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/bin/sh/tests/builtins/trap2.0 b/bin/sh/tests/builtins/trap2.0 new file mode 100644 index 0000000..a05287a --- /dev/null +++ b/bin/sh/tests/builtins/trap2.0 @@ -0,0 +1,52 @@ +# $FreeBSD$ +# This is really a test for outqstr(), which is readily accessible via trap. + +runtest() +{ + teststring=$1 + trap -- "$teststring" USR1 + traps=$(trap) + if [ "$teststring" != "-" ] && [ -z "$traps" ]; then + # One possible reading of POSIX requires the above to return an + # empty string because backquote commands are executed in a + # subshell and subshells shall reset traps. However, an example + # in the normative description of the trap builtin shows the + # same usage as here, it is useful and our /bin/sh allows it. + echo '$(trap) is broken' + exit 1 + fi + trap - USR1 + eval "$traps" + traps2=$(trap) + if [ "$traps" != "$traps2" ]; then + echo "Mismatch for '$teststring'" + exit 1 + fi +} + +runtest 'echo' +runtest 'echo hi' +runtest "'echo' 'hi'" +runtest '"echo" $PATH' +runtest '\echo "$PATH"' +runtest ' 0' +runtest '0 ' +runtest ' 1' +runtest '1 ' +i=1 +while [ $i -le 127 ]; do + c=$(printf \\"$(printf %o $i)") + if [ $i -lt 48 ] || [ $i -gt 57 ]; then + runtest "$c" + fi + runtest " $c$c" + runtest "a$c" + i=$((i+1)) +done +IFS=, +runtest ' ' +runtest ',' +unset IFS +runtest ' ' + +exit 0 diff --git a/bin/sh/tests/builtins/trap3.0 b/bin/sh/tests/builtins/trap3.0 new file mode 100644 index 0000000..8160729 --- /dev/null +++ b/bin/sh/tests/builtins/trap3.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +{ + trap '' garbage && exit 3 + trap - garbage && exit 3 + trap true garbage && exit 3 + trap '' 99999 && exit 3 + trap - 99999 && exit 3 + trap true 99999 && exit 3 +} 2>/dev/null +exit 0 diff --git a/bin/sh/tests/builtins/trap4.0 b/bin/sh/tests/builtins/trap4.0 new file mode 100644 index 0000000..7f2080e --- /dev/null +++ b/bin/sh/tests/builtins/trap4.0 @@ -0,0 +1,17 @@ +# $FreeBSD$ + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd $T || exit 3 +mkfifo fifo1 + +v=$( + exec 3>&1 + : &3 2>/dev/null' PIPE + echo x 2>/dev/null + } >fifo1 +) +test "$v" = trapped diff --git a/bin/sh/tests/builtins/trap5.0 b/bin/sh/tests/builtins/trap5.0 new file mode 100644 index 0000000..56e0fb1 --- /dev/null +++ b/bin/sh/tests/builtins/trap5.0 @@ -0,0 +1,19 @@ +# $FreeBSD$ + +set -e +trap - USR1 +initial=$(trap) +trap -- -l USR1 +added=$(trap) +[ -n "$added" ] +trap - USR1 +second=$(trap) +[ "$initial" = "$second" ] +eval "$added" +added2=$(trap) +added3=$(trap --) +[ "$added" = "$added2" ] +[ "$added2" = "$added3" ] +trap -- - USR1 +third=$(trap) +[ "$initial" = "$third" ] diff --git a/bin/sh/tests/builtins/trap6.0 b/bin/sh/tests/builtins/trap6.0 new file mode 100644 index 0000000..bd2bf7e --- /dev/null +++ b/bin/sh/tests/builtins/trap6.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +v=$( + ${SH} -c 'trap "echo ok; exit" USR1; kill -USR1 $$' & + # Suppress possible message about exit on signal + wait $! >/dev/null 2>&1 +) +r=$(kill -l $?) +[ "$v" = "ok" ] && { [ "$r" = "USR1" ] || [ "$r" = "usr1" ]; } diff --git a/bin/sh/tests/builtins/trap7.0 b/bin/sh/tests/builtins/trap7.0 new file mode 100644 index 0000000..35529b8 --- /dev/null +++ b/bin/sh/tests/builtins/trap7.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(trap 'echo trapped' EXIT)" = trapped ] diff --git a/bin/sh/tests/builtins/trap8.0 b/bin/sh/tests/builtins/trap8.0 new file mode 100644 index 0000000..cdce976 --- /dev/null +++ b/bin/sh/tests/builtins/trap8.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +# I am not sure if POSIX requires the shell to continue processing +# further trap names in the same trap command after an invalid one. + +test -n "$(trap true garbage TERM 2>/dev/null || trap)" || exit 3 +exit 0 diff --git a/bin/sh/tests/builtins/trap9.0 b/bin/sh/tests/builtins/trap9.0 new file mode 100644 index 0000000..0f584ec --- /dev/null +++ b/bin/sh/tests/builtins/trap9.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +test "$(trap 'printf trap; echo ped' EXIT; f() { :; }; f)" = trapped || exit 1 diff --git a/bin/sh/tests/builtins/type1.0 b/bin/sh/tests/builtins/type1.0 new file mode 100644 index 0000000..c5e4564 --- /dev/null +++ b/bin/sh/tests/builtins/type1.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ +command -v not-here && exit 1 +command -v /not-here && exit 1 +command -V not-here && exit 1 +command -V /not-here && exit 1 +type not-here && exit 1 +type /not-here && exit 1 +exit 0 diff --git a/bin/sh/tests/builtins/type1.0.stderr b/bin/sh/tests/builtins/type1.0.stderr new file mode 100644 index 0000000..7853418 --- /dev/null +++ b/bin/sh/tests/builtins/type1.0.stderr @@ -0,0 +1,4 @@ +not-here: not found +/not-here: No such file or directory +not-here: not found +/not-here: No such file or directory diff --git a/bin/sh/tests/builtins/type2.0 b/bin/sh/tests/builtins/type2.0 new file mode 100644 index 0000000..fe44d95 --- /dev/null +++ b/bin/sh/tests/builtins/type2.0 @@ -0,0 +1,26 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "$*"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check 'PATH=/libexec type ld-elf.so.1 >/dev/null' +check '! PATH=/libexec type ls 2>/dev/null' + +PATH=/libexec:$PATH + +check 'type ld-elf.so.1 >/dev/null' + +PATH=/libexec + +check 'type ld-elf.so.1 >/dev/null' +check '! type ls 2>/dev/null' +check 'PATH=/bin type ls >/dev/null' +check '! PATH=/bin type ld-elf.so.1 2>/dev/null' + +exit $((failures > 0)) diff --git a/bin/sh/tests/builtins/type3.0 b/bin/sh/tests/builtins/type3.0 new file mode 100644 index 0000000..87cccdd --- /dev/null +++ b/bin/sh/tests/builtins/type3.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(type type)" = "$(type -- type)" ] diff --git a/bin/sh/tests/builtins/unalias.0 b/bin/sh/tests/builtins/unalias.0 new file mode 100644 index 0000000..34d8d6e --- /dev/null +++ b/bin/sh/tests/builtins/unalias.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ +set -e + +alias false=true +false +unalias false +false && exit 1 +unalias false && exit 1 + +alias a1=foo a2=bar +unalias a1 a2 +unalias a1 && exit 1 +unalias a2 && exit 1 +alias a2=bar +unalias a1 a2 && exit 1 + +alias a1=foo a2=bar +unalias -a +unalias a1 && exit 1 +unalias a2 && exit 1 +exit 0 diff --git a/bin/sh/tests/builtins/var-assign.0 b/bin/sh/tests/builtins/var-assign.0 new file mode 100644 index 0000000..ace39c0 --- /dev/null +++ b/bin/sh/tests/builtins/var-assign.0 @@ -0,0 +1,55 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null, + eval, + exec, + export -p, + readonly -p, + set, + shift 0, + times, + trap, + unset foo" + +UTILS="alias,\ + bg,\ + bind,\ + cd,\ + command echo,\ + echo,\ + false,\ + fc -l,\ + fg,\ + getopts a var,\ + hash,\ + jobs,\ + printf a,\ + pwd,\ + read var < /dev/null,\ + test,\ + true,\ + type ls,\ + ulimit,\ + umask,\ + unalias -a,\ + wait" + +set -e + +# For special built-ins variable assignments affect the shell environment. +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "VAR=1; VAR=0 ${cmd}; exit \${VAR}" >/dev/null 2>&1 +done + +# For other built-ins and utilites they do not. +set -- ${UTILS} +for cmd in "$@" +do + ${SH} -c "VAR=0; VAR=1 ${cmd}; exit \${VAR}" >/dev/null 2>&1 +done diff --git a/bin/sh/tests/builtins/var-assign2.0 b/bin/sh/tests/builtins/var-assign2.0 new file mode 100644 index 0000000..eafec89 --- /dev/null +++ b/bin/sh/tests/builtins/var-assign2.0 @@ -0,0 +1,55 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null,\ + eval,\ + exec,\ + export -p,\ + readonly -p,\ + set,\ + shift 0,\ + times,\ + trap,\ + unset foo" + +UTILS="alias,\ + bg,\ + bind,\ + cd,\ + command echo,\ + echo,\ + false,\ + fc -l,\ + fg,\ + getopts a var,\ + hash,\ + jobs,\ + printf a,\ + pwd,\ + read var < /dev/null,\ + test,\ + true,\ + type ls,\ + ulimit,\ + umask,\ + unalias -a,\ + wait" + +set -e + +# With 'command', variable assignments do not affect the shell environment. + +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "VAR=0; VAR=1 command ${cmd}; exit \${VAR}" >/dev/null 2>&1 +done + +set -- ${UTILS} +for cmd in "$@" +do + ${SH} -c "VAR=0; VAR=1 command ${cmd}; exit \${VAR}" >/dev/null 2>&1 +done diff --git a/bin/sh/tests/builtins/wait1.0 b/bin/sh/tests/builtins/wait1.0 new file mode 100644 index 0000000..1ca8530 --- /dev/null +++ b/bin/sh/tests/builtins/wait1.0 @@ -0,0 +1,23 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +exit 4 & p4=$! +exit 8 & p8=$! +wait $p4 +[ $? = 4 ] || failure $LINENO +wait $p8 +[ $? = 8 ] || failure $LINENO + +exit 3 & p3=$! +exit 7 & p7=$! +wait $p7 +[ $? = 7 ] || failure $LINENO +wait $p3 +[ $? = 3 ] || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/wait10.0 b/bin/sh/tests/builtins/wait10.0 new file mode 100644 index 0000000..864fc78 --- /dev/null +++ b/bin/sh/tests/builtins/wait10.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +# Init cannot be a child of the shell. +exit 49 & p49=$! +wait 1 "$p49" +[ "$?" = 49 ] diff --git a/bin/sh/tests/builtins/wait2.0 b/bin/sh/tests/builtins/wait2.0 new file mode 100644 index 0000000..e61455c --- /dev/null +++ b/bin/sh/tests/builtins/wait2.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +for i in 1 2 3 4 5 6 7 8 9 10; do + exit $i & +done +wait || failure $LINENO +wait || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/wait3.0 b/bin/sh/tests/builtins/wait3.0 new file mode 100644 index 0000000..1ed5299 --- /dev/null +++ b/bin/sh/tests/builtins/wait3.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd $T || exit 3 +mkfifo fifo1 +for i in 1 2 3 4 5 6 7 8 9 10; do + exit $i 4fifo1 +wait || failure $LINENO +(${SH} -c echo >&3) 2>/dev/null && failure $LINENO +wait || failure $LINENO + +test -z "$failures" diff --git a/bin/sh/tests/builtins/wait4.0 b/bin/sh/tests/builtins/wait4.0 new file mode 100644 index 0000000..7935131 --- /dev/null +++ b/bin/sh/tests/builtins/wait4.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +T=`mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX` +trap 'rm -rf $T' 0 +cd $T || exit 3 +mkfifo fifo1 +trapped= +trap trapped=1 QUIT +{ kill -QUIT $$; sleep 1; exit 4; } >fifo1 & +wait $! fifo1 & +wait + +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/bin/sh/tests/errors/assignment-error1.0 b/bin/sh/tests/errors/assignment-error1.0 new file mode 100644 index 0000000..00eaed9 --- /dev/null +++ b/bin/sh/tests/errors/assignment-error1.0 @@ -0,0 +1,30 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null,\ + eval,\ + exec,\ + export -p,\ + readonly -p,\ + set,\ + shift,\ + times,\ + trap,\ + unset foo" + +# If there is no command word, the shell must abort on an assignment error. +${SH} -c "readonly a=0; a=2; exit 0" 2>/dev/null && exit 1 + +# Special built-in utilities must abort on an assignment error. +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "readonly a=0; a=2 ${cmd}; exit 0" 2>/dev/null && exit 1 +done + +# Other utilities must not abort; we currently still execute them. +${SH} -c 'readonly a=0; a=1 true; exit $a' 2>/dev/null || exit 1 +${SH} -c 'readonly a=0; a=1 command :; exit $a' 2>/dev/null || exit 1 diff --git a/bin/sh/tests/errors/assignment-error2.0 b/bin/sh/tests/errors/assignment-error2.0 new file mode 100644 index 0000000..ff4e629 --- /dev/null +++ b/bin/sh/tests/errors/assignment-error2.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +set -e +HOME=/ +readonly HOME +cd /sbin +{ HOME=/bin cd; } 2>/dev/null || : +[ "$(pwd)" != /bin ] diff --git a/bin/sh/tests/errors/backquote-error1.0 b/bin/sh/tests/errors/backquote-error1.0 new file mode 100644 index 0000000..43e3303 --- /dev/null +++ b/bin/sh/tests/errors/backquote-error1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +echo 'echo `for` echo ".BAD"CODE.' | ${SH} +m -i 2>&1 | grep -q BADCODE && exit 1 +exit 0 diff --git a/bin/sh/tests/errors/backquote-error2.0 b/bin/sh/tests/errors/backquote-error2.0 new file mode 100644 index 0000000..5b49e2b --- /dev/null +++ b/bin/sh/tests/errors/backquote-error2.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +${SH} -c 'echo `echo .BA"DCODE.` +echo ".BAD"CODE.' 2>&1 | grep -q BADCODE && exit 1 +echo '`"`' | ${SH} -n 2>/dev/null && exit 1 +echo '`'"'"'`' | ${SH} -n 2>/dev/null && exit 1 +exit 0 diff --git a/bin/sh/tests/errors/bad-binary1.126 b/bin/sh/tests/errors/bad-binary1.126 new file mode 100644 index 0000000..d92e9de --- /dev/null +++ b/bin/sh/tests/errors/bad-binary1.126 @@ -0,0 +1,12 @@ +# $FreeBSD$ +# Checking for binary "scripts" without magic number is permitted but not +# required by POSIX. However, it is preferable to getting errors like +# Syntax error: word unexpected (expecting ")") +# from trying to execute ELF binaries for the wrong architecture. + +T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit +trap 'rm -rf "${T}"' 0 +printf '\0echo bad\n' >"$T/testshellproc" +chmod 755 "$T/testshellproc" +PATH=$T:$PATH +testshellproc 2>/dev/null diff --git a/bin/sh/tests/errors/bad-keyword1.0 b/bin/sh/tests/errors/bad-keyword1.0 new file mode 100644 index 0000000..ac01536 --- /dev/null +++ b/bin/sh/tests/errors/bad-keyword1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +echo ':; fi' | ${SH} -n 2>/dev/null && exit 1 +exit 0 diff --git a/bin/sh/tests/errors/bad-parm-exp1.0 b/bin/sh/tests/errors/bad-parm-exp1.0 new file mode 100644 index 0000000..6e94994 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +false && { + ${} + ${foo/} + ${foo@bar} +} +: diff --git a/bin/sh/tests/errors/bad-parm-exp2.2 b/bin/sh/tests/errors/bad-parm-exp2.2 new file mode 100644 index 0000000..7e13d2b --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp2.2 @@ -0,0 +1,2 @@ +# $FreeBSD$ +${} diff --git a/bin/sh/tests/errors/bad-parm-exp2.2.stderr b/bin/sh/tests/errors/bad-parm-exp2.2.stderr new file mode 100644 index 0000000..d027a5a --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp2.2.stderr @@ -0,0 +1 @@ +./errors/bad-parm-exp2.2: ${}: Bad substitution diff --git a/bin/sh/tests/errors/bad-parm-exp3.2 b/bin/sh/tests/errors/bad-parm-exp3.2 new file mode 100644 index 0000000..a5ecba5 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp3.2 @@ -0,0 +1,2 @@ +# $FreeBSD$ +${foo/} diff --git a/bin/sh/tests/errors/bad-parm-exp3.2.stderr b/bin/sh/tests/errors/bad-parm-exp3.2.stderr new file mode 100644 index 0000000..ef40251 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp3.2.stderr @@ -0,0 +1 @@ +./errors/bad-parm-exp3.2: ${foo/}: Bad substitution diff --git a/bin/sh/tests/errors/bad-parm-exp4.2 b/bin/sh/tests/errors/bad-parm-exp4.2 new file mode 100644 index 0000000..9eec8d0 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp4.2 @@ -0,0 +1,2 @@ +# $FreeBSD$ +${foo:@abc} diff --git a/bin/sh/tests/errors/bad-parm-exp4.2.stderr b/bin/sh/tests/errors/bad-parm-exp4.2.stderr new file mode 100644 index 0000000..89bd80f --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp4.2.stderr @@ -0,0 +1 @@ +./errors/bad-parm-exp4.2: ${foo:@...}: Bad substitution diff --git a/bin/sh/tests/errors/bad-parm-exp5.2 b/bin/sh/tests/errors/bad-parm-exp5.2 new file mode 100644 index 0000000..459281f --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp5.2 @@ -0,0 +1,2 @@ +# $FreeBSD$ +${/} diff --git a/bin/sh/tests/errors/bad-parm-exp5.2.stderr b/bin/sh/tests/errors/bad-parm-exp5.2.stderr new file mode 100644 index 0000000..89b1997 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp5.2.stderr @@ -0,0 +1 @@ +./errors/bad-parm-exp5.2: ${/}: Bad substitution diff --git a/bin/sh/tests/errors/bad-parm-exp6.2 b/bin/sh/tests/errors/bad-parm-exp6.2 new file mode 100644 index 0000000..ba51442 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp6.2 @@ -0,0 +1,2 @@ +# $FreeBSD$ +${#foo^} diff --git a/bin/sh/tests/errors/bad-parm-exp6.2.stderr b/bin/sh/tests/errors/bad-parm-exp6.2.stderr new file mode 100644 index 0000000..dbf14b5 --- /dev/null +++ b/bin/sh/tests/errors/bad-parm-exp6.2.stderr @@ -0,0 +1 @@ +./errors/bad-parm-exp6.2: ${foo...}: Bad substitution diff --git a/bin/sh/tests/errors/option-error.0 b/bin/sh/tests/errors/option-error.0 new file mode 100644 index 0000000..b4b44c4 --- /dev/null +++ b/bin/sh/tests/errors/option-error.0 @@ -0,0 +1,46 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break abc,\ + continue abc,\ + ., + exit abc, + export -x, + readonly -x, + return abc, + set -z, + shift abc, + trap -y, + unset -y" + +UTILS="alias -y,\ + cat -z,\ + cd abc def,\ + command break abc,\ + expr 1 +,\ + fc -z,\ + getopts,\ + hash -z,\ + jobs -z,\ + printf,\ + pwd abc,\ + read,\ + test abc =,\ + ulimit -z,\ + umask -z,\ + unalias -z,\ + wait abc" + +# Special built-in utilities must abort on an option or operand error. +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "${cmd}; exit 0" 2>/dev/null && exit 1 +done + +# Other utilities must not abort. +set -- ${UTILS} +for cmd in "$@" +do + ${SH} -c "${cmd}; exit 0" 2>/dev/null || exit 1 +done diff --git a/bin/sh/tests/errors/redirection-error.0 b/bin/sh/tests/errors/redirection-error.0 new file mode 100644 index 0000000..cb8c0b1 --- /dev/null +++ b/bin/sh/tests/errors/redirection-error.0 @@ -0,0 +1,53 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null, + eval, + exec, + export -p, + readonly -p, + set, + shift, + times, + trap, + unset foo" + +UTILS="alias,\ + bg,\ + bind,\ + cd,\ + command echo,\ + echo,\ + false,\ + fc -l,\ + fg,\ + getopts a -a,\ + hash,\ + jobs,\ + printf a,\ + pwd,\ + read var < /dev/null,\ + test,\ + true,\ + type ls,\ + ulimit,\ + umask,\ + unalias -a,\ + wait" + +# Special built-in utilities must abort on a redirection error. +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "${cmd} > /; exit 0" 2>/dev/null && exit 1 +done + +# Other utilities must not abort. +set -- ${UTILS} +for cmd in "$@" +do + ${SH} -c "${cmd} > /; exit 0" 2>/dev/null || exit 1 +done diff --git a/bin/sh/tests/errors/redirection-error2.2 b/bin/sh/tests/errors/redirection-error2.2 new file mode 100644 index 0000000..32bccd8 --- /dev/null +++ b/bin/sh/tests/errors/redirection-error2.2 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +# sh should fail gracefully on this bad redirect +${SH} -c 'echo 1 >&$a' 2>/dev/null diff --git a/bin/sh/tests/errors/redirection-error3.0 b/bin/sh/tests/errors/redirection-error3.0 new file mode 100644 index 0000000..8a07d03 --- /dev/null +++ b/bin/sh/tests/errors/redirection-error3.0 @@ -0,0 +1,54 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null,\ + eval,\ + exec,\ + export -p,\ + readonly -p,\ + set,\ + shift,\ + times,\ + trap,\ + unset foo" + +UTILS="alias,\ + bg,\ + bind,\ + cd,\ + command echo,\ + echo,\ + false,\ + fc -l,\ + fg,\ + getopts a -a,\ + hash,\ + jobs,\ + printf a,\ + pwd,\ + read var < /dev/null,\ + test,\ + true,\ + type ls,\ + ulimit,\ + umask,\ + unalias -a,\ + wait" + +# When used with 'command', neither special built-in utilities nor other +# utilities must abort on a redirection error. + +set -- ${SPECIAL} +for cmd in "$@" +do + ${SH} -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1 +done + +set -- ${UTILS} +for cmd in "$@" +do + ${SH} -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1 +done diff --git a/bin/sh/tests/errors/redirection-error4.0 b/bin/sh/tests/errors/redirection-error4.0 new file mode 100644 index 0000000..2060974 --- /dev/null +++ b/bin/sh/tests/errors/redirection-error4.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +# A redirection error should not abort the shell if there is no command word. +exec 2>/dev/null +/dev/null +( echo bad ) /dev/null +{ echo bad; } &1 >&2 2>&3 + ulimit -n 9 + exec 9<. +) && [ -n "$dummy" ] diff --git a/bin/sh/tests/errors/write-error1.0 b/bin/sh/tests/errors/write-error1.0 new file mode 100644 index 0000000..fcb52e7 --- /dev/null +++ b/bin/sh/tests/errors/write-error1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! echo >&- 2>/dev/null diff --git a/bin/sh/tests/execution/Makefile b/bin/sh/tests/execution/Makefile new file mode 100644 index 0000000..302d0d8 --- /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/bin/sh/tests/execution/bg1.0 b/bin/sh/tests/execution/bg1.0 new file mode 100644 index 0000000..edb92ae --- /dev/null +++ b/bin/sh/tests/execution/bg1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +: `false` & diff --git a/bin/sh/tests/execution/bg10.0 b/bin/sh/tests/execution/bg10.0 new file mode 100644 index 0000000..44a25dc --- /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 0000000..64fde3e --- /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/bin/sh/tests/execution/fork1.0 b/bin/sh/tests/execution/fork1.0 new file mode 100644 index 0000000..2eeac79 --- /dev/null +++ b/bin/sh/tests/execution/fork1.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +shname=${SH%% *} +shname=${shname##*/} + +result=$(${SH} -c 'ps -p $$ -o comm=') +test "$result" = "ps" || exit 1 + +result=$(${SH} -c 'ps -p $$ -o comm=; :') +test "$result" = "$shname" || exit 1 diff --git a/bin/sh/tests/execution/fork2.0 b/bin/sh/tests/execution/fork2.0 new file mode 100644 index 0000000..62a2537 --- /dev/null +++ b/bin/sh/tests/execution/fork2.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +result=$(${SH} -c '(/bin/sleep 1)& sleep 0.1; ps -p $! -o comm=; kill $!') +test "$result" = sleep || exit 1 + +result=$(${SH} -c '{ trap "echo trapped" EXIT; (/usr/bin/true); } & wait') +test "$result" = trapped || exit 1 + +exit 0 diff --git a/bin/sh/tests/execution/fork3.0 b/bin/sh/tests/execution/fork3.0 new file mode 100644 index 0000000..3cb678c --- /dev/null +++ b/bin/sh/tests/execution/fork3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +result=$(${SH} -c 'f() { ps -p $$ -o comm=; }; f') +test "$result" = "ps" diff --git a/bin/sh/tests/execution/func1.0 b/bin/sh/tests/execution/func1.0 new file mode 100644 index 0000000..29fcc07 --- /dev/null +++ b/bin/sh/tests/execution/func1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +MALLOC_OPTIONS=J ${SH} -c 'g() { g() { :; }; :; }; g' && +MALLOC_OPTIONS=J ${SH} -c 'g() { unset -f g; :; }; g' diff --git a/bin/sh/tests/execution/func2.0 b/bin/sh/tests/execution/func2.0 new file mode 100644 index 0000000..9830b5e --- /dev/null +++ b/bin/sh/tests/execution/func2.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ +# The empty pairs of braces here are to test that this does not cause a crash. + +f() { } +f +hash -v f >/dev/null +f() { { }; } +f +hash -v f >/dev/null +f() { { } } +f +hash -v f >/dev/null diff --git a/bin/sh/tests/execution/func3.0 b/bin/sh/tests/execution/func3.0 new file mode 100644 index 0000000..e0ed581 --- /dev/null +++ b/bin/sh/tests/execution/func3.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +# This may fail when parsing or when defining the function, or the definition +# may silently do nothing. In no event may the function be executed. + +${SH} -c 'unset() { echo overriding function executed, bad; }; v=1; unset v; exit "${v-0}"' 2>/dev/null +: diff --git a/bin/sh/tests/execution/hash1.0 b/bin/sh/tests/execution/hash1.0 new file mode 100644 index 0000000..a645c2a --- /dev/null +++ b/bin/sh/tests/execution/hash1.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit +trap 'rm -rf "${T}"' 0 +PATH=$T:$PATH +ls -ld . >/dev/null +cat <"$T/ls" +: +EOF +chmod 755 "$T/ls" +PATH=$PATH +ls -ld . diff --git a/bin/sh/tests/execution/int-cmd1.0 b/bin/sh/tests/execution/int-cmd1.0 new file mode 100644 index 0000000..a1f097b --- /dev/null +++ b/bin/sh/tests/execution/int-cmd1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! echo echo bad | $SH -ic 'fi' 2>/dev/null diff --git a/bin/sh/tests/execution/killed1.0 b/bin/sh/tests/execution/killed1.0 new file mode 100644 index 0000000..41d3e05 --- /dev/null +++ b/bin/sh/tests/execution/killed1.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ +# Sometimes the "Killed" message is not flushed soon enough and it +# is redirected along with the output of a builtin. +# Do not change the semicolon to a newline as it would hide the bug. + +exec 3>&1 +exec >/dev/null 2>&1 +${SH} -c 'kill -9 $$'; : >&3 2>&3 diff --git a/bin/sh/tests/execution/killed2.0 b/bin/sh/tests/execution/killed2.0 new file mode 100644 index 0000000..7ff3fe2 --- /dev/null +++ b/bin/sh/tests/execution/killed2.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ +# Most shells print a message when a foreground job is killed by a signal. +# POSIX allows this, provided the message is sent to stderr, not stdout. +# Some trickery is needed to capture the message as redirecting stderr of +# the command itself does not affect it. The colon command ensures that +# the subshell forks for ${SH}. + +exec 3>&1 +r=`(${SH} -c 'kill $$'; :) 2>&1 >&3` +[ -n "$r" ] diff --git a/bin/sh/tests/execution/not1.0 b/bin/sh/tests/execution/not1.0 new file mode 100644 index 0000000..12c6265 --- /dev/null +++ b/bin/sh/tests/execution/not1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +f() { ! return $1; } +f 0 && ! f 1 diff --git a/bin/sh/tests/execution/not2.0 b/bin/sh/tests/execution/not2.0 new file mode 100644 index 0000000..1b128d0 --- /dev/null +++ b/bin/sh/tests/execution/not2.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +while :; do + ! break + exit 3 +done diff --git a/bin/sh/tests/execution/path1.0 b/bin/sh/tests/execution/path1.0 new file mode 100644 index 0000000..50829d6 --- /dev/null +++ b/bin/sh/tests/execution/path1.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ +# Some builtins should not be overridable via PATH. + +set -e +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf ${T}' 0 +echo '#!/bin/sh +echo bad' >"$T/cd" +chmod 755 "$T/cd" +cd /bin +oPATH=$PATH +PATH=$T:$PATH:%builtin +cd / +PATH=$oPATH +[ "$(pwd)" = / ] diff --git a/bin/sh/tests/execution/redir1.0 b/bin/sh/tests/execution/redir1.0 new file mode 100644 index 0000000..dd0011f --- /dev/null +++ b/bin/sh/tests/execution/redir1.0 @@ -0,0 +1,27 @@ +# $FreeBSD$ +trap ': $((brokenpipe+=1))' PIPE + +P=${TMPDIR:-/tmp} +cd $P +T=$(mktemp -d sh-test.XXXXXX) +cd $T + +brokenpipe=0 +mkfifo fifo1 fifo2 +read dummy >fifo2 fifo2 +} 3fifo1 +if [ $brokenpipe -ne 0 ]; then + rc=3 +fi +wait +echo dummy >&4 2>/dev/null +if [ $brokenpipe -eq 1 ]; then + : ${rc:=0} +fi + +rm fifo1 fifo2 +rmdir ${P}/${T} +exit ${rc:-3} diff --git a/bin/sh/tests/execution/redir2.0 b/bin/sh/tests/execution/redir2.0 new file mode 100644 index 0000000..1588105 --- /dev/null +++ b/bin/sh/tests/execution/redir2.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ +trap ': $((brokenpipe+=1))' PIPE + +P=${TMPDIR:-/tmp} +cd $P +T=$(mktemp -d sh-test.XXXXXX) +cd $T + +brokenpipe=0 +mkfifo fifo1 fifo2 +{ + { + exec ${SH} -c 'exec fifo2 +exec 3>fifo1 +echo dummy >&4 2>/dev/null +if [ $brokenpipe -eq 1 ]; then + : ${rc:=0} +fi +echo dummy >&3 +wait + +rm fifo1 fifo2 +rmdir ${P}/${T} +exit ${rc:-3} diff --git a/bin/sh/tests/execution/redir3.0 b/bin/sh/tests/execution/redir3.0 new file mode 100644 index 0000000..d68e450 --- /dev/null +++ b/bin/sh/tests/execution/redir3.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +3>&- 3>&- diff --git a/bin/sh/tests/execution/redir4.0 b/bin/sh/tests/execution/redir4.0 new file mode 100644 index 0000000..57054c1 --- /dev/null +++ b/bin/sh/tests/execution/redir4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +{ echo bad 0>&3; } 2>/dev/null 3>/dev/null 3>&- +exit 0 diff --git a/bin/sh/tests/execution/redir5.0 b/bin/sh/tests/execution/redir5.0 new file mode 100644 index 0000000..707ca68 --- /dev/null +++ b/bin/sh/tests/execution/redir5.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +{ (echo bad) >/dev/null; } &2 + failures=$((failures + 1)) + fi +} + +check $LINENO "$(trap "echo bye" EXIT; : >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; { :; } >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; (:) >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; (: >/dev/null))" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; : >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; { :; } >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; (:) >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; (: >/dev/null)')" bye + +exit $((failures > 0)) diff --git a/bin/sh/tests/execution/redir7.0 b/bin/sh/tests/execution/redir7.0 new file mode 100644 index 0000000..2487bcf --- /dev/null +++ b/bin/sh/tests/execution/redir7.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ "$2" != "$3" ]; then + echo "Failure at $1" >&2 + failures=$((failures + 1)) + fi +} + +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; f >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; { f; } >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; (f) >/dev/null)" bye +check $LINENO "$(trap "echo bye" EXIT; f() { :; }; (f >/dev/null))" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; f >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; { f; } >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; (f) >/dev/null')" bye +check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; (f >/dev/null)')" bye + +exit $((failures > 0)) diff --git a/bin/sh/tests/execution/set-n1.0 b/bin/sh/tests/execution/set-n1.0 new file mode 100644 index 0000000..14c9b93 --- /dev/null +++ b/bin/sh/tests/execution/set-n1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +v=$( ($SH -n <<'EOF' +for +EOF +) 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/execution/set-n2.0 b/bin/sh/tests/execution/set-n2.0 new file mode 100644 index 0000000..c7f3162 --- /dev/null +++ b/bin/sh/tests/execution/set-n2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +$SH -n <<'EOF' +echo bad +EOF diff --git a/bin/sh/tests/execution/set-n3.0 b/bin/sh/tests/execution/set-n3.0 new file mode 100644 index 0000000..24a9159 --- /dev/null +++ b/bin/sh/tests/execution/set-n3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +v=$( ($SH -nc 'for') 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/execution/set-n4.0 b/bin/sh/tests/execution/set-n4.0 new file mode 100644 index 0000000..3698508 --- /dev/null +++ b/bin/sh/tests/execution/set-n4.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +$SH -nc 'echo bad' diff --git a/bin/sh/tests/execution/set-x1.0 b/bin/sh/tests/execution/set-x1.0 new file mode 100644 index 0000000..7fe1dbf --- /dev/null +++ b/bin/sh/tests/execution/set-x1.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +key='must_contain_this' +{ r=`set -x; { : "$key"; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/execution/set-x2.0 b/bin/sh/tests/execution/set-x2.0 new file mode 100644 index 0000000..56d54e3 --- /dev/null +++ b/bin/sh/tests/execution/set-x2.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +key='must contain this' +PS4="$key+ " +{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/execution/set-x3.0 b/bin/sh/tests/execution/set-x3.0 new file mode 100644 index 0000000..1ca57ac --- /dev/null +++ b/bin/sh/tests/execution/set-x3.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +key='must contain this' +PS4='$key+ ' +{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/execution/shellproc1.0 b/bin/sh/tests/execution/shellproc1.0 new file mode 100644 index 0000000..1326bc2 --- /dev/null +++ b/bin/sh/tests/execution/shellproc1.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit +trap 'rm -rf "${T}"' 0 +cat <"$T/testshellproc" +printf 'this ' +echo is a test +EOF +chmod 755 "$T/testshellproc" +PATH=$T:$PATH +[ "`testshellproc`" = "this is a test" ] diff --git a/bin/sh/tests/execution/subshell1.0 b/bin/sh/tests/execution/subshell1.0 new file mode 100644 index 0000000..347806e --- /dev/null +++ b/bin/sh/tests/execution/subshell1.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +(eval "cd / +v=$(printf %0100000d 1) +echo \${#v}") +echo end diff --git a/bin/sh/tests/execution/subshell1.0.stdout b/bin/sh/tests/execution/subshell1.0.stdout new file mode 100644 index 0000000..8c71af3 --- /dev/null +++ b/bin/sh/tests/execution/subshell1.0.stdout @@ -0,0 +1,2 @@ +100000 +end diff --git a/bin/sh/tests/execution/subshell2.0 b/bin/sh/tests/execution/subshell2.0 new file mode 100644 index 0000000..3216449 --- /dev/null +++ b/bin/sh/tests/execution/subshell2.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +f() { + x=2 +} +( + x=1 + f + [ "$x" = 2 ] +) diff --git a/bin/sh/tests/execution/subshell3.0 b/bin/sh/tests/execution/subshell3.0 new file mode 100644 index 0000000..9a87acb --- /dev/null +++ b/bin/sh/tests/execution/subshell3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +(false; exit) && exit 3 +exit 0 diff --git a/bin/sh/tests/execution/subshell4.0 b/bin/sh/tests/execution/subshell4.0 new file mode 100644 index 0000000..b39edb1 --- /dev/null +++ b/bin/sh/tests/execution/subshell4.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +(eval "set v=1"; false) && echo bad; : diff --git a/bin/sh/tests/execution/unknown1.0 b/bin/sh/tests/execution/unknown1.0 new file mode 100644 index 0000000..45f541e --- /dev/null +++ b/bin/sh/tests/execution/unknown1.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ + +nosuchtool 2>/dev/null +[ $? -ne 127 ] && exit 1 +/var/empty/nosuchtool 2>/dev/null +[ $? -ne 127 ] && exit 1 +(nosuchtool) 2>/dev/null +[ $? -ne 127 ] && exit 1 +(/var/empty/nosuchtool) 2>/dev/null +[ $? -ne 127 ] && exit 1 +/ 2>/dev/null +[ $? -ne 126 ] && exit 1 +PATH=/usr bin 2>/dev/null +[ $? -ne 126 ] && exit 1 + +dummy=$(nosuchtool 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$(/var/empty/nosuchtool 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$( (nosuchtool) 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$( (/var/empty/nosuchtool) 2>/dev/null) +[ $? -ne 127 ] && exit 1 +dummy=$(/ 2>/dev/null) +[ $? -ne 126 ] && exit 1 +dummy=$(PATH=/usr bin 2>/dev/null) +[ $? -ne 126 ] && exit 1 + +exit 0 diff --git a/bin/sh/tests/execution/var-assign1.0 b/bin/sh/tests/execution/var-assign1.0 new file mode 100644 index 0000000..26e5424 --- /dev/null +++ b/bin/sh/tests/execution/var-assign1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +[ "$(HOME=/etc HOME=/ cd && pwd)" = / ] diff --git a/bin/sh/tests/expansion/Makefile b/bin/sh/tests/expansion/Makefile new file mode 100644 index 0000000..bd24319 --- /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/bin/sh/tests/expansion/arith1.0 b/bin/sh/tests/expansion/arith1.0 new file mode 100644 index 0000000..118ba22 --- /dev/null +++ b/bin/sh/tests/expansion/arith1.0 @@ -0,0 +1,30 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +check "0&&0" 0 +check "1&&0" 0 +check "0&&1" 0 +check "1&&1" 1 +check "2&&2" 1 +check "1&&2" 1 +check "1<<40&&1<<40" 1 +check "1<<40&&4" 1 + +check "0||0" 0 +check "1||0" 1 +check "0||1" 1 +check "1||1" 1 +check "2||2" 1 +check "1||2" 1 +check "1<<40||1<<40" 1 +check "1<<40||4" 1 + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/arith10.0 b/bin/sh/tests/expansion/arith10.0 new file mode 100644 index 0000000..1aaf619 --- /dev/null +++ b/bin/sh/tests/expansion/arith10.0 @@ -0,0 +1,35 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +readonly ro=4 +rw=1 +check "0 && 0 / 0" 0 +check "1 || 0 / 0" 1 +check "0 && (ro = 2)" 0 +check "ro" 4 +check "1 || (ro = -1)" 1 +check "ro" 4 +check "0 && (rw += 1)" 0 +check "rw" 1 +check "1 || (rw += 1)" 1 +check "rw" 1 +check "0 ? 44 / 0 : 51" 51 +check "0 ? ro = 3 : 52" 52 +check "ro" 4 +check "0 ? rw += 1 : 52" 52 +check "rw" 1 +check "1 ? 68 : 30 / 0" 68 +check "2 ? 1 : (ro += 2)" 1 +check "ro" 4 +check "4 ? 1 : (rw += 1)" 1 +check "rw" 1 + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/arith11.0 b/bin/sh/tests/expansion/arith11.0 new file mode 100644 index 0000000..6bc7369 --- /dev/null +++ b/bin/sh/tests/expansion/arith11.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ +# Try to divide the smallest integer by -1. +# On amd64 this causes SIGFPE, so make sure the shell checks. + +# Calculate the minimum possible value, assuming two's complement and +# a certain interpretation of overflow when shifting left. +minint=1 +while [ $((minint <<= 1)) -gt 0 ]; do + : +done +v=$( eval ': $((minint / -1))' 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/expansion/arith12.0 b/bin/sh/tests/expansion/arith12.0 new file mode 100644 index 0000000..cb7da3b --- /dev/null +++ b/bin/sh/tests/expansion/arith12.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +_x=4 y_=5 z_z=6 +[ "$((_x*100+y_*10+z_z))" = 456 ] diff --git a/bin/sh/tests/expansion/arith13.0 b/bin/sh/tests/expansion/arith13.0 new file mode 100644 index 0000000..207e488 --- /dev/null +++ b/bin/sh/tests/expansion/arith13.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ +# Pre-increment and pre-decrement in arithmetic expansion are not in POSIX. +# Require either an error or a correct implementation. + +! (eval 'x=4; [ $((++x)) != 5 ] || [ $x != 5 ]') 2>/dev/null && +! (eval 'x=2; [ $((--x)) != 1 ] || [ $x != 1 ]') 2>/dev/null diff --git a/bin/sh/tests/expansion/arith2.0 b/bin/sh/tests/expansion/arith2.0 new file mode 100644 index 0000000..95b48a0 --- /dev/null +++ b/bin/sh/tests/expansion/arith2.0 @@ -0,0 +1,77 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +# variables +unset v +check "v=2" 2 +check "v" 2 +check "$(($v))" 2 +check "v+=1" 3 +check "v" 3 + +# constants +check "4611686018427387904" 4611686018427387904 +check "0x4000000000000000" 4611686018427387904 +check "0400000000000000000000" 4611686018427387904 +check "0x4Ab0000000000000" 5381801554707742720 +check "010" 8 + +# try out all operators +v=42 +check "!v" 0 +check "!!v" 1 +check "!0" 1 +check "~0" -1 +check "~(-1)" 0 +check "-0" 0 +check "-v" -42 +check "v*v" 1764 +check "v/2" 21 +check "v%10" 2 +check "v+v" 84 +check "v-4" 38 +check "v<<1" 84 +check "v>>1" 21 +check "v<43" 1 +check "v>42" 0 +check "v<=43" 1 +check "v>=43" 0 +check "v==41" 0 +check "v!=42" 0 +check "v&3" 2 +check "v^3" 41 +check "v|3" 43 +check "v>=40&&v<=44" 1 +check "v<40||v>44" 0 +check "(v=42)&&(v+=1)==43" 1 +check "v" 43 +check "(v=42)&&(v-=1)==41" 1 +check "v" 41 +check "(v=42)&&(v*=2)==84" 1 +check "v" 84 +check "(v=42)&&(v/=10)==4" 1 +check "v" 4 +check "(v=42)&&(v%=10)==2" 1 +check "v" 2 +check "(v=42)&&(v<<=1)==84" 1 +check "v" 84 +check "(v=42)&&(v>>=2)==10" 1 +check "v" 10 +check "(v=42)&&(v&=32)==32" 1 +check "v" 32 +check "(v=42)&&(v^=32)==10" 1 +check "v" 10 +check "(v=42)&&(v|=32)==42" 1 +check "v" 42 + +# missing: ternary + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/arith3.0 b/bin/sh/tests/expansion/arith3.0 new file mode 100644 index 0000000..b69159d --- /dev/null +++ b/bin/sh/tests/expansion/arith3.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +check "1 << 1 + 1 | 1" 5 + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/arith4.0 b/bin/sh/tests/expansion/arith4.0 new file mode 100644 index 0000000..610dad8 --- /dev/null +++ b/bin/sh/tests/expansion/arith4.0 @@ -0,0 +1,20 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +check '20 / 2 / 2' 5 +check '20 - 2 - 2' 16 +unset a b c d +check "a = b = c = d = 1" 1 +check "a == 1 && b == 1 && c == 1 && d == 1" 1 +check "a += b += c += d" 4 +check "a == 4 && b == 3 && c == 2 && d == 1" 1 + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/arith5.0 b/bin/sh/tests/expansion/arith5.0 new file mode 100644 index 0000000..d0f2331 --- /dev/null +++ b/bin/sh/tests/expansion/arith5.0 @@ -0,0 +1,17 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ "$2" != "$3" ]; then + failures=$((failures+1)) + echo "For $1, expected $3 actual $2" + fi +} + +unset a +check '$((1+${a:-$((7+2))}))' "$((1+${a:-$((7+2))}))" 10 +check '$((1+${a:=$((2+2))}))' "$((1+${a:=$((2+2))}))" 5 +check '$a' "$a" 4 + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/arith6.0 b/bin/sh/tests/expansion/arith6.0 new file mode 100644 index 0000000..fc4589c --- /dev/null +++ b/bin/sh/tests/expansion/arith6.0 @@ -0,0 +1,16 @@ +# $FreeBSD$ + +v1=1\ +\ 1 +v2=D +v3=C123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 +f() { v4="$*"; } + +while [ ${#v2} -lt 1250 ]; do + eval $v2=$((3+${#v2})) $v3=$((4-${#v2})) + eval f $(($v2+ $v1 +$v3)) + if [ $v4 -ne 9 ]; then + echo bad: $v4 -ne 9 at ${#v2} + fi + v2=x$v2 + v3=y$v3 +done diff --git a/bin/sh/tests/expansion/arith7.0 b/bin/sh/tests/expansion/arith7.0 new file mode 100644 index 0000000..5aada2b --- /dev/null +++ b/bin/sh/tests/expansion/arith7.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +v=1+ +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +[ "$(cat <&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/expansion/arith9.0 b/bin/sh/tests/expansion/arith9.0 new file mode 100644 index 0000000..cc8b597 --- /dev/null +++ b/bin/sh/tests/expansion/arith9.0 @@ -0,0 +1,20 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +check "0 ? 44 : 51" 51 +check "1 ? 68 : 30" 68 +check "2 ? 1 : -5" 1 +check "0 ? 4 : 0 ? 5 : 6" 6 +check "0 ? 4 : 1 ? 5 : 6" 5 +check "1 ? 4 : 0 ? 5 : 6" 4 +check "1 ? 4 : 1 ? 5 : 6" 4 + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/assign1.0 b/bin/sh/tests/expansion/assign1.0 new file mode 100644 index 0000000..d4fa772 --- /dev/null +++ b/bin/sh/tests/expansion/assign1.0 @@ -0,0 +1,37 @@ +# $FreeBSD$ + +e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' +h='##' +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'v=; set -- ${v=a b} $v' '0|' +testcase 'unset v; set -- ${v=a b} $v' '4|a|b|a|b' +testcase 'v=; set -- ${v:=a b} $v' '4|a|b|a|b' +testcase 'v=; set -- "${v:=a b}" "$v"' '2|a b|a b' +# expect sensible behaviour, although it disagrees with POSIX +testcase 'v=; set -- ${v:=a\ b} $v' '4|a|b|a|b' +testcase 'v=; set -- ${v:=$p} $v' '2|/etc/|/etc/' +testcase 'v=; set -- "${v:=$p}" "$v"' '2|/et[c]/|/et[c]/' +testcase 'v=; set -- "${v:=a\ b}" "$v"' '2|a\ b|a\ b' +testcase 'v=; set -- ${v:="$p"} $v' '2|/etc/|/etc/' +# whether $p is quoted or not shouldn't really matter +testcase 'v=; set -- "${v:="$p"}" "$v"' '2|/et[c]/|/et[c]/' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/cmdsubst1.0 b/bin/sh/tests/expansion/cmdsubst1.0 new file mode 100644 index 0000000..515c7da --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst1.0 @@ -0,0 +1,48 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '"$(echo abcde)" = "abcde"' +check '"$(echo abcde; :)" = "abcde"' + +check '"$(printf abcde)" = "abcde"' +check '"$(printf abcde; :)" = "abcde"' + +# regular +check '-n "$(umask)"' +check '-n "$(umask; :)"' +check '-n "$(umask 2>&1)"' +check '-n "$(umask 2>&1; :)"' + +# special +check '-n "$(times)"' +check '-n "$(times; :)"' +check '-n "$(times 2>&1)"' +check '-n "$(times 2>&1; :)"' + +# regular +check '".$(umask -@ 2>&1)." = ".umask: Illegal option -@."' +check '".$(umask -@ 2>&1; :)." = ".umask: Illegal option -@."' +check '".$({ umask -@; } 2>&1)." = ".umask: Illegal option -@."' + +# special +check '".$(shift xyz 2>&1)." = ".shift: Illegal number: xyz."' +check '".$(shift xyz 2>&1; :)." = ".shift: Illegal number: xyz."' +check '".$({ shift xyz; } 2>&1)." = ".shift: Illegal number: xyz."' + +v=1 +check '-z "$(v=2 :)"' +check '"$v" = 1' +check '-z "$(v=3)"' +check '"$v" = 1' +check '"$(v=4 eval echo \$v)" = 4' +check '"$v" = 1' + +exit $((failures > 0)) diff --git a/bin/sh/tests/expansion/cmdsubst10.0 b/bin/sh/tests/expansion/cmdsubst10.0 new file mode 100644 index 0000000..7cf17a3 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst10.0 @@ -0,0 +1,51 @@ +# $FreeBSD$ + +a1=$(alias) +: $(alias testalias=abcd) +a2=$(alias) +[ "$a1" = "$a2" ] || echo Error at line $LINENO + +alias testalias2=abcd +a1=$(alias) +: $(unalias testalias2) +a2=$(alias) +[ "$a1" = "$a2" ] || echo Error at line $LINENO + +[ "$(command -V pwd)" = "$(command -V pwd; exit $?)" ] || echo Error at line $LINENO + +v=1 +: $(export v=2) +[ "$v" = 1 ] || echo Error at line $LINENO + +rotest=1 +: $(readonly rotest=2) +[ "$rotest" = 1 ] || echo Error at line $LINENO + +set +u +: $(set -u) +case $- in +*u*) echo Error at line $LINENO ;; +esac +set +u + +set +u +: $(set -o nounset) +case $- in +*u*) echo Error at line $LINENO ;; +esac +set +u + +set +u +: $(command set -u) +case $- in +*u*) echo Error at line $LINENO ;; +esac +set +u + +umask 77 +u1=$(umask) +: $(umask 022) +u2=$(umask) +[ "$u1" = "$u2" ] || echo Error at line $LINENO + +dummy=$(exit 3); [ $? -eq 3 ] || echo Error at line $LINENO diff --git a/bin/sh/tests/expansion/cmdsubst11.0 b/bin/sh/tests/expansion/cmdsubst11.0 new file mode 100644 index 0000000..f1af547 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst11.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# Not required by POSIX but useful for efficiency. + +[ $$ = $(eval '${SH} -c echo\ \$PPID') ] diff --git a/bin/sh/tests/expansion/cmdsubst12.0 b/bin/sh/tests/expansion/cmdsubst12.0 new file mode 100644 index 0000000..50394db --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst12.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +f() { + echo x$(printf foo >&2)y +} +[ "$(f 2>&1)" = "fooxy" ] diff --git a/bin/sh/tests/expansion/cmdsubst13.0 b/bin/sh/tests/expansion/cmdsubst13.0 new file mode 100644 index 0000000..7fdc5b2 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst13.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +x=1 y=2 +[ "$( + case $((x+=1)) in + ($((y+=1))) echo bad1 ;; + ($((y-1))) echo $x.$y ;; + ($((y=2))) echo bad2 ;; + (*) echo bad3 ;; + esac +)" = "2.3" ] || echo "Error at $LINENO" +[ "$x.$y" = "1.2" ] || echo "Error at $LINENO" diff --git a/bin/sh/tests/expansion/cmdsubst14.0 b/bin/sh/tests/expansion/cmdsubst14.0 new file mode 100644 index 0000000..bdbbb82 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst14.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +! v=`false + +` diff --git a/bin/sh/tests/expansion/cmdsubst15.0 b/bin/sh/tests/expansion/cmdsubst15.0 new file mode 100644 index 0000000..31d85d4 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst15.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +! v=`false; + +` diff --git a/bin/sh/tests/expansion/cmdsubst16.0 b/bin/sh/tests/expansion/cmdsubst16.0 new file mode 100644 index 0000000..71df562 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst16.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +f() { return 3; } +f +[ `echo $?` = 3 ] diff --git a/bin/sh/tests/expansion/cmdsubst17.0 b/bin/sh/tests/expansion/cmdsubst17.0 new file mode 100644 index 0000000..8c29e83 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst17.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +f() { return 3; } +f +[ `echo $?; :` = 3 ] diff --git a/bin/sh/tests/expansion/cmdsubst2.0 b/bin/sh/tests/expansion/cmdsubst2.0 new file mode 100644 index 0000000..b86776e --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst2.0 @@ -0,0 +1,43 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '`echo /et[c]/` = "/etc/"' +check '`printf /var/empty%s /et[c]/` = "/var/empty/etc/"' +check '"`echo /et[c]/`" = "/etc/"' +check '`echo "/et[c]/"` = "/etc/"' +check '`printf /var/empty%s "/et[c]/"` = "/var/empty/et[c]/"' +check '`printf /var/empty/%s \"/et[c]/\"` = "/var/empty/\"/et[c]/\""' +check '"`echo \"/et[c]/\"`" = "/et[c]/"' +check '"`echo "/et[c]/"`" = "/et[c]/"' +check '`echo $$` = $$' +check '"`echo $$`" = $$' +check '`echo \$\$` = $$' +check '"`echo \$\$`" = $$' + +# Command substitutions consisting of a single builtin may be treated +# differently. +check '`:; echo /et[c]/` = "/etc/"' +check '`:; printf /var/empty%s /et[c]/` = "/var/empty/etc/"' +check '"`:; echo /et[c]/`" = "/etc/"' +check '`:; echo "/et[c]/"` = "/etc/"' +check '`:; printf /var/empty%s "/et[c]/"` = "/var/empty/et[c]/"' +check '`:; printf /var/empty/%s \"/et[c]/\"` = "/var/empty/\"/et[c]/\""' +check '"`:; echo \"/et[c]/\"`" = "/et[c]/"' +check '"`:; echo "/et[c]/"`" = "/et[c]/"' +check '`:; echo $$` = $$' +check '"`:; echo $$`" = $$' +check '`:; echo \$\$` = $$' +check '"`:; echo \$\$`" = $$' + +check '`set -f; echo /et[c]/` = "/etc/"' +check '"`set -f; echo /et[c]/`" = "/et[c]/"' + +exit $((failures > 0)) diff --git a/bin/sh/tests/expansion/cmdsubst3.0 b/bin/sh/tests/expansion/cmdsubst3.0 new file mode 100644 index 0000000..abb6b22 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst3.0 @@ -0,0 +1,23 @@ +# $FreeBSD$ + +unset LC_ALL +export LC_CTYPE=en_US.ISO8859-1 + +e= +for i in 0 1 2 3; do + for j in 0 1 2 3 4 5 6 7; do + for k in 0 1 2 3 4 5 6 7; do + case $i$j$k in + 000) continue ;; + esac + e="$e\n\\$i$j$k" + done + done +done +e1=$(printf "$e") +e2="$(printf "$e")" +[ "${#e1}" = 510 ] || echo length bad +[ "$e1" = "$e2" ] || echo e1 != e2 +[ "$e1" = "$(printf "$e")" ] || echo quoted bad +IFS= +[ "$e1" = $(printf "$e") ] || echo unquoted bad diff --git a/bin/sh/tests/expansion/cmdsubst4.0 b/bin/sh/tests/expansion/cmdsubst4.0 new file mode 100644 index 0000000..ee1ce73 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +exec 2>/dev/null +! y=$(: /dev/null +! y=$(: ${v?}) diff --git a/bin/sh/tests/expansion/cmdsubst6.0 b/bin/sh/tests/expansion/cmdsubst6.0 new file mode 100644 index 0000000..6586f33 --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst6.0 @@ -0,0 +1,53 @@ +# $FreeBSD$ +# This tests if the cmdsubst optimization is still used if possible. + +failures='' +ok='' + +testcase() { + code="$1" + + unset v + eval "pid=\$(dummy=$code echo \$(\$SH -c echo\ \\\$PPID))" + + if [ "$pid" = "$$" ]; then + ok=x$ok + else + failures=x$failures + echo "Failure for $code" + fi +} + +unset v +w=1 +testcase '$w' +testcase '1${w+1}' +testcase '1${w-1}' +testcase '1${v+1}' +testcase '1${v-1}' +testcase '1${w:+1}' +testcase '1${w:-1}' +testcase '1${v:+1}' +testcase '1${v:-1}' +testcase '${w?}' +testcase '${w:?}' +testcase '${w#x}' +testcase '${w##x}' +testcase '${w%x}' +testcase '${w%%x}' + +testcase '$((w))' +testcase '$(((w+4)*2/3))' +testcase '$((w==1))' +testcase '$((w>=0 && w<=5 && w!=2))' +testcase '$((${#w}))' +testcase '$((${#IFS}))' +testcase '$((${#w}>=1))' +testcase '$(($$))' +testcase '$(($#))' +testcase '$(($?))' + +testcase '$(: $((w=4)))' +testcase '$(: ${v=2})' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/cmdsubst7.0 b/bin/sh/tests/expansion/cmdsubst7.0 new file mode 100644 index 0000000..dbd1aec --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst7.0 @@ -0,0 +1,31 @@ +# $FreeBSD$ + +failures='' +ok='' + +testcase() { + code="$1" + + unset v + eval ": \$($code)" + + if [ "${v:+bad}" = "" ]; then + ok=x$ok + else + failures=x$failures + echo "Failure for $code" + fi +} + +testcase ': ${v=0}' +testcase ': ${v:=0}' +testcase ': $((v=1))' +testcase ': $((v+=1))' +w='v=1' +testcase ': $(($w))' +testcase ': $((${$+v=1}))' +testcase ': $((v${$+=1}))' +testcase ': $((v $(echo =) 1))' +testcase ': $(($(echo $w)))' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/cmdsubst8.0 b/bin/sh/tests/expansion/cmdsubst8.0 new file mode 100644 index 0000000..52adaea --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst8.0 @@ -0,0 +1,17 @@ +# $FreeBSD$ +# Not required by POSIX (although referenced in a non-normative section), +# but possibly useful. + +: hi there & +p=$! +q=$(jobs -l $p) + +# Change tabs to spaces. +set -f +set -- $q +r="$*" + +case $r in +*" $p "*) ;; +*) echo Pid missing; exit 3 ;; +esac diff --git a/bin/sh/tests/expansion/cmdsubst9.0 b/bin/sh/tests/expansion/cmdsubst9.0 new file mode 100644 index 0000000..0b1f81f --- /dev/null +++ b/bin/sh/tests/expansion/cmdsubst9.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +set -e + +cd / +dummy=$(cd /bin) +[ "$(pwd)" = / ] + +v=1 +dummy=$(eval v=2) +[ "$v" = 1 ] diff --git a/bin/sh/tests/expansion/export1.0 b/bin/sh/tests/expansion/export1.0 new file mode 100644 index 0000000..4ee3ef4 --- /dev/null +++ b/bin/sh/tests/expansion/export1.0 @@ -0,0 +1,13 @@ +# $FreeBSD$ + +w='@ vv=6' + +v=0 vv=0 +export \v=$w +[ "$v" = "@" ] || echo "Expected @ got $v" +[ "$vv" = "6" ] || echo "Expected 6 got $vv" + +HOME=/known/value + +export \v=~ +[ "$v" = \~ ] || echo "Expected ~ got $v" diff --git a/bin/sh/tests/expansion/export2.0 b/bin/sh/tests/expansion/export2.0 new file mode 100644 index 0000000..57f64e7 --- /dev/null +++ b/bin/sh/tests/expansion/export2.0 @@ -0,0 +1,24 @@ +# $FreeBSD$ + +w='@ @' +check() { + [ "$v" = "$w" ] || echo "Expected $w got $v" +} + +export v=$w +check + +HOME=/known/value +check() { + [ "$v" = ~ ] || echo "Expected $HOME got $v" +} + +export v=~ +check + +check() { + [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" +} + +export v=x:~ +check diff --git a/bin/sh/tests/expansion/export3.0 b/bin/sh/tests/expansion/export3.0 new file mode 100644 index 0000000..a1a0e66 --- /dev/null +++ b/bin/sh/tests/expansion/export3.0 @@ -0,0 +1,30 @@ +# $FreeBSD$ + +w='@ @' +check() { + [ "$v" = "$w" ] || echo "Expected $w got $v" +} + +command export v=$w +check +command command export v=$w +check + +HOME=/known/value +check() { + [ "$v" = ~ ] || echo "Expected $HOME got $v" +} + +command export v=~ +check +command command export v=~ +check + +check() { + [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" +} + +command export v=x:~ +check +command command export v=x:~ +check diff --git a/bin/sh/tests/expansion/heredoc1.0 b/bin/sh/tests/expansion/heredoc1.0 new file mode 100644 index 0000000..a67b2da --- /dev/null +++ b/bin/sh/tests/expansion/heredoc1.0 @@ -0,0 +1,25 @@ +# $FreeBSD$ + +f() { return $1; } + +[ `f 42; { cat; } <&2 + : $((failures += 1)) + fi + i=$((i+1)) +done +exit $((failures > 0)) diff --git a/bin/sh/tests/expansion/ifs3.0 b/bin/sh/tests/expansion/ifs3.0 new file mode 100644 index 0000000..0569b57 --- /dev/null +++ b/bin/sh/tests/expansion/ifs3.0 @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures=0 +unset LC_ALL +export LC_CTYPE=en_US.ISO8859-1 +i=128 +set -f +while [ "$i" -le 255 ]; do + i2=$((i^2)) + c=$(printf \\"$(printf %o "$i")") + c2=$(printf \\"$(printf %o "$i2")") + IFS=$c + set -- $c2$c$c2$c$c2 + if [ "$#" -ne 3 ] || [ "$1" != "$c2" ] || [ "$2" != "$c2" ] || + [ "$3" != "$c2" ]; then + echo "Bad results for separator $i (word $i2)" >&2 + : $((failures += 1)) + fi + i=$((i+1)) +done +exit $((failures > 0)) diff --git a/bin/sh/tests/expansion/ifs4.0 b/bin/sh/tests/expansion/ifs4.0 new file mode 100644 index 0000000..5b896a2 --- /dev/null +++ b/bin/sh/tests/expansion/ifs4.0 @@ -0,0 +1,39 @@ +# $FreeBSD$ + +c=: e= s=' ' +failures='' +ok='' + +check_result() { + if [ "x$2" = "x$3" ]; then + ok=x$ok + else + failures=x$failures + echo "For $1, expected $3 actual $2" + fi +} + +IFS=' +' +set -- a b '' c +set -- $@ +check_result 'set -- $@' "($#)($1)($2)($3)($4)" "(3)(a)(b)(c)()" + +IFS='' +set -- a b '' c +set -- $@ +check_result 'set -- $@' "($#)($1)($2)($3)($4)" "(3)(a)(b)(c)()" + +set -- a b '' c +set -- $* +check_result 'set -- $*' "($#)($1)($2)($3)($4)" "(3)(a)(b)(c)()" + +set -- a b '' c +set -- "$@" +check_result 'set -- "$@"' "($#)($1)($2)($3)($4)" "(4)(a)(b)()(c)" + +set -- a b '' c +set -- "$*" +check_result 'set -- "$*"' "($#)($1)($2)($3)($4)" "(1)(abc)()()()" + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/length1.0 b/bin/sh/tests/expansion/length1.0 new file mode 100644 index 0000000..2aaebf9 --- /dev/null +++ b/bin/sh/tests/expansion/length1.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +v=abcd +[ "${#v}" = 4 ] || echo '${#v} wrong' +v=$$ +[ "${#$}" = "${#v}" ] || echo '${#$} wrong' +[ "${#!}" = 0 ] || echo '${#!} wrong' +set -- 01 2 3 4 5 6 7 8 9 10 11 12 0013 +[ "${#1}" = 2 ] || echo '${#1} wrong' +[ "${#13}" = 4 ] || echo '${#13} wrong' +v=$0 +[ "${#0}" = "${#v}" ] || echo '${#0} wrong' diff --git a/bin/sh/tests/expansion/length2.0 b/bin/sh/tests/expansion/length2.0 new file mode 100644 index 0000000..d749b51 --- /dev/null +++ b/bin/sh/tests/expansion/length2.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +v=$- +[ "${#-}" = "${#v}" ] || echo '${#-} wrong' diff --git a/bin/sh/tests/expansion/length3.0 b/bin/sh/tests/expansion/length3.0 new file mode 100644 index 0000000..2093eed --- /dev/null +++ b/bin/sh/tests/expansion/length3.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +set -- 1 2 3 4 5 6 7 8 9 10 11 12 13 +[ "$#" = 13 ] || echo '$# wrong' +[ "${#}" = 13 ] || echo '${#} wrong' +[ "${##}" = 2 ] || echo '${##} wrong' +set -- +[ "$#" = 0 ] || echo '$# wrong' +[ "${#}" = 0 ] || echo '${#} wrong' +[ "${##}" = 1 ] || echo '${##} wrong' diff --git a/bin/sh/tests/expansion/length4.0 b/bin/sh/tests/expansion/length4.0 new file mode 100644 index 0000000..5348be5 --- /dev/null +++ b/bin/sh/tests/expansion/length4.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +# The construct ${#?} is ambiguous in POSIX.1-2008: it could be the length +# of $? or it could be $# giving an error in the (impossible) case that it +# is not set. +# We use the former interpretation; it seems more useful. + +: +[ "${#?}" = 1 ] || echo '${#?} wrong' +(exit 42) +[ "${#?}" = 2 ] || echo '${#?} wrong' diff --git a/bin/sh/tests/expansion/length5.0 b/bin/sh/tests/expansion/length5.0 new file mode 100644 index 0000000..322ca16 --- /dev/null +++ b/bin/sh/tests/expansion/length5.0 @@ -0,0 +1,27 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.ISO8859-1 +export LC_CTYPE + +e= +for i in 0 1 2 3; do + for j in 0 1 2 3 4 5 6 7; do + for k in 0 1 2 3 4 5 6 7; do + case $i$j$k in + 000) continue ;; + esac + e="$e\\$i$j$k" + done + done +done +ee=`printf "$e"` +[ ${#ee} = 255 ] || echo bad 1 +[ "${#ee}" = 255 ] || echo bad 2 +[ $((${#ee})) = 255 ] || echo bad 3 +[ "$((${#ee}))" = 255 ] || echo bad 4 +set -- "$ee" +[ ${#1} = 255 ] || echo bad 5 +[ "${#1}" = 255 ] || echo bad 6 +[ $((${#1})) = 255 ] || echo bad 7 +[ "$((${#1}))" = 255 ] || echo bad 8 diff --git a/bin/sh/tests/expansion/length6.0 b/bin/sh/tests/expansion/length6.0 new file mode 100644 index 0000000..6b78309 --- /dev/null +++ b/bin/sh/tests/expansion/length6.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +x='!@#$%^&*()[]' +[ ${#x} = 12 ] || echo bad 1 +[ "${#x}" = 12 ] || echo bad 2 +IFS=2 +[ ${#x} = 1 ] || echo bad 3 +[ "${#x}" = 12 ] || echo bad 4 diff --git a/bin/sh/tests/expansion/length7.0 b/bin/sh/tests/expansion/length7.0 new file mode 100644 index 0000000..b79b116 --- /dev/null +++ b/bin/sh/tests/expansion/length7.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.UTF-8 +export LC_CTYPE + +# a umlaut +s=$(printf '\303\244') +# euro sign +s=$s$(printf '\342\202\254') +# some sort of 't' outside BMP +s=$s$(printf '\360\235\225\245') +set -- "$s" +[ ${#s} = 3 ] && [ ${#1} = 3 ] diff --git a/bin/sh/tests/expansion/length8.0 b/bin/sh/tests/expansion/length8.0 new file mode 100644 index 0000000..3cc6c15 --- /dev/null +++ b/bin/sh/tests/expansion/length8.0 @@ -0,0 +1,14 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.ISO8859-1 +export LC_CTYPE + +# a umlaut +s=$(printf '\303\244') +# euro sign +s=$s$(printf '\342\202\254') +# some sort of 't' outside BMP +s=$s$(printf '\360\235\225\245') +set -- "$s" +[ ${#s} = 9 ] && [ ${#1} = 9 ] diff --git a/bin/sh/tests/expansion/local1.0 b/bin/sh/tests/expansion/local1.0 new file mode 100644 index 0000000..3477835 --- /dev/null +++ b/bin/sh/tests/expansion/local1.0 @@ -0,0 +1,28 @@ +# $FreeBSD$ + +run_test() { + w='@ @' + check() { + [ "$v" = "$w" ] || echo "Expected $w got $v" + } + + local v=$w + check + + HOME=/known/value + check() { + [ "$v" = ~ ] || echo "Expected $HOME got $v" + } + + local v=~ + check + + check() { + [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" + } + + local v=x:~ + check +} + +run_test diff --git a/bin/sh/tests/expansion/local2.0 b/bin/sh/tests/expansion/local2.0 new file mode 100644 index 0000000..1984290 --- /dev/null +++ b/bin/sh/tests/expansion/local2.0 @@ -0,0 +1,34 @@ +# $FreeBSD$ + +run_test() { + w='@ @' + check() { + [ "$v" = "$w" ] || echo "Expected $w got $v" + } + + command local v=$w + check + command command local v=$w + check + + HOME=/known/value + check() { + [ "$v" = ~ ] || echo "Expected $HOME got $v" + } + + command local v=~ + check + command command local v=~ + check + + check() { + [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" + } + + command local v=x:~ + check + command command local v=x:~ + check +} + +run_test diff --git a/bin/sh/tests/expansion/pathname1.0 b/bin/sh/tests/expansion/pathname1.0 new file mode 100644 index 0000000..8c6b01c --- /dev/null +++ b/bin/sh/tests/expansion/pathname1.0 @@ -0,0 +1,61 @@ +# $FreeBSD$ + +failures=0 + +check() { + testcase=$1 + expect=$2 + eval "set -- $testcase" + actual="$*" + if [ "$actual" != "$expect" ]; then + failures=$((failures+1)) + printf '%s\n' "For $testcase, expected $expect actual $actual" + fi +} + +set -e +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd -P $T + +mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b +mkdir testdir2/.c +touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a + +check '' '' +check 'testdir/b' 'testdir/b' +check 'testdir/c' 'testdir/c' +check '\*' '*' +check '\?' '?' +check '*' 'testdir testdir2 testf' +check '*""' 'testdir testdir2 testf' +check '""*' 'testdir testdir2 testf' +check '*/' 'testdir/ testdir2/' +check 'testdir*/a' 'testdir/a' +check 'testdir*/b' 'testdir/b testdir2/b' +check '*/.c' 'testdir2/.c' +check 'testdir2/*' 'testdir2/b' +check 'testdir2/b/*' 'testdir2/b/*' +check 'testdir/*' 'testdir/* testdir/? testdir/a testdir/b' +check 'testdir/*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' +check '"testdir/"*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' +check 'testdir/\*/*' 'testdir/*/1' +check 'testdir/\?/*' 'testdir/?/1' +check 'testdir/"?"/*' 'testdir/?/1' +check '"testdir"/"?"/*' 'testdir/?/1' +check '"testdir"/"?"*/*' 'testdir/?/1' +check '"testdir"/*"?"/*' 'testdir/?/1' +check '"testdir/?"*/*' 'testdir/?/1' +check 'testdir/\*/' 'testdir/*/' +check 'testdir/\?/' 'testdir/?/' +check 'testdir/"?"/' 'testdir/?/' +check '"testdir"/"?"/' 'testdir/?/' +check '"testdir"/"?"*/' 'testdir/?/' +check '"testdir"/*"?"/' 'testdir/?/' +check '"testdir/?"*/' 'testdir/?/' +check 'testdir/[*]/' 'testdir/*/' +check 'testdir/[?]/' 'testdir/?/' +check 'testdir/[*?]/' 'testdir/*/ testdir/?/' +check '[tz]estdir/[*]/' 'testdir/*/' + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/pathname2.0 b/bin/sh/tests/expansion/pathname2.0 new file mode 100644 index 0000000..8a884ff --- /dev/null +++ b/bin/sh/tests/expansion/pathname2.0 @@ -0,0 +1,31 @@ +# $FreeBSD$ + +failures=0 + +check() { + testcase=$1 + expect=$2 + eval "set -- $testcase" + actual="$*" + if [ "$actual" != "$expect" ]; then + failures=$((failures+1)) + printf '%s\n' "For $testcase, expected $expect actual $actual" + fi +} + +set -e +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd -P $T + +mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b +mkdir testdir2/.c +touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a + +check '*\/' 'testdir/ testdir2/' +check '"testdir/"*"/1"' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' +check '"testdir/"*"/"*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' +check '"testdir/"*\/*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' +check '"testdir"*"/"*"/"*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/pathname3.0 b/bin/sh/tests/expansion/pathname3.0 new file mode 100644 index 0000000..d1672e0 --- /dev/null +++ b/bin/sh/tests/expansion/pathname3.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ + +v=12345678 +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +v=$v$v$v$v +# 8192 bytes +v=${v##???} +[ /*/$v = "/*/$v" ] || exit 1 + +s=//// +s=$s$s$s$s +s=$s$s$s$s +s=$s$s$s$s +s=$s$s$s$s +# 1024 bytes +s=${s##??????????} +[ /var/empt[y]/$s/$v = "/var/empt[y]/$s/$v" ] || exit 2 +while [ ${#s} -lt 1034 ]; do + set -- /.${s}et[c] + [ ${#s} -gt 1018 ] || [ "$1" = /.${s}etc ] || exit 3 + set -- /.${s}et[c]/ + [ ${#s} -gt 1017 ] || [ "$1" = /.${s}etc/ ] || exit 4 + set -- /.${s}et[c]/. + [ ${#s} -gt 1016 ] || [ "$1" = /.${s}etc/. ] || exit 5 + s=$s/ +done diff --git a/bin/sh/tests/expansion/pathname4.0 b/bin/sh/tests/expansion/pathname4.0 new file mode 100644 index 0000000..18269c4 --- /dev/null +++ b/bin/sh/tests/expansion/pathname4.0 @@ -0,0 +1,28 @@ +# $FreeBSD$ + +failures=0 + +check() { + testcase=$1 + expect=$2 + eval "set -- $testcase" + actual="$*" + if [ "$actual" != "$expect" ]; then + failures=$((failures+1)) + printf '%s\n' "For $testcase, expected $expect actual $actual" + fi +} + +set -e +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd -P $T + +mkdir !!a +touch !!a/fff + +chmod u-r . +check '!!a/ff*' '!!a/fff' +chmod u+r . + +exit $((failures != 0)) diff --git a/bin/sh/tests/expansion/plus-minus1.0 b/bin/sh/tests/expansion/plus-minus1.0 new file mode 100644 index 0000000..9a6a53a --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus1.0 @@ -0,0 +1,76 @@ +# $FreeBSD$ + +e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' +h='##' +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'set -- a b' '2|a|b' +testcase 'set --' '0|' +testcase 'set -- ${e}' '0|' +testcase 'set -- "${e}"' '1|' + +testcase 'set -- $p' '1|/etc/' +testcase 'set -- "$p"' '1|/et[c]/' +testcase 'set -- ${s+$p}' '1|/etc/' +testcase 'set -- "${s+$p}"' '1|/et[c]/' +testcase 'set -- ${s+"$p"}' '1|/et[c]/' +# Dquotes in dquotes is undefined for Bourne shell operators +#testcase 'set -- "${s+"$p"}"' '1|/et[c]/' +testcase 'set -- ${e:-$p}' '1|/etc/' +testcase 'set -- "${e:-$p}"' '1|/et[c]/' +testcase 'set -- ${e:-"$p"}' '1|/et[c]/' +# Dquotes in dquotes is undefined for Bourne shell operators +#testcase 'set -- "${e:-"$p"}"' '1|/et[c]/' +testcase 'set -- ${e:+"$e"}' '0|' +testcase 'set -- ${e:+$w"$e"}' '0|' +testcase 'set -- ${w:+"$w"}' '1|a b c' +testcase 'set -- ${w:+$w"$w"}' '3|a|b|ca b c' + +testcase 'set -- "${s+a b}"' '1|a b' +testcase 'set -- "${e:-a b}"' '1|a b' +testcase 'set -- ${e:-\}}' '1|}' +testcase 'set -- ${e:+{}}' '1|}' +testcase 'set -- "${e:+{}}"' '1|}' + +testcase 'set -- ${e+x}${e+x}' '1|xx' +testcase 'set -- "${e+x}"${e+x}' '1|xx' +testcase 'set -- ${e+x}"${e+x}"' '1|xx' +testcase 'set -- "${e+x}${e+x}"' '1|xx' +testcase 'set -- "${e+x}""${e+x}"' '1|xx' + +testcase 'set -- ${e:-${e:-$p}}' '1|/etc/' +testcase 'set -- "${e:-${e:-$p}}"' '1|/et[c]/' +testcase 'set -- ${e:-"${e:-$p}"}' '1|/et[c]/' +testcase 'set -- ${e:-${e:-"$p"}}' '1|/et[c]/' +testcase 'set -- ${e:-${e:-${e:-$w}}}' '3|a|b|c' +testcase 'set -- ${e:-${e:-${e:-"$w"}}}' '1|a b c' +testcase 'set -- ${e:-${e:-"${e:-$w}"}}' '1|a b c' +testcase 'set -- ${e:-"${e:-${e:-$w}}"}' '1|a b c' +testcase 'set -- "${e:-${e:-${e:-$w}}}"' '1|a b c' + +testcase 'shift $#; set -- ${1+"$@"}' '0|' +testcase 'set -- ""; set -- ${1+"$@"}' '1|' +testcase 'set -- "" a; set -- ${1+"$@"}' '2||a' +testcase 'set -- a ""; set -- ${1+"$@"}' '2|a|' +testcase 'set -- a b; set -- ${1+"$@"}' '2|a|b' +testcase 'set -- a\ b; set -- ${1+"$@"}' '1|a b' +testcase 'set -- " " ""; set -- ${1+"$@"}' '2| |' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/plus-minus2.0 b/bin/sh/tests/expansion/plus-minus2.0 new file mode 100644 index 0000000..f5a8752 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus2.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ + +e= +test "${e:-\}}" = '}' diff --git a/bin/sh/tests/expansion/plus-minus3.0 b/bin/sh/tests/expansion/plus-minus3.0 new file mode 100644 index 0000000..49fcdc2 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus3.0 @@ -0,0 +1,44 @@ +# $FreeBSD$ + +e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' +h='##' +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +# We follow original ash behaviour for quoted ${var+-=?} expansions: +# a double-quote in one switches back to unquoted state. +# This allows expanding a variable as a single word if it is set +# and substituting multiple words otherwise. +# It is also close to the Bourne and Korn shells. +# POSIX leaves this undefined, and various other shells treat +# such double-quotes as introducing a second level of quoting +# which does not do much except quoting close braces. + +testcase 'set -- "${p+"/et[c]/"}"' '1|/etc/' +testcase 'set -- "${p-"/et[c]/"}"' '1|/et[c]/' +testcase 'set -- "${p+"$p"}"' '1|/etc/' +testcase 'set -- "${p-"$p"}"' '1|/et[c]/' +testcase 'set -- "${p+"""/et[c]/"}"' '1|/etc/' +testcase 'set -- "${p-"""/et[c]/"}"' '1|/et[c]/' +testcase 'set -- "${p+"""$p"}"' '1|/etc/' +testcase 'set -- "${p-"""$p"}"' '1|/et[c]/' +testcase 'set -- "${p+"\@"}"' '1|@' +testcase 'set -- "${p+"'\''/et[c]/'\''"}"' '1|/et[c]/' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/plus-minus4.0 b/bin/sh/tests/expansion/plus-minus4.0 new file mode 100644 index 0000000..66dea38 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus4.0 @@ -0,0 +1,38 @@ +# $FreeBSD$ + +# These may be a bit unclear in the POSIX spec or the proposed revisions, +# and conflict with bash's interpretation, but I think ksh93's interpretation +# makes most sense. In particular, it makes no sense to me that single-quotes +# must match but are not removed. + +e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' +h='##' +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'set -- ${e:-'"'"'}'"'"'}' '1|}' +testcase "set -- \${e:-\\'}" "1|'" +testcase "set -- \${e:-\\'\\'}" "1|''" +testcase "set -- \"\${e:-'}\"" "1|'" +testcase "set -- \"\${e:-'}'}\"" "1|''}" +testcase "set -- \"\${e:-''}\"" "1|''" +testcase 'set -- ${e:-\a}' '1|a' +testcase 'set -- "${e:-\a}"' '1|\a' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/plus-minus5.0 b/bin/sh/tests/expansion/plus-minus5.0 new file mode 100644 index 0000000..0b25e53 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus5.0 @@ -0,0 +1,31 @@ +# $FreeBSD$ + +e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' +h='##' +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'set -- ${e:-"{x}"}' '1|{x}' +testcase 'set -- "${e:-"{x}"}"' '1|{x}' +testcase 'set -- ${h+"{x}"}' '1|{x}' +testcase 'set -- "${h+"{x}"}"' '1|{x}' +testcase 'set -- ${h:-"{x}"}' '1|##' +testcase 'set -- "${h:-"{x}"}"' '1|##' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/plus-minus6.0 b/bin/sh/tests/expansion/plus-minus6.0 new file mode 100644 index 0000000..bc66805 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus6.0 @@ -0,0 +1,34 @@ +# $FreeBSD$ + +failures=0 +unset LC_ALL +export LC_CTYPE=en_US.ISO8859-1 +nl=' +' +i=1 +set -f +while [ "$i" -le 255 ]; do + # A different byte still in the range 1..255. + i2=$((i^2+(i==2))) + # Add a character to work around command substitution's removal of + # final newlines, then remove it again. + c=$(printf \\"$(printf %o@ "$i")") + c=${c%@} + c2=$(printf \\"$(printf %o@ "$i2")") + c2=${c2%@} + case $c in + [\'$nl'$}();&|\"`']) c=M + esac + case $c2 in + [\'$nl'$}();&|\"`']) c2=N + esac + IFS=$c + command eval "set -- \${\$+$c2$c$c2$c$c2}" + if [ "$#" -ne 3 ] || [ "$1" != "$c2" ] || [ "$2" != "$c2" ] || + [ "$3" != "$c2" ]; then + echo "Bad results for separator $i (word $i2)" >&2 + : $((failures += 1)) + fi + i=$((i+1)) +done +exit $((failures > 0)) diff --git a/bin/sh/tests/expansion/plus-minus7.0 b/bin/sh/tests/expansion/plus-minus7.0 new file mode 100644 index 0000000..9e81f58 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus7.0 @@ -0,0 +1,26 @@ +# $FreeBSD$ + +e= s='foo' +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'set -- ${s+a b}' '2|a|b' +testcase 'set -- ${e:-a b}' '2|a|b' + +test "x$failures" = x diff --git a/bin/sh/tests/expansion/plus-minus8.0 b/bin/sh/tests/expansion/plus-minus8.0 new file mode 100644 index 0000000..beba009 --- /dev/null +++ b/bin/sh/tests/expansion/plus-minus8.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +set -- 1 2 3 4 5 6 7 8 9 10 11 12 13 +[ "${#+hi}" = hi ] || echo '${#+hi} wrong' +[ "${#-hi}" = 13 ] || echo '${#-hi} wrong' diff --git a/bin/sh/tests/expansion/question1.0 b/bin/sh/tests/expansion/question1.0 new file mode 100644 index 0000000..663c68d --- /dev/null +++ b/bin/sh/tests/expansion/question1.0 @@ -0,0 +1,22 @@ +# $FreeBSD$ + +x=a\ b +[ "$x" = "${x?}" ] || exit 1 +set -- ${x?} +{ [ "$#" = 2 ] && [ "$1" = a ] && [ "$2" = b ]; } || exit 1 +unset x +(echo ${x?abcdefg}) 2>&1 | grep -q abcdefg || exit 1 +${SH} -c 'unset foo; echo ${foo?}' 2>/dev/null && exit 1 +${SH} -c 'foo=; echo ${foo:?}' 2>/dev/null && exit 1 +${SH} -c 'foo=; echo ${foo?}' >/dev/null || exit 1 +${SH} -c 'foo=1; echo ${foo:?}' >/dev/null || exit 1 +${SH} -c 'echo ${!?}' 2>/dev/null && exit 1 +${SH} -c ':& echo ${!?}' >/dev/null || exit 1 +${SH} -c 'echo ${#?}' >/dev/null || exit 1 +${SH} -c 'echo ${*?}' 2>/dev/null && exit 1 +${SH} -c 'echo ${*?}' ${SH} x >/dev/null || exit 1 +${SH} -c 'echo ${1?}' 2>/dev/null && exit 1 +${SH} -c 'echo ${1?}' ${SH} x >/dev/null || exit 1 +${SH} -c 'echo ${2?}' ${SH} x 2>/dev/null && exit 1 +${SH} -c 'echo ${2?}' ${SH} x y >/dev/null || exit 1 +exit 0 diff --git a/bin/sh/tests/expansion/readonly1.0 b/bin/sh/tests/expansion/readonly1.0 new file mode 100644 index 0000000..5ad0e14 --- /dev/null +++ b/bin/sh/tests/expansion/readonly1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +w='@ @' + +v=0 HOME=/known/value +readonly v=~:~/:$w +[ "$v" = "$HOME:$HOME/:$w" ] || echo "Expected $HOME/:$w got $v" diff --git a/bin/sh/tests/expansion/set-u1.0 b/bin/sh/tests/expansion/set-u1.0 new file mode 100644 index 0000000..763eb7d --- /dev/null +++ b/bin/sh/tests/expansion/set-u1.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ + +${SH} -uc 'unset foo; echo $foo' 2>/dev/null && exit 1 +${SH} -uc 'foo=; echo $foo' >/dev/null || exit 1 +${SH} -uc 'foo=1; echo $foo' >/dev/null || exit 1 +# -/+/= are unaffected by set -u +${SH} -uc 'unset foo; echo ${foo-}' >/dev/null || exit 1 +${SH} -uc 'unset foo; echo ${foo+}' >/dev/null || exit 1 +${SH} -uc 'unset foo; echo ${foo=}' >/dev/null || exit 1 +# length/trimming are affected +${SH} -uc 'unset foo; echo ${#foo}' 2>/dev/null && exit 1 +${SH} -uc 'foo=; echo ${#foo}' >/dev/null || exit 1 +${SH} -uc 'unset foo; echo ${foo#?}' 2>/dev/null && exit 1 +${SH} -uc 'foo=1; echo ${foo#?}' >/dev/null || exit 1 +${SH} -uc 'unset foo; echo ${foo##?}' 2>/dev/null && exit 1 +${SH} -uc 'foo=1; echo ${foo##?}' >/dev/null || exit 1 +${SH} -uc 'unset foo; echo ${foo%?}' 2>/dev/null && exit 1 +${SH} -uc 'foo=1; echo ${foo%?}' >/dev/null || exit 1 +${SH} -uc 'unset foo; echo ${foo%%?}' 2>/dev/null && exit 1 +${SH} -uc 'foo=1; echo ${foo%%?}' >/dev/null || exit 1 + +${SH} -uc 'echo $!' 2>/dev/null && exit 1 +${SH} -uc ':& echo $!' >/dev/null || exit 1 +${SH} -uc 'echo $#' >/dev/null || exit 1 +${SH} -uc 'echo $1' 2>/dev/null && exit 1 +${SH} -uc 'echo $1' ${SH} x >/dev/null || exit 1 +${SH} -uc 'echo $2' ${SH} x 2>/dev/null && exit 1 +${SH} -uc 'echo $2' ${SH} x y >/dev/null || exit 1 +exit 0 diff --git a/bin/sh/tests/expansion/set-u2.0 b/bin/sh/tests/expansion/set-u2.0 new file mode 100644 index 0000000..f81aa62 --- /dev/null +++ b/bin/sh/tests/expansion/set-u2.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +set -u +: $* $@ "$@" "$*" +set -- x +: $* $@ "$@" "$*" +shift $# +: $* $@ "$@" "$*" +set -- y +set -- +: $* $@ "$@" "$*" +exit 0 diff --git a/bin/sh/tests/expansion/set-u3.0 b/bin/sh/tests/expansion/set-u3.0 new file mode 100644 index 0000000..7f199b4 --- /dev/null +++ b/bin/sh/tests/expansion/set-u3.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +set -u +unset x +v=$( (eval ': $((x))') 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/expansion/tilde1.0 b/bin/sh/tests/expansion/tilde1.0 new file mode 100644 index 0000000..7d8581b --- /dev/null +++ b/bin/sh/tests/expansion/tilde1.0 @@ -0,0 +1,56 @@ +# $FreeBSD$ + +HOME=/tmp +roothome=~root +if [ "$roothome" = "~root" ]; then + echo "~root is not expanded!" + exit 2 +fi + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'set -- ~' '1|/tmp' +testcase 'set -- ~/foo' '1|/tmp/foo' +testcase 'set -- x~' '1|x~' +testcase 'set -- ~root' "1|$roothome" +h=~ +testcase 'set -- "$h"' '1|/tmp' +ooIFS=$IFS +IFS=m +testcase 'set -- ~' '1|/tmp' +testcase 'set -- ~/foo' '1|/tmp/foo' +testcase 'set -- $h' '2|/t|p' +IFS=$ooIFS +t=\~ +testcase 'set -- $t' '1|~' +r=$(cat < tmp.stdout 2> tmp.stderr + if [ $? -ne $2 ]; then + echo "not ok ${c} - ${1} # wrong exit status" + 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 + echo "not ok ${c} - ${1} # wrong output on ${i}" + rm tmp.stdout tmp.stderr + return + fi + elif [ -s tmp.${i} ]; then + echo "not ok ${c} - ${1} # wrong output on ${i}" + rm tmp.stdout tmp.stderr + return + fi + done + echo "ok ${c} - ${1}" + rm tmp.stdout tmp.stderr +} + +TESTS=$(find -Es ${TESTS_DATA} -regex ".*\.[0-9]+") +printf "1..%d\n" $(echo ${TESTS} | wc -w) + +for i in ${TESTS} ; do + do_test ${i} ${i##*.} +done diff --git a/bin/sh/tests/parameters/Makefile b/bin/sh/tests/parameters/Makefile new file mode 100644 index 0000000..cb76474 --- /dev/null +++ b/bin/sh/tests/parameters/Makefile @@ -0,0 +1,18 @@ +# $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+= positional1.0 +FILES+= positional2.0 +FILES+= pwd1.0 +FILES+= pwd2.0 + +.include diff --git a/bin/sh/tests/parameters/env1.0 b/bin/sh/tests/parameters/env1.0 new file mode 100644 index 0000000..c0d4a2c --- /dev/null +++ b/bin/sh/tests/parameters/env1.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +export key='must contain this' +unset x +r=$(ENV="\${x?\$key}" ${SH} -i +m 2>&1 >/dev/null <<\EOF +exit 0 +EOF +) && case $r in +*"$key"*) true ;; +*) false ;; +esac diff --git a/bin/sh/tests/parameters/exitstatus1.0 b/bin/sh/tests/parameters/exitstatus1.0 new file mode 100644 index 0000000..696823d --- /dev/null +++ b/bin/sh/tests/parameters/exitstatus1.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ +f() { + [ $? = $1 ] || exit 1 +} + +true +f 0 +false +f 1 diff --git a/bin/sh/tests/parameters/mail1.0 b/bin/sh/tests/parameters/mail1.0 new file mode 100644 index 0000000..5791a5a --- /dev/null +++ b/bin/sh/tests/parameters/mail1.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ +# Test that a non-interactive shell does not access $MAIL. + +goodfile=/var/empty/sh-test-goodfile +mailfile=/var/empty/sh-test-mailfile +T=$(mktemp sh-test.XXXXXX) || exit +MAIL=$mailfile ktrace -i -f "$T" ${SH} -c "[ -s $goodfile ]" 2>/dev/null +if ! grep -q $goodfile "$T"; then + # ktrace problem + rc=0 +elif ! grep -q $mailfile "$T"; then + rc=0 +fi +rm "$T" +exit ${rc:-3} diff --git a/bin/sh/tests/parameters/mail2.0 b/bin/sh/tests/parameters/mail2.0 new file mode 100644 index 0000000..343c99d --- /dev/null +++ b/bin/sh/tests/parameters/mail2.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ +# Test that an interactive shell accesses $MAIL. + +goodfile=/var/empty/sh-test-goodfile +mailfile=/var/empty/sh-test-mailfile +T=$(mktemp sh-test.XXXXXX) || exit +ENV=$goodfile MAIL=$mailfile ktrace -i -f "$T" ${SH} +m -i /dev/null 2>&1 +if ! grep -q $goodfile "$T"; then + # ktrace problem + rc=0 +elif grep -q $mailfile "$T"; then + rc=0 +fi +rm "$T" +exit ${rc:-3} diff --git a/bin/sh/tests/parameters/optind1.0 b/bin/sh/tests/parameters/optind1.0 new file mode 100644 index 0000000..33e0288 --- /dev/null +++ b/bin/sh/tests/parameters/optind1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +unset OPTIND && [ -z "$OPTIND" ] diff --git a/bin/sh/tests/parameters/positional1.0 b/bin/sh/tests/parameters/positional1.0 new file mode 100644 index 0000000..67d1951 --- /dev/null +++ b/bin/sh/tests/parameters/positional1.0 @@ -0,0 +1,13 @@ +# $FreeBSD$ + +set -- a b c d e f g h i j +[ "$1" = a ] || echo "error at line $LINENO" +[ "${1}" = a ] || echo "error at line $LINENO" +[ "${1-foo}" = a ] || echo "error at line $LINENO" +[ "${1+foo}" = foo ] || echo "error at line $LINENO" +[ "$1+foo" = a+foo ] || echo "error at line $LINENO" +[ "$10" = a0 ] || echo "error at line $LINENO" +[ "$100" = a00 ] || echo "error at line $LINENO" +[ "${10}" = j ] || echo "error at line $LINENO" +[ "${10-foo}" = j ] || echo "error at line $LINENO" +[ "${100-foo}" = foo ] || echo "error at line $LINENO" diff --git a/bin/sh/tests/parameters/positional2.0 b/bin/sh/tests/parameters/positional2.0 new file mode 100644 index 0000000..fcec2a4 --- /dev/null +++ b/bin/sh/tests/parameters/positional2.0 @@ -0,0 +1,65 @@ +# $FreeBSD$ + +failures='' +ok='' + +testcase() { + code="$1" + expected="$2" + oIFS="$IFS" + eval "$code" + IFS='|' + result="$#|$*" + IFS="$oIFS" + if [ "x$result" = "x$expected" ]; then + ok=x$ok + else + failures=x$failures + echo "For $code, expected $expected actual $result" + fi +} + +testcase 'set -- a b; set -- p$@q' '2|pa|bq' +testcase 'set -- a b; set -- $@q' '2|a|bq' +testcase 'set -- a b; set -- p$@' '2|pa|b' +testcase 'set -- a b; set -- p$@q' '2|pa|bq' +testcase 'set -- a b; set -- $@q' '2|a|bq' +testcase 'set -- a b; set -- p$@' '2|pa|b' +testcase 'set -- a b; set -- p$*q' '2|pa|bq' +testcase 'set -- a b; set -- $*q' '2|a|bq' +testcase 'set -- a b; set -- p$*' '2|pa|b' +testcase 'set -- a b; set -- p$*q' '2|pa|bq' +testcase 'set -- a b; set -- $*q' '2|a|bq' +testcase 'set -- a b; set -- p$*' '2|pa|b' +testcase 'set -- a b; set -- "p$@q"' '2|pa|bq' +testcase 'set -- a b; set -- "$@q"' '2|a|bq' +testcase 'set -- a b; set -- "p$@"' '2|pa|b' +testcase 'set -- a b; set -- p"$@"q' '2|pa|bq' +testcase 'set -- a b; set -- "$@"q' '2|a|bq' +testcase 'set -- a b; set -- p"$@"' '2|pa|b' +testcase 'set -- "" a b; set -- "p$@q"' '3|p|a|bq' +testcase 'set -- "" a b; set -- "$@q"' '3||a|bq' +testcase 'set -- "" a b; set -- "p$@"' '3|p|a|b' +testcase 'set -- "" a b; set -- p"$@"q' '3|p|a|bq' +testcase 'set -- "" a b; set -- "$@"q' '3||a|bq' +testcase 'set -- "" a b; set -- p"$@"' '3|p|a|b' +testcase 'set -- a; set -- p$@q' '1|paq' +testcase 'set -- a; set -- $@q' '1|aq' +testcase 'set -- a; set -- p$@' '1|pa' +testcase 'set -- a; set -- p$@q' '1|paq' +testcase 'set -- a; set -- $@q' '1|aq' +testcase 'set -- a; set -- p$@' '1|pa' +testcase 'set -- a; set -- p$*q' '1|paq' +testcase 'set -- a; set -- $*q' '1|aq' +testcase 'set -- a; set -- p$*' '1|pa' +testcase 'set -- a; set -- p$*q' '1|paq' +testcase 'set -- a; set -- $*q' '1|aq' +testcase 'set -- a; set -- p$*' '1|pa' +testcase 'set -- a; set -- "p$@q"' '1|paq' +testcase 'set -- a; set -- "$@q"' '1|aq' +testcase 'set -- a; set -- "p$@"' '1|pa' +testcase 'set -- a; set -- p"$@"q' '1|paq' +testcase 'set -- a; set -- "$@"q' '1|aq' +testcase 'set -- a; set -- p"$@"' '1|pa' + +test "x$failures" = x diff --git a/bin/sh/tests/parameters/pwd1.0 b/bin/sh/tests/parameters/pwd1.0 new file mode 100644 index 0000000..0099379 --- /dev/null +++ b/bin/sh/tests/parameters/pwd1.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ +# Check that bogus PWD values are not accepted from the environment. + +cd / || exit 3 +failures=0 +[ "$(PWD=foo ${SH} -c 'pwd')" = / ] || : $((failures += 1)) +[ "$(PWD=/var/empty ${SH} -c 'pwd')" = / ] || : $((failures += 1)) +[ "$(PWD=/var/empty/foo ${SH} -c 'pwd')" = / ] || : $((failures += 1)) +[ "$(PWD=/bin/ls ${SH} -c 'pwd')" = / ] || : $((failures += 1)) + +exit $((failures != 0)) diff --git a/bin/sh/tests/parameters/pwd2.0 b/bin/sh/tests/parameters/pwd2.0 new file mode 100644 index 0000000..2297f8b --- /dev/null +++ b/bin/sh/tests/parameters/pwd2.0 @@ -0,0 +1,24 @@ +# $FreeBSD$ +# Check that PWD is exported and accepted from the environment. +set -e + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd -P $T +TP=$(pwd) +mkdir test1 +ln -s test1 link +cd link +[ "$PWD" = "$TP/link" ] +[ "$(pwd)" = "$TP/link" ] +[ "$(pwd -P)" = "$TP/test1" ] +[ "$(${SH} -c pwd)" = "$TP/link" ] +[ "$(${SH} -c pwd\ -P)" = "$TP/test1" ] +cd .. +[ "$(pwd)" = "$TP" ] +cd -P link +[ "$PWD" = "$TP/test1" ] +[ "$(pwd)" = "$TP/test1" ] +[ "$(pwd -P)" = "$TP/test1" ] +[ "$(${SH} -c pwd)" = "$TP/test1" ] +[ "$(${SH} -c pwd\ -P)" = "$TP/test1" ] diff --git a/bin/sh/tests/parser/Makefile b/bin/sh/tests/parser/Makefile new file mode 100644 index 0000000..71bd370 --- /dev/null +++ b/bin/sh/tests/parser/Makefile @@ -0,0 +1,59 @@ +# $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+= 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/bin/sh/tests/parser/alias1.0 b/bin/sh/tests/parser/alias1.0 new file mode 100644 index 0000000..75dd9ab --- /dev/null +++ b/bin/sh/tests/parser/alias1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +alias alias0=exit +eval 'alias0 0' +exit 1 diff --git a/bin/sh/tests/parser/alias10.0 b/bin/sh/tests/parser/alias10.0 new file mode 100644 index 0000000..30d99f4 --- /dev/null +++ b/bin/sh/tests/parser/alias10.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ + +# This test may start consuming memory indefinitely if it fails. +ulimit -t 5 2>/dev/null +ulimit -v 100000 2>/dev/null + +alias echo='echo' +alias echo='echo' +[ "`eval echo b`" = b ] diff --git a/bin/sh/tests/parser/alias2.0 b/bin/sh/tests/parser/alias2.0 new file mode 100644 index 0000000..ae99b8a --- /dev/null +++ b/bin/sh/tests/parser/alias2.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +alias alias0=exit +x=alias0 +eval 'case $x in alias0) exit 0;; esac' +exit 1 diff --git a/bin/sh/tests/parser/alias3.0 b/bin/sh/tests/parser/alias3.0 new file mode 100644 index 0000000..e0721e2 --- /dev/null +++ b/bin/sh/tests/parser/alias3.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +alias alias0=exit +x=alias0 +eval 'case $x in "alias0") alias0 0;; esac' +exit 1 diff --git a/bin/sh/tests/parser/alias4.0 b/bin/sh/tests/parser/alias4.0 new file mode 100644 index 0000000..19332ed --- /dev/null +++ b/bin/sh/tests/parser/alias4.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +alias alias0=exit +eval 'x=1 alias0 0' +exit 1 diff --git a/bin/sh/tests/parser/alias5.0 b/bin/sh/tests/parser/alias5.0 new file mode 100644 index 0000000..3d0205f --- /dev/null +++ b/bin/sh/tests/parser/alias5.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +alias alias0=exit +eval '&2 ;; + esac) +} +f1 +f2() { + x=$(case x in + (x|esac) ;; + (*) echo bad >&2 + esac) +} +f2 +f3() { + x=$(case x in + x|esac) ;; + *) echo bad >&2 ;; + esac) +} +f3 +f4() { + x=$(case x in + x|esac) ;; + *) echo bad >&2 + esac) +} +f4 diff --git a/bin/sh/tests/parser/dollar-quote1.0 b/bin/sh/tests/parser/dollar-quote1.0 new file mode 100644 index 0000000..1206141 --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote1.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +set -e + +[ $'hi' = hi ] +[ $'hi +there' = 'hi +there' ] +[ $'\"\'\\\a\b\f\t\v' = "\"'\\$(printf "\a\b\f\t\v")" ] +[ $'hi\nthere' = 'hi +there' ] +[ $'a\rb' = "$(printf "a\rb")" ] diff --git a/bin/sh/tests/parser/dollar-quote10.0 b/bin/sh/tests/parser/dollar-quote10.0 new file mode 100644 index 0000000..ad166da --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote10.0 @@ -0,0 +1,10 @@ +# $FreeBSD$ + +# a umlaut +s=$(printf '\303\244') +# euro sign +s=$s$(printf '\342\202\254') + +# Start a new shell so the locale change is picked up. +ss="$(LC_ALL=en_US.UTF-8 ${SH} -c "printf %s \$'\u00e4\u20ac'")" +[ "$s" = "$ss" ] diff --git a/bin/sh/tests/parser/dollar-quote11.0 b/bin/sh/tests/parser/dollar-quote11.0 new file mode 100644 index 0000000..2e872ab --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote11.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +# some sort of 't' outside BMP +s=$s$(printf '\360\235\225\245') + +# Start a new shell so the locale change is picked up. +ss="$(LC_ALL=en_US.UTF-8 ${SH} -c "printf %s \$'\U0001d565'")" +[ "$s" = "$ss" ] diff --git a/bin/sh/tests/parser/dollar-quote2.0 b/bin/sh/tests/parser/dollar-quote2.0 new file mode 100644 index 0000000..4617ed8 --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# This depends on the ASCII character set. + +[ $'\e' = "$(printf "\033")" ] diff --git a/bin/sh/tests/parser/dollar-quote3.0 b/bin/sh/tests/parser/dollar-quote3.0 new file mode 100644 index 0000000..a7e6852 --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote3.0 @@ -0,0 +1,22 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.ISO8859-1 +export LC_CTYPE + +e= +for i in 0 1 2 3; do + for j in 0 1 2 3 4 5 6 7; do + for k in 0 1 2 3 4 5 6 7; do + case $i$j$k in + 000) continue ;; + esac + e="$e\\$i$j$k" + done + done +done +ee=`printf "$e"` +[ "${#ee}" = 255 ] || echo length bad + +# Start a new shell so the locale change is picked up. +[ "$(${SH} -c "printf %s \$'$e'")" = "$ee" ] diff --git a/bin/sh/tests/parser/dollar-quote4.0 b/bin/sh/tests/parser/dollar-quote4.0 new file mode 100644 index 0000000..f620af5 --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote4.0 @@ -0,0 +1,19 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=en_US.ISO8859-1 +export LC_CTYPE + +e= +for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do + for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do + case $i$j in + 00) continue ;; + esac + e="$e\x$i$j" + done +done + +# Start a new shell so the locale change is picked up. +ee="$(${SH} -c "printf %s \$'$e'")" +[ "${#ee}" = 255 ] || echo length bad diff --git a/bin/sh/tests/parser/dollar-quote5.0 b/bin/sh/tests/parser/dollar-quote5.0 new file mode 100644 index 0000000..c2c44ca --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote5.0 @@ -0,0 +1,12 @@ +# $FreeBSD$ + +# This depends on the ASCII character set. + +set -e + +[ $'\ca\cb\cc\cd\ce\cf\cg\ch\ci\cj\ck\cl\cm\cn\co\cp\cq\cr\cs\ct\cu\cv\cw\cx\cy\cz' = $'\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032' ] +[ $'\cA\cB\cC\cD\cE\cF\cG\cH\cI\cJ\cK\cL\cM\cN\cO\cP\cQ\cR\cS\cT\cU\cV\cW\cX\cY\cZ' = $'\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032' ] +[ $'\c[' = $'\033' ] +[ $'\c]' = $'\035' ] +[ $'\c^' = $'\036' ] +[ $'\c_' = $'\037' ] diff --git a/bin/sh/tests/parser/dollar-quote6.0 b/bin/sh/tests/parser/dollar-quote6.0 new file mode 100644 index 0000000..a4b1e3f --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote6.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# This depends on the ASCII character set. + +[ $'\c\\' = $'\034' ] diff --git a/bin/sh/tests/parser/dollar-quote7.0 b/bin/sh/tests/parser/dollar-quote7.0 new file mode 100644 index 0000000..c866b1a --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote7.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +set -e + +[ $'\u0024\u0040\u0060' = '$@`' ] +[ $'\U00000024\U00000040\U00000060' = '$@`' ] diff --git a/bin/sh/tests/parser/dollar-quote8.0 b/bin/sh/tests/parser/dollar-quote8.0 new file mode 100644 index 0000000..8f0b41a --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote8.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ + +[ $'hello\0' = hello ] +[ $'hello\0world' = hello ] +[ $'hello\0'$'world' = helloworld ] +[ $'hello\000' = hello ] +[ $'hello\000world' = hello ] +[ $'hello\000'$'world' = helloworld ] +[ $'hello\x00' = hello ] +[ $'hello\x00world' = hello ] +[ $'hello\x00'$'world' = helloworld ] diff --git a/bin/sh/tests/parser/dollar-quote9.0 b/bin/sh/tests/parser/dollar-quote9.0 new file mode 100644 index 0000000..df64b7d --- /dev/null +++ b/bin/sh/tests/parser/dollar-quote9.0 @@ -0,0 +1,8 @@ +# $FreeBSD$ + +# POSIX and C99 say D800-DFFF are undefined in a universal character name. +# We reject this but many other shells expand to something that looks like +# CESU-8. + +v=$( (eval ": \$'\uD800'") 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] diff --git a/bin/sh/tests/parser/empty-braces1.0 b/bin/sh/tests/parser/empty-braces1.0 new file mode 100644 index 0000000..5ab443c --- /dev/null +++ b/bin/sh/tests/parser/empty-braces1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ + +# Unfortunately, some scripts depend on the extension of allowing an empty +# pair of braces. + +{ } & +wait $! diff --git a/bin/sh/tests/parser/empty-cmd1.0 b/bin/sh/tests/parser/empty-cmd1.0 new file mode 100644 index 0000000..f8b01e9 --- /dev/null +++ b/bin/sh/tests/parser/empty-cmd1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! (eval ': || f()') 2>/dev/null diff --git a/bin/sh/tests/parser/for1.0 b/bin/sh/tests/parser/for1.0 new file mode 100644 index 0000000..eb7c881 --- /dev/null +++ b/bin/sh/tests/parser/for1.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ + +nl=' +' +list=' a b c' +for s1 in "$nl" " "; do + for s2 in "$nl" ";" ";$nl"; do + for s3 in "$nl" " "; do + r='' + eval "for i${s1}in ${list}${s2}do${s3}r=\"\$r \$i\"; done" + [ "$r" = "$list" ] || exit 1 + done + done +done +set -- $list +for s2 in "$nl" " "; do + for s3 in "$nl" " "; do + r='' + eval "for i${s2}do${s3}r=\"\$r \$i\"; done" + [ "$r" = "$list" ] || exit 1 + done +done +for s1 in "$nl" " "; do + for s2 in "$nl" ";" ";$nl"; do + for s3 in "$nl" " "; do + eval "for i${s1}in${s2}do${s3}exit 1; done" + done + done +done diff --git a/bin/sh/tests/parser/for2.0 b/bin/sh/tests/parser/for2.0 new file mode 100644 index 0000000..54ebfc3 --- /dev/null +++ b/bin/sh/tests/parser/for2.0 @@ -0,0 +1,15 @@ +# $FreeBSD$ + +# Common extensions to the 'for' syntax. + +nl=' +' +list=' a b c' +set -- $list +for s2 in ";" ";$nl"; do + for s3 in "$nl" " "; do + r='' + eval "for i${s2}do${s3}r=\"\$r \$i\"; done" + [ "$r" = "$list" ] || exit 1 + done +done diff --git a/bin/sh/tests/parser/func1.0 b/bin/sh/tests/parser/func1.0 new file mode 100644 index 0000000..4e887b2 --- /dev/null +++ b/bin/sh/tests/parser/func1.0 @@ -0,0 +1,25 @@ +# $FreeBSD$ +# POSIX does not require these bytes to work in function names, +# but making them all work seems a good goal. + +failures=0 +unset LC_ALL +export LC_CTYPE=en_US.ISO8859-1 +i=128 +set -f +while [ "$i" -le 255 ]; do + c=$(printf \\"$(printf %o "$i")") + ok=0 + eval "$c() { ok=1; }" + $c + ok1=$ok + ok=0 + "$c" + if [ "$ok" != 1 ] || [ "$ok1" != 1 ]; then + echo "Bad results for character $i" >&2 + : $((failures += 1)) + fi + unset -f $c + i=$((i+1)) +done +exit $((failures > 0)) diff --git a/bin/sh/tests/parser/func2.0 b/bin/sh/tests/parser/func2.0 new file mode 100644 index 0000000..5fd4dda --- /dev/null +++ b/bin/sh/tests/parser/func2.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +f() { return 42; } +f() { return 3; } & +f +[ $? -eq 42 ] diff --git a/bin/sh/tests/parser/func3.0 b/bin/sh/tests/parser/func3.0 new file mode 100644 index 0000000..dcac732 --- /dev/null +++ b/bin/sh/tests/parser/func3.0 @@ -0,0 +1,6 @@ +# $FreeBSD$ + +name=/var/empty/nosuch +f() { true; } <$name +name=/dev/null +f diff --git a/bin/sh/tests/parser/heredoc1.0 b/bin/sh/tests/parser/heredoc1.0 new file mode 100644 index 0000000..5ce3897 --- /dev/null +++ b/bin/sh/tests/parser/heredoc1.0 @@ -0,0 +1,85 @@ +# $FreeBSD$ + +failures=0 + +check() { + if ! eval "[ $* ]"; then + echo "Failed: $*" + : $((failures += 1)) + fi +} + +check '"$(cat </dev/null; command eval : hi \${r:=0} +exit ${r:-3} diff --git a/bin/sh/tests/parser/heredoc7.0 b/bin/sh/tests/parser/heredoc7.0 new file mode 100644 index 0000000..a150106 --- /dev/null +++ b/bin/sh/tests/parser/heredoc7.0 @@ -0,0 +1,19 @@ +# $FreeBSD$ + +# Some of these created malformed parse trees with null pointers for here +# documents, causing the here document writing process to segfault. +eval ': </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 0000000..55d7917 --- /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/bin/sh/tests/set-e/and1.0 b/bin/sh/tests/set-e/and1.0 new file mode 100644 index 0000000..607b7c3 --- /dev/null +++ b/bin/sh/tests/set-e/and1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +true && true diff --git a/bin/sh/tests/set-e/and2.1 b/bin/sh/tests/set-e/and2.1 new file mode 100644 index 0000000..78e203a --- /dev/null +++ b/bin/sh/tests/set-e/and2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +true && false +exit 0 diff --git a/bin/sh/tests/set-e/and3.0 b/bin/sh/tests/set-e/and3.0 new file mode 100644 index 0000000..9fafb1c --- /dev/null +++ b/bin/sh/tests/set-e/and3.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false && true +exit 0 diff --git a/bin/sh/tests/set-e/and4.0 b/bin/sh/tests/set-e/and4.0 new file mode 100644 index 0000000..25d0e61 --- /dev/null +++ b/bin/sh/tests/set-e/and4.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false && false +exit 0 diff --git a/bin/sh/tests/set-e/background1.0 b/bin/sh/tests/set-e/background1.0 new file mode 100644 index 0000000..21577f4 --- /dev/null +++ b/bin/sh/tests/set-e/background1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +false & diff --git a/bin/sh/tests/set-e/cmd1.0 b/bin/sh/tests/set-e/cmd1.0 new file mode 100644 index 0000000..67fdcbc --- /dev/null +++ b/bin/sh/tests/set-e/cmd1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +true diff --git a/bin/sh/tests/set-e/cmd2.1 b/bin/sh/tests/set-e/cmd2.1 new file mode 100644 index 0000000..7cd8b09 --- /dev/null +++ b/bin/sh/tests/set-e/cmd2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false +exit 0 diff --git a/bin/sh/tests/set-e/elif1.0 b/bin/sh/tests/set-e/elif1.0 new file mode 100644 index 0000000..6a5937d --- /dev/null +++ b/bin/sh/tests/set-e/elif1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +set -e +if false; then + : +elif false; then + : +fi diff --git a/bin/sh/tests/set-e/elif2.0 b/bin/sh/tests/set-e/elif2.0 new file mode 100644 index 0000000..9dbb4bf --- /dev/null +++ b/bin/sh/tests/set-e/elif2.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +set -e +if false; then + : +elif false; false; then + : +fi diff --git a/bin/sh/tests/set-e/eval1.0 b/bin/sh/tests/set-e/eval1.0 new file mode 100644 index 0000000..9b7f67b --- /dev/null +++ b/bin/sh/tests/set-e/eval1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +eval false || true diff --git a/bin/sh/tests/set-e/eval2.1 b/bin/sh/tests/set-e/eval2.1 new file mode 100644 index 0000000..8bb7f3a --- /dev/null +++ b/bin/sh/tests/set-e/eval2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +eval false +exit 0 diff --git a/bin/sh/tests/set-e/for1.0 b/bin/sh/tests/set-e/for1.0 new file mode 100644 index 0000000..67eb718 --- /dev/null +++ b/bin/sh/tests/set-e/for1.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ +set -e +f() { + for i in a b c; do + false + true + done +} +f || true diff --git a/bin/sh/tests/set-e/func1.0 b/bin/sh/tests/set-e/func1.0 new file mode 100644 index 0000000..3c6b704 --- /dev/null +++ b/bin/sh/tests/set-e/func1.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +set -e +f() { + false + true +} +f || true diff --git a/bin/sh/tests/set-e/func2.1 b/bin/sh/tests/set-e/func2.1 new file mode 100644 index 0000000..cc76d6e --- /dev/null +++ b/bin/sh/tests/set-e/func2.1 @@ -0,0 +1,7 @@ +# $FreeBSD$ +set -e +f() { + false + exit 0 +} +f diff --git a/bin/sh/tests/set-e/if1.0 b/bin/sh/tests/set-e/if1.0 new file mode 100644 index 0000000..36aa4bd --- /dev/null +++ b/bin/sh/tests/set-e/if1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +if false; then + : +fi diff --git a/bin/sh/tests/set-e/if2.0 b/bin/sh/tests/set-e/if2.0 new file mode 100644 index 0000000..4955408 --- /dev/null +++ b/bin/sh/tests/set-e/if2.0 @@ -0,0 +1,7 @@ +# $FreeBSD$ +set -e +# PR 28852 +if true; then + false && true +fi +exit 0 diff --git a/bin/sh/tests/set-e/if3.0 b/bin/sh/tests/set-e/if3.0 new file mode 100644 index 0000000..a4916a8 --- /dev/null +++ b/bin/sh/tests/set-e/if3.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +if false; false; then + : +fi diff --git a/bin/sh/tests/set-e/not1.0 b/bin/sh/tests/set-e/not1.0 new file mode 100644 index 0000000..21c089a --- /dev/null +++ b/bin/sh/tests/set-e/not1.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +! true +exit 0 diff --git a/bin/sh/tests/set-e/not2.0 b/bin/sh/tests/set-e/not2.0 new file mode 100644 index 0000000..7d93b4d --- /dev/null +++ b/bin/sh/tests/set-e/not2.0 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +! false +! eval false diff --git a/bin/sh/tests/set-e/or1.0 b/bin/sh/tests/set-e/or1.0 new file mode 100644 index 0000000..c2dcbe9 --- /dev/null +++ b/bin/sh/tests/set-e/or1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +true || false diff --git a/bin/sh/tests/set-e/or2.0 b/bin/sh/tests/set-e/or2.0 new file mode 100644 index 0000000..934e2a6 --- /dev/null +++ b/bin/sh/tests/set-e/or2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +false || true diff --git a/bin/sh/tests/set-e/or3.1 b/bin/sh/tests/set-e/or3.1 new file mode 100644 index 0000000..7a617a1 --- /dev/null +++ b/bin/sh/tests/set-e/or3.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false || false +exit 0 diff --git a/bin/sh/tests/set-e/pipe1.1 b/bin/sh/tests/set-e/pipe1.1 new file mode 100644 index 0000000..c0bad0f --- /dev/null +++ b/bin/sh/tests/set-e/pipe1.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +true | false +exit 0 diff --git a/bin/sh/tests/set-e/pipe2.0 b/bin/sh/tests/set-e/pipe2.0 new file mode 100644 index 0000000..1e25566 --- /dev/null +++ b/bin/sh/tests/set-e/pipe2.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +false | true diff --git a/bin/sh/tests/set-e/return1.0 b/bin/sh/tests/set-e/return1.0 new file mode 100644 index 0000000..961bd41 --- /dev/null +++ b/bin/sh/tests/set-e/return1.0 @@ -0,0 +1,11 @@ +# $FreeBSD$ +set -e + +# PR 77067, 85267 +f() { + return 1 + true +} + +f || true +exit 0 diff --git a/bin/sh/tests/set-e/semi1.1 b/bin/sh/tests/set-e/semi1.1 new file mode 100644 index 0000000..90476a9 --- /dev/null +++ b/bin/sh/tests/set-e/semi1.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +false; true +exit 0 diff --git a/bin/sh/tests/set-e/semi2.1 b/bin/sh/tests/set-e/semi2.1 new file mode 100644 index 0000000..8f510ac --- /dev/null +++ b/bin/sh/tests/set-e/semi2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +true; false +exit 0 diff --git a/bin/sh/tests/set-e/subshell1.0 b/bin/sh/tests/set-e/subshell1.0 new file mode 100644 index 0000000..8e5831b --- /dev/null +++ b/bin/sh/tests/set-e/subshell1.0 @@ -0,0 +1,3 @@ +# $FreeBSD$ +set -e +(true) diff --git a/bin/sh/tests/set-e/subshell2.1 b/bin/sh/tests/set-e/subshell2.1 new file mode 100644 index 0000000..619e98a --- /dev/null +++ b/bin/sh/tests/set-e/subshell2.1 @@ -0,0 +1,4 @@ +# $FreeBSD$ +set -e +(false) +exit 0 diff --git a/bin/sh/tests/set-e/until1.0 b/bin/sh/tests/set-e/until1.0 new file mode 100644 index 0000000..71ea7f2 --- /dev/null +++ b/bin/sh/tests/set-e/until1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +until false; do + break +done diff --git a/bin/sh/tests/set-e/until2.0 b/bin/sh/tests/set-e/until2.0 new file mode 100644 index 0000000..24ea276 --- /dev/null +++ b/bin/sh/tests/set-e/until2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +until false; false; do + break +done diff --git a/bin/sh/tests/set-e/until3.0 b/bin/sh/tests/set-e/until3.0 new file mode 100644 index 0000000..597db59 --- /dev/null +++ b/bin/sh/tests/set-e/until3.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ +set -e +f() { + until false; do + false + break + done +} +f || true diff --git a/bin/sh/tests/set-e/while1.0 b/bin/sh/tests/set-e/while1.0 new file mode 100644 index 0000000..371c94a --- /dev/null +++ b/bin/sh/tests/set-e/while1.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +while false; do + : +done diff --git a/bin/sh/tests/set-e/while2.0 b/bin/sh/tests/set-e/while2.0 new file mode 100644 index 0000000..124966c --- /dev/null +++ b/bin/sh/tests/set-e/while2.0 @@ -0,0 +1,5 @@ +# $FreeBSD$ +set -e +while false; false; do + : +done diff --git a/bin/sh/tests/set-e/while3.0 b/bin/sh/tests/set-e/while3.0 new file mode 100644 index 0000000..dd3c790 --- /dev/null +++ b/bin/sh/tests/set-e/while3.0 @@ -0,0 +1,9 @@ +# $FreeBSD$ +set -e +f() { + while true; do + false + break + done +} +f || true diff --git a/bin/test/Makefile b/bin/test/Makefile index 7c64b40..e9a0507 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 0000000..c5743de --- /dev/null +++ b/bin/test/tests/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/bin/test + +TAP_TESTS_SH= legacy_test + +.include diff --git a/bin/test/tests/legacy_test.sh b/bin/test/tests/legacy_test.sh new file mode 100644 index 0000000..9229551 --- /dev/null +++ b/bin/test/tests/legacy_test.sh @@ -0,0 +1,196 @@ +#!/bin/sh + +#- +# Copyright (c) June 1996 Wolfram Schneider . Berlin. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +# +# TEST.sh - check if test(1) or builtin test works +# +# $FreeBSD$ + +# force a specified test program, e.g. `env test=/bin/test sh regress.sh' +: ${test=test} + +t () +{ + # $1 -> exit code + # $2 -> $test expression + + count=$((count+1)) + # check for syntax errors + syntax="`eval $test $2 2>&1`" + ret=$? + if test -n "$syntax"; then + printf "not ok %s - (syntax error)\n" "$count $2" + elif [ "$ret" != "$1" ]; then + printf "not ok %s - (got $ret, expected $1)\n" "$count $2" + else + printf "ok %s\n" "$count $2" + fi +} + +count=0 +echo "1..130" + +t 0 'b = b' +t 0 'b == b' +t 1 'b != b' +t 0 '\( b = b \)' +t 0 '\( b == b \)' +t 1 '! \( b = b \)' +t 1 '! \( b == b \)' +t 1 '! -f /etc/passwd' + +t 0 '-h = -h' +t 0 '-o = -o' +t 1 '-f = h' +t 1 '-h = f' +t 1 '-o = f' +t 1 'f = -o' +t 0 '\( -h = -h \)' +t 1 '\( a = -h \)' +t 1 '\( -f = h \)' +t 0 '-h = -h -o a' +t 0 '\( -h = -h \) -o 1' +t 0 '-h = -h -o -h = -h' +t 0 '\( -h = -h \) -o \( -h = -h \)' +t 0 'roedelheim = roedelheim' +t 1 'potsdam = berlin-dahlem' + +t 0 '-d /' +t 0 '-d / -a a != b' +t 1 '-z "-z"' +t 0 '-n -n' + +t 0 '0' +t 0 '\( 0 \)' +t 0 '-E' +t 0 '-X -a -X' +t 0 '-XXX' +t 0 '\( -E \)' +t 0 'true -o X' +t 0 'true -o -X' +t 0 '\( \( \( a = a \) -o 1 \) -a 1 \) -a true' +t 1 '-h /' +t 0 '-r /' +t 1 '-w /' +t 0 '-x /bin/sh' +t 0 '-c /dev/null' +t 0 '-f /etc/passwd' +t 0 '-s /etc/passwd' + +t 1 '! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)' +t 0 '100 -eq 100' +t 0 '100 -lt 200' +t 1 '1000 -lt 200' +t 0 '1000 -gt 200' +t 0 '1000 -ge 200' +t 0 '1000 -ge 1000' +t 1 '2 -ne 2' +t 0 '0 -eq 0' +t 1 '-5 -eq 5' +t 0 '\( 0 -eq 0 \)' +t 1 '1 -eq 0 -o a = a -a 1 -eq 0 -o a = aa' + +t 1 '"" -o ""' +t 1 '"" -a ""' +t 1 '"a" -a ""' +t 0 '"a" -a ! ""' +t 1 '""' +t 0 '! ""' + +t 0 '!' +t 0 '\(' +t 0 '\)' + +t 1 '\( = \)' +t 0 '\( != \)' +t 0 '\( ! \)' +t 0 '\( \( \)' +t 0 '\( \) \)' +t 0 '! = !' +t 1 '! != !' +t 1 '-n = \)' +t 0 '! != \)' +t 1 '! = a' +t 0 '! != -n' +t 0 '! -c /etc/passwd' + +t 1 '! = = =' +t 0 '! = = \)' +t 0 '! "" -o ""' +t 1 '! "x" -o ""' +t 1 '! "" -o "x"' +t 1 '! "x" -o "x"' +t 0 '\( -f /etc/passwd \)' +t 0 '\( ! "" \)' +t 1 '\( ! -e \)' + +t 0 '0 -eq 0 -a -d /' +t 0 '-s = "" -o "" = ""' +t 0 '"" = "" -o -s = ""' +t 1 '-s = "" -o -s = ""' +t 0 '-z x -o x = "#" -o x = x' +t 1 '-z y -o y = "#" -o y = x' +t 0 '0 -ne 0 -o ! -f /' +t 0 '1 -ne 0 -o ! -f /etc/passwd' +t 1 '0 -ne 0 -o ! -f /etc/passwd' + +t 0 '-n =' +t 1 '-z =' +t 1 '! =' +t 0 '-n -eq' +t 1 '-z -eq' +t 1 '! -eq' +t 0 '-n -a' +t 1 '-z -a' +t 1 '! -a' +t 0 '-n -o' +t 1 '-z -o' +t 1 '! -o' +t 1 '! -n =' +t 0 '! -z =' +t 0 '! ! =' +t 1 '! -n -eq' +t 0 '! -z -eq' +t 0 '! ! -eq' +t 1 '! -n -a' +t 0 '! -z -a' +t 0 '! ! -a' +t 1 '! -n -o' +t 0 '! -z -o' +t 0 '! ! -o' +t 0 '\( -n = \)' +t 1 '\( -z = \)' +t 1 '\( ! = \)' +t 0 '\( -n -eq \)' +t 1 '\( -z -eq \)' +t 1 '\( ! -eq \)' +t 0 '\( -n -a \)' +t 1 '\( -z -a \)' +t 1 '\( ! -a \)' +t 0 '\( -n -o \)' +t 1 '\( -z -o \)' +t 1 '\( ! -o \)' diff --git a/bin/tests/Makefile b/bin/tests/Makefile new file mode 100644 index 0000000..7a59b10 --- /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 65f9090..b7ebbb9 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 1dcdbb3..0000000 --- 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 2c9ca59..0000000 --- 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.sh b/tools/regression/bin/date/regress.sh deleted file mode 100644 index 981bdd0..0000000 --- a/tools/regression/bin/date/regress.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/sh - -# -# Regression tests for date(1) -# -# Submitted by Edwin Groothuis -# -# $FreeBSD$ -# - -# -# These two date/times have been chosen carefully, they -# create both the single digit and double/multidigit version of -# the values. -# -# To create a new one, make sure you are using the UTC timezone! -# - -TEST1=3222243 # 1970-02-07 07:04:03 -TEST2=1005600000 # 2001-11-12 21:11:12 - -export LC_ALL=C -export TZ=UTC -count=0 - -check() -{ - S=$1 - A1=$2 - A2=$3 - - count=`expr ${count} + 1` - - if [ -z "${A2}" ]; then A2=${A1}; fi - - R=`date -r ${TEST1} +%${S}` - if [ "${R}" = "${A1}" ]; then - echo "ok ${S}{t1}" - else - echo "no ok ${S}{t1} - (got ${R}, expected ${A1})" - fi - - R=`date -r ${TEST2} +%${S}` - if [ "${R}" = "${A2}" ]; then - echo "ok ${S}{t2}" - else - echo "no ok ${S}{t2} - (got ${R}, expected ${A2})" - fi -} - -echo "1..78" - -check A Saturday Monday -check a Sat Mon -check B February November -check b Feb Nov -check C 19 20 -check c "Sat Feb 7 07:04:03 1970" "Mon Nov 12 21:20:00 2001" -check D 02/07/70 11/12/01 -check d 07 12 -check e " 7" 12 -check F "1970-02-07" "2001-11-12" -check G 1970 2001 -check g 70 01 -check H 07 21 -check h Feb Nov -check I 07 09 -check j 038 316 -check k " 7" 21 -check l " 7" " 9" -check M 04 20 -check m 02 11 -check p AM PM -check R 07:04 21:20 -check r "07:04:03 AM" "09:20:00 PM" -check S 03 00 -check s ${TEST1} ${TEST2} -check U 05 45 -check u 6 1 -check V 06 46 -check v " 7-Feb-1970" "12-Nov-2001" -check W 05 46 -check w 6 1 -check X "07:04:03" "21:20:00" -check x "02/07/70" "11/12/01" -check Y 1970 2001 -check y 70 01 -check Z UTC UTC -check z +0000 +0000 -check % % % -check + "Sat Feb 7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001" diff --git a/tools/regression/bin/date/regress.t b/tools/regression/bin/date/regress.t deleted file mode 100644 index c36d834..0000000 --- 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 2c9ca59..0000000 --- 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.sh b/tools/regression/bin/mv/regress.sh deleted file mode 100644 index d0a5e83..0000000 --- a/tools/regression/bin/mv/regress.sh +++ /dev/null @@ -1,296 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -# A directory in a device different from that where the tests are run -TMPDIR=/tmp/regress.$$ -COUNT=0 - -# Begin an individual test -begin() -{ - COUNT=`expr $COUNT + 1` - OK=1 - if [ -z "$FS" ] - then - NAME="$1" - else - NAME="$1 (cross device)" - fi - rm -rf testdir $TMPDIR/testdir - mkdir -p testdir $TMPDIR/testdir - cd testdir -} - -# End an individual test -end() -{ - if [ $OK = 1 ] - then - printf 'ok ' - else - printf 'not ok ' - fi - echo "$COUNT - $NAME" - cd .. - rm -rf testdir $TMPDIR/testdir -} - -# Make a file that can later be verified -mkf() -{ - CN=`basename $1` - echo "$CN-$CN" >$1 -} - -# Verify that the file specified is correct -ckf() -{ - if [ -f $2 ] && echo "$1-$1" | diff - $2 >/dev/null - then - ok - else - notok - fi -} - -# Make a fifo that can later be verified -mkp() -{ - mkfifo $1 -} - -# Verify that the file specified is correct -ckp() -{ - if [ -p $2 ] - then - ok - else - notok - fi -} - -# Make a directory that can later be verified -mkd() -{ - CN=`basename $1` - mkdir -p $1/"$CN-$CN" -} - -# Verify that the directory specified is correct -ckd() -{ - if [ -d $2/$1-$1 ] - then - ok - else - notok - fi -} - -# Verify that the specified file does not exist -# (is not there) -cknt() -{ - if [ -r $1 ] - then - notok - else - ok - fi -} - -# A part of a test succeeds -ok() -{ - : -} - -# A part of a test fails -notok() -{ - OK=0 -} - -# Verify that the exit code passed is for unsuccessful termination -ckfail() -{ - if [ $1 -gt 0 ] - then - ok - else - notok - fi -} - -# Verify that the exit code passed is for successful termination -ckok() -{ - if [ $1 -eq 0 ] - then - ok - else - notok - fi -} - -# Run all tests locally and across devices -echo 1..32 -for FS in '' $TMPDIR/testdir/ -do - begin 'Rename file' - mkf fa - mv fa ${FS}fb - ckok $? - ckf fa ${FS}fb - cknt fa - end - - begin 'Move files into directory' - mkf fa - mkf fb - mkdir -p ${FS}1/2/3 - mv fa fb ${FS}1/2/3 - ckok $? - ckf fa ${FS}1/2/3/fa - ckf fb ${FS}1/2/3/fb - cknt fa - cknt fb - end - - begin 'Move file from directory to file' - mkdir -p 1/2/3 - mkf 1/2/3/fa - mv 1/2/3/fa ${FS}fb - ckok $? - ckf fa ${FS}fb - cknt 1/2/3/fa - end - - begin 'Move file from directory to existing file' - mkdir -p 1/2/3 - mkf 1/2/3/fa - :> ${FS}fb - mv 1/2/3/fa ${FS}fb - ckok $? - ckf fa ${FS}fb - cknt 1/2/3/fa - end - - begin 'Move file from directory to existing directory' - mkdir -p 1/2/3 - mkf 1/2/3/fa - mkdir -p ${FS}db/fa - # Should fail per POSIX step 3a: - # Destination path is a file of type directory and - # source_file is not a file of type directory - mv 1/2/3/fa ${FS}db 2>/dev/null - ckfail $? - ckf fa 1/2/3/fa - end - - begin 'Move file from directory to directory' - mkdir -p da1/da2/da3 - mkdir -p ${FS}db1/db2/db3 - mkf da1/da2/da3/fa - mv da1/da2/da3/fa ${FS}db1/db2/db3/fb - ckok $? - ckf fa ${FS}db1/db2/db3/fb - cknt da1/da2/da3/fa - end - - begin 'Rename directory' - mkd da - mv da ${FS}db - ckok $? - ckd da ${FS}db - cknt da - end - - begin 'Move directory to directory name' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3 - mv da1/da2/da3/da ${FS}db1/db2/db3/db - ckok $? - ckd da ${FS}db1/db2/db3/db - cknt da1/da2/da3/da - end - - begin 'Move directory to directory' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3 - mv da1/da2/da3/da ${FS}db1/db2/db3 - ckok $? - ckd da ${FS}db1/db2/db3/da - cknt da1/da2/da3/da - end - - begin 'Move directory to existing empty directory' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3/da - mv da1/da2/da3/da ${FS}db1/db2/db3 - ckok $? - ckd da ${FS}db1/db2/db3/da - cknt da1/da2/da3/da - end - - begin 'Move directory to existing non-empty directory' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3/da/full - # Should fail (per the semantics of rename(2)) - mv da1/da2/da3/da ${FS}db1/db2/db3 2>/dev/null - ckfail $? - ckd da da1/da2/da3/da - end - - begin 'Move directory to existing file' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3 - :> ${FS}db1/db2/db3/da - # Should fail per POSIX step 3b: - # Destination path is a file not of type directory - # and source_file is a file of type directory - mv da1/da2/da3/da ${FS}db1/db2/db3/da 2>/dev/null - ckfail $? - ckd da da1/da2/da3/da - end - - begin 'Rename fifo' - mkp fa - mv fa ${FS}fb - ckok $? - ckp fa ${FS}fb - cknt fa - end - - begin 'Move fifos into directory' - mkp fa - mkp fb - mkdir -p ${FS}1/2/3 - mv fa fb ${FS}1/2/3 - ckok $? - ckp fa ${FS}1/2/3/fa - ckp fb ${FS}1/2/3/fb - cknt fa - cknt fb - end - - begin 'Move fifo from directory to fifo' - mkdir -p 1/2/3 - mkp 1/2/3/fa - mv 1/2/3/fa ${FS}fb - ckok $? - ckp fa ${FS}fb - cknt 1/2/3/fa - end - - begin 'Move fifo from directory to directory' - mkdir -p da1/da2/da3 - mkdir -p ${FS}db1/db2/db3 - mkp da1/da2/da3/fa - mv da1/da2/da3/fa ${FS}db1/db2/db3/fb - ckok $? - ckp fa ${FS}db1/db2/db3/fb - cknt da1/da2/da3/fa - end -done diff --git a/tools/regression/bin/mv/regress.t b/tools/regression/bin/mv/regress.t deleted file mode 100644 index c36d834..0000000 --- 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 6855bca..0000000 --- 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/pax/regress.t b/tools/regression/bin/pax/regress.t deleted file mode 100755 index 7c392cb..0000000 --- a/tools/regression/bin/pax/regress.t +++ /dev/null @@ -1,91 +0,0 @@ -#! /usr/bin/perl -# -# $FreeBSD$ - -use strict; -use warnings; - -use Test::More tests => 6; -use File::Path qw(rmtree mkpath); -use Cwd; - -my $n = 0; -sub create_file { - my $fn = shift; - - $n++; - (my $dir = $fn) =~ s,/[^/]+$,,; - mkpath $dir; - open my $fd, ">", $fn or die "$fn: $!"; - print $fd "file $n\n"; -} - - -ustar_pathnames: { SKIP: { - # Prove that pax breaks up ustar pathnames properly - - my $top = getcwd . "/ustar-pathnames-1"; - skip "Current path is too long", 6 if length $top > 92; - rmtree $top; - my $subdir = "x" . "x" x (92 - length $top); - my $work94 = "$top/$subdir"; - mkpath $work94; # $work is 94 characters long - - my $x49 = "x" x 49; - my $x50 = "x" x 50; - my $x60 = "x" x 60; - my $x95 = "x" x 95; - - my @paths = ( - "$work94/x099", # 99 chars - "$work94/xx100", # 100 chars - "$work94/xxx101", # 101 chars - "$work94/$x49/${x50}x199", # 199 chars - "$work94/$x49/${x50}xx200", # 200 chars - "$work94/$x49/${x50}xxx201", # 201 chars - "$work94/$x60/${x95}254", # 254 chars - "$work94/$x60/${x95}x255", # 255 chars - ); - - my @l = map { length } @paths; - - my $n = 0; - create_file $_ for @paths; - system "pax -wf ustar.ok $work94"; - ok($? == 0, "Wrote 'ustar.ok' containing files with lengths @l"); - - (my $orig = $top) =~ s,1$,2,; - rmtree $orig; - rename $top, $orig; - - system "pax -rf ustar.ok"; - ok($? == 0, "Restored 'ustar.ok' containing files with lengths @l"); - - system "diff -ru $orig $top"; - ok($? == 0, "Restored files are identical"); - - rmtree $top; - rename $orig, $top; - - # 256 chars (with components < 100 chars) should not work - push @paths, "$work94/x$x60/${x95}x256"; # 256 chars - push @l, length $paths[-1]; - create_file $paths[-1]; - system "pax -wf ustar.fail1 $work94"; - ok($?, "Failed to write 'ustar.fail1' containing files with lengths @l"); - - # Components with 100 chars shouldn't work - unlink $paths[-1]; - $paths[-1] = "$work94/${x95}xc100"; # 100 char filename - $l[-1] = length $paths[-1]; - create_file $paths[-1]; - system "pax -wf ustar.fail2 $work94"; - ok($?, "Failed to write 'ustar.fail2' with a 100 char filename"); - - unlink $paths[-1]; - $paths[-1] = "$work94/${x95}xc100/x"; # 100 char component - $l[-1] = length $paths[-1]; - create_file $paths[-1]; - system "pax -wf ustar.fail3 $work94"; - ok($?, "Failed to write 'ustar.fail3' with a 100 char component"); -}} diff --git a/tools/regression/bin/sh/Makefile b/tools/regression/bin/sh/Makefile deleted file mode 100644 index 82b9c09..0000000 --- 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/builtins/alias.0 b/tools/regression/bin/sh/builtins/alias.0 deleted file mode 100644 index d9b2796..0000000 --- a/tools/regression/bin/sh/builtins/alias.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ -set -e - -unalias -a -alias foo=bar -alias bar= -alias quux="1 2 3" -alias -alias foo diff --git a/tools/regression/bin/sh/builtins/alias.0.stdout b/tools/regression/bin/sh/builtins/alias.0.stdout deleted file mode 100644 index 52efaf0..0000000 --- a/tools/regression/bin/sh/builtins/alias.0.stdout +++ /dev/null @@ -1,4 +0,0 @@ -bar='' -foo=bar -quux='1 2 3' -foo=bar diff --git a/tools/regression/bin/sh/builtins/alias.1 b/tools/regression/bin/sh/builtins/alias.1 deleted file mode 100644 index 31403dc..0000000 --- a/tools/regression/bin/sh/builtins/alias.1 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -unalias -a -alias foo diff --git a/tools/regression/bin/sh/builtins/alias.1.stderr b/tools/regression/bin/sh/builtins/alias.1.stderr deleted file mode 100644 index c9f4011..0000000 --- a/tools/regression/bin/sh/builtins/alias.1.stderr +++ /dev/null @@ -1 +0,0 @@ -alias: foo: not found diff --git a/tools/regression/bin/sh/builtins/alias3.0 b/tools/regression/bin/sh/builtins/alias3.0 deleted file mode 100644 index fe65e31f..0000000 --- a/tools/regression/bin/sh/builtins/alias3.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ -set -e - -unalias -a -alias foo=bar -alias bar= -alias quux="1 2 3" -alias foo=bar -alias bar= -alias quux="1 2 3" -alias -alias foo diff --git a/tools/regression/bin/sh/builtins/alias3.0.stdout b/tools/regression/bin/sh/builtins/alias3.0.stdout deleted file mode 100644 index 52efaf0..0000000 --- a/tools/regression/bin/sh/builtins/alias3.0.stdout +++ /dev/null @@ -1,4 +0,0 @@ -bar='' -foo=bar -quux='1 2 3' -foo=bar diff --git a/tools/regression/bin/sh/builtins/alias4.0 b/tools/regression/bin/sh/builtins/alias4.0 deleted file mode 100644 index 3d5efec..0000000 --- a/tools/regression/bin/sh/builtins/alias4.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -unalias -a -alias -- diff --git a/tools/regression/bin/sh/builtins/break1.0 b/tools/regression/bin/sh/builtins/break1.0 deleted file mode 100644 index ba0cbb4..0000000 --- a/tools/regression/bin/sh/builtins/break1.0 +++ /dev/null @@ -1,16 +0,0 @@ -# $FreeBSD$ - -if [ "$1" != nested ]; then - while :; do - set -- nested - . "$0" - echo bad2 - exit 2 - done - exit 0 -fi -# To trigger the bug, the following commands must be at the top level, -# with newlines in between. -break -echo bad1 -exit 1 diff --git a/tools/regression/bin/sh/builtins/break2.0 b/tools/regression/bin/sh/builtins/break2.0 deleted file mode 100644 index ff52dd3..0000000 --- a/tools/regression/bin/sh/builtins/break2.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -# It is not immediately obvious that this should work, and someone probably -# relies on it. - -while :; do - trap 'break' USR1 - kill -USR1 $$ - echo bad - exit 1 -done -echo good diff --git a/tools/regression/bin/sh/builtins/break2.0.stdout b/tools/regression/bin/sh/builtins/break2.0.stdout deleted file mode 100644 index 12799cc..0000000 --- a/tools/regression/bin/sh/builtins/break2.0.stdout +++ /dev/null @@ -1 +0,0 @@ -good diff --git a/tools/regression/bin/sh/builtins/break3.0 b/tools/regression/bin/sh/builtins/break3.0 deleted file mode 100644 index 10a5ca8..0000000 --- a/tools/regression/bin/sh/builtins/break3.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ - -# We accept this and people might rely on it. -# However, various other shells do not accept it. - -f() { - break - echo bad1 -} - -while :; do - f - echo bad2 - exit 2 -done diff --git a/tools/regression/bin/sh/builtins/break4.4 b/tools/regression/bin/sh/builtins/break4.4 deleted file mode 100644 index d52ff52..0000000 --- a/tools/regression/bin/sh/builtins/break4.4 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -# Although this is not specified by POSIX, some configure scripts (gawk 4.1.0) -# appear to depend on it. - -break -exit 4 diff --git a/tools/regression/bin/sh/builtins/break5.4 b/tools/regression/bin/sh/builtins/break5.4 deleted file mode 100644 index 7df8e18..0000000 --- a/tools/regression/bin/sh/builtins/break5.4 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -# Although this is not specified by POSIX, some configure scripts (gawk 4.1.0) -# appear to depend on it. -# In some uncommitted code, the subshell environment corrupted the outer -# shell environment's state. - -(for i in a b c; do - exit 3 -done) -break -exit 4 diff --git a/tools/regression/bin/sh/builtins/builtin1.0 b/tools/regression/bin/sh/builtins/builtin1.0 deleted file mode 100644 index b608385..0000000 --- a/tools/regression/bin/sh/builtins/builtin1.0 +++ /dev/null @@ -1,31 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -builtin : || echo "Bad return code at $LINENO" -builtin true || echo "Bad return code at $LINENO" -builtin ls 2>/dev/null && echo "Bad return code at $LINENO" -check '"$(builtin pwd)" = "$(pwd)"' -check '-z "$(builtin :)"' -check '-z "$(builtin true)"' -check '-z "$( (builtin nosuchtool) 2>/dev/null)"' -check '-z "$(builtin nosuchtool 2>/dev/null)"' -check '-z "$(builtin nosuchtool 2>/dev/null; :)"' -check '-z "$( (builtin ls) 2>/dev/null)"' -check '-z "$(builtin ls 2>/dev/null)"' -check '-z "$(builtin ls 2>/dev/null; :)"' -check '-n "$( (builtin nosuchtool) 2>&1)"' -check '-n "$(builtin nosuchtool 2>&1)"' -check '-n "$(builtin nosuchtool 2>&1; :)"' -check '-n "$( (builtin ls) 2>&1)"' -check '-n "$(builtin ls 2>&1)"' -check '-n "$(builtin ls 2>&1; :)"' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/case1.0 b/tools/regression/bin/sh/builtins/case1.0 deleted file mode 100644 index 860fc67..0000000 --- a/tools/regression/bin/sh/builtins/case1.0 +++ /dev/null @@ -1,13 +0,0 @@ -#$FreeBSD$ -f() -{ - false - case $1 in - foo) true ;; - bar) false ;; - esac -} - -f foo || exit 1 -f bar && exit 1 -f quux || exit 1 diff --git a/tools/regression/bin/sh/builtins/case10.0 b/tools/regression/bin/sh/builtins/case10.0 deleted file mode 100644 index a627b5c..0000000 --- a/tools/regression/bin/sh/builtins/case10.0 +++ /dev/null @@ -1,16 +0,0 @@ -# $FreeBSD$ - -case ! in -[\!!]) ;; -*) echo Failed at $LINENO ;; -esac - -case ! in -['!'!]) ;; -*) echo Failed at $LINENO ;; -esac - -case ! in -["!"!]) ;; -*) echo Failed at $LINENO ;; -esac diff --git a/tools/regression/bin/sh/builtins/case11.0 b/tools/regression/bin/sh/builtins/case11.0 deleted file mode 100644 index 0e66e11..0000000 --- a/tools/regression/bin/sh/builtins/case11.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -false -case x in -*) -esac diff --git a/tools/regression/bin/sh/builtins/case12.0 b/tools/regression/bin/sh/builtins/case12.0 deleted file mode 100644 index 2a442ba..0000000 --- a/tools/regression/bin/sh/builtins/case12.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -false -case x in -y) -esac diff --git a/tools/regression/bin/sh/builtins/case13.0 b/tools/regression/bin/sh/builtins/case13.0 deleted file mode 100644 index 78f4e9b..0000000 --- a/tools/regression/bin/sh/builtins/case13.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -case ^ in -[\^^]) ;; -*) echo Failed at $LINENO ;; -esac - -case s in -[\^^]) echo Failed at $LINENO ;; -[s\]]) ;; -*) echo Failed at $LINENO ;; -esac diff --git a/tools/regression/bin/sh/builtins/case14.0 b/tools/regression/bin/sh/builtins/case14.0 deleted file mode 100644 index 0338e8a..0000000 --- a/tools/regression/bin/sh/builtins/case14.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -case `false` in -no) exit 3 ;; -esac diff --git a/tools/regression/bin/sh/builtins/case15.0 b/tools/regression/bin/sh/builtins/case15.0 deleted file mode 100644 index 09b0e11..0000000 --- a/tools/regression/bin/sh/builtins/case15.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -case x in -`false`) exit 3 ;; -esac diff --git a/tools/regression/bin/sh/builtins/case16.0 b/tools/regression/bin/sh/builtins/case16.0 deleted file mode 100644 index 2430302..0000000 --- a/tools/regression/bin/sh/builtins/case16.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -f() { return 42; } -f -case x in -x) [ $? = 42 ] ;; -esac diff --git a/tools/regression/bin/sh/builtins/case17.0 b/tools/regression/bin/sh/builtins/case17.0 deleted file mode 100644 index ed1d25f..0000000 --- a/tools/regression/bin/sh/builtins/case17.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -! case x in x) false ;& y) esac diff --git a/tools/regression/bin/sh/builtins/case18.0 b/tools/regression/bin/sh/builtins/case18.0 deleted file mode 100644 index 470253f..0000000 --- a/tools/regression/bin/sh/builtins/case18.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -case x$(false) in -x) ;& -y) [ $? != 0 ] ;; -z) false ;; -esac diff --git a/tools/regression/bin/sh/builtins/case19.0 b/tools/regression/bin/sh/builtins/case19.0 deleted file mode 100644 index 215066a..0000000 --- a/tools/regression/bin/sh/builtins/case19.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -[ "`case x in -x) false ;& -y) ;& -z) echo $? ;; -esac`" != 0 ] diff --git a/tools/regression/bin/sh/builtins/case2.0 b/tools/regression/bin/sh/builtins/case2.0 deleted file mode 100644 index e319148..0000000 --- a/tools/regression/bin/sh/builtins/case2.0 +++ /dev/null @@ -1,106 +0,0 @@ -# Generated by ./test-fnmatch -s 1, do not edit. -# $FreeBSD$ -failures= -failed() { printf '%s\n' "Failed: $1 '$2' '$3'"; failures=x$failures; } -testmatch() { eval "case \$2 in ''$1) ;; *) failed testmatch \"\$@\";; esac"; } -testnomatch() { eval "case \$2 in ''$1) failed testnomatch \"\$@\";; esac"; } -testmatch '' '' -testmatch 'a' 'a' -testnomatch 'a' 'b' -testnomatch 'a' 'A' -testmatch '*' 'a' -testmatch '*' 'aa' -testmatch '*a' 'a' -testnomatch '*a' 'b' -testnomatch '*a*' 'b' -testmatch '*a*b*' 'ab' -testmatch '*a*b*' 'qaqbq' -testmatch '*a*bb*' 'qaqbqbbq' -testmatch '*a*bc*' 'qaqbqbcq' -testmatch '*a*bb*' 'qaqbqbb' -testmatch '*a*bc*' 'qaqbqbc' -testmatch '*a*bb' 'qaqbqbb' -testmatch '*a*bc' 'qaqbqbc' -testnomatch '*a*bb' 'qaqbqbbq' -testnomatch '*a*bc' 'qaqbqbcq' -testnomatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaa' -testmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaa' -testmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaaa' -testnomatch '.*.*.*.*.*.*.*.*.*.*' '.........' -testmatch '.*.*.*.*.*.*.*.*.*.*' '..........' -testmatch '.*.*.*.*.*.*.*.*.*.*' '...........' -testnomatch '*?*?*?*?*?*?*?*?*?*?*' '123456789' -testnomatch '??????????*' '123456789' -testnomatch '*??????????' '123456789' -testmatch '*?*?*?*?*?*?*?*?*?*?*' '1234567890' -testmatch '??????????*' '1234567890' -testmatch '*??????????' '1234567890' -testmatch '*?*?*?*?*?*?*?*?*?*?*' '12345678901' -testmatch '??????????*' '12345678901' -testmatch '*??????????' '12345678901' -testmatch '[x]' 'x' -testmatch '[*]' '*' -testmatch '[?]' '?' -testmatch '[' '[' -testmatch '[[]' '[' -testnomatch '[[]' 'x' -testnomatch '[*]' '' -testnomatch '[*]' 'x' -testnomatch '[?]' 'x' -testmatch '*[*]*' 'foo*foo' -testnomatch '*[*]*' 'foo' -testmatch '[0-9]' '0' -testmatch '[0-9]' '5' -testmatch '[0-9]' '9' -testnomatch '[0-9]' '/' -testnomatch '[0-9]' ':' -testnomatch '[0-9]' '*' -testnomatch '[!0-9]' '0' -testnomatch '[!0-9]' '5' -testnomatch '[!0-9]' '9' -testmatch '[!0-9]' '/' -testmatch '[!0-9]' ':' -testmatch '[!0-9]' '*' -testmatch '*[0-9]' 'a0' -testmatch '*[0-9]' 'a5' -testmatch '*[0-9]' 'a9' -testnomatch '*[0-9]' 'a/' -testnomatch '*[0-9]' 'a:' -testnomatch '*[0-9]' 'a*' -testnomatch '*[!0-9]' 'a0' -testnomatch '*[!0-9]' 'a5' -testnomatch '*[!0-9]' 'a9' -testmatch '*[!0-9]' 'a/' -testmatch '*[!0-9]' 'a:' -testmatch '*[!0-9]' 'a*' -testmatch '*[0-9]' 'a00' -testmatch '*[0-9]' 'a55' -testmatch '*[0-9]' 'a99' -testmatch '*[0-9]' 'a0a0' -testmatch '*[0-9]' 'a5a5' -testmatch '*[0-9]' 'a9a9' -testmatch '\*' '*' -testmatch '\?' '?' -testmatch '\[x]' '[x]' -testmatch '\[' '[' -testmatch '\\' '\' -testmatch '*\**' 'foo*foo' -testnomatch '*\**' 'foo' -testmatch '*\\*' 'foo\foo' -testnomatch '*\\*' 'foo' -testmatch '\(' '(' -testmatch '\a' 'a' -testnomatch '\*' 'a' -testnomatch '\?' 'a' -testnomatch '\*' '\*' -testnomatch '\?' '\?' -testnomatch '\[x]' '\[x]' -testnomatch '\[x]' '\x' -testnomatch '\[' '\[' -testnomatch '\(' '\(' -testnomatch '\a' '\a' -testmatch '.*' '.' -testmatch '.*' '..' -testmatch '.*' '.a' -testmatch 'a*' 'a.' -[ -z "$failures" ] diff --git a/tools/regression/bin/sh/builtins/case3.0 b/tools/regression/bin/sh/builtins/case3.0 deleted file mode 100644 index 42e53d6..0000000 --- a/tools/regression/bin/sh/builtins/case3.0 +++ /dev/null @@ -1,95 +0,0 @@ -# Generated by ./test-fnmatch -s 2, do not edit. -# $FreeBSD$ -failures= -failed() { printf '%s\n' "Failed: $1 '$2' '$3'"; failures=x$failures; } -# We do not treat a backslash specially in this case, -# but this is not the case in all shells. -netestmatch() { case $2 in $1) ;; *) failed netestmatch "$@";; esac; } -netestnomatch() { case $2 in $1) failed netestnomatch "$@";; esac; } -netestmatch '' '' -netestmatch 'a' 'a' -netestnomatch 'a' 'b' -netestnomatch 'a' 'A' -netestmatch '*' 'a' -netestmatch '*' 'aa' -netestmatch '*a' 'a' -netestnomatch '*a' 'b' -netestnomatch '*a*' 'b' -netestmatch '*a*b*' 'ab' -netestmatch '*a*b*' 'qaqbq' -netestmatch '*a*bb*' 'qaqbqbbq' -netestmatch '*a*bc*' 'qaqbqbcq' -netestmatch '*a*bb*' 'qaqbqbb' -netestmatch '*a*bc*' 'qaqbqbc' -netestmatch '*a*bb' 'qaqbqbb' -netestmatch '*a*bc' 'qaqbqbc' -netestnomatch '*a*bb' 'qaqbqbbq' -netestnomatch '*a*bc' 'qaqbqbcq' -netestnomatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaa' -netestmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaa' -netestmatch '*a*a*a*a*a*a*a*a*a*a*' 'aaaaaaaaaaa' -netestnomatch '.*.*.*.*.*.*.*.*.*.*' '.........' -netestmatch '.*.*.*.*.*.*.*.*.*.*' '..........' -netestmatch '.*.*.*.*.*.*.*.*.*.*' '...........' -netestnomatch '*?*?*?*?*?*?*?*?*?*?*' '123456789' -netestnomatch '??????????*' '123456789' -netestnomatch '*??????????' '123456789' -netestmatch '*?*?*?*?*?*?*?*?*?*?*' '1234567890' -netestmatch '??????????*' '1234567890' -netestmatch '*??????????' '1234567890' -netestmatch '*?*?*?*?*?*?*?*?*?*?*' '12345678901' -netestmatch '??????????*' '12345678901' -netestmatch '*??????????' '12345678901' -netestmatch '[x]' 'x' -netestmatch '[*]' '*' -netestmatch '[?]' '?' -netestmatch '[' '[' -netestmatch '[[]' '[' -netestnomatch '[[]' 'x' -netestnomatch '[*]' '' -netestnomatch '[*]' 'x' -netestnomatch '[?]' 'x' -netestmatch '*[*]*' 'foo*foo' -netestnomatch '*[*]*' 'foo' -netestmatch '[0-9]' '0' -netestmatch '[0-9]' '5' -netestmatch '[0-9]' '9' -netestnomatch '[0-9]' '/' -netestnomatch '[0-9]' ':' -netestnomatch '[0-9]' '*' -netestnomatch '[!0-9]' '0' -netestnomatch '[!0-9]' '5' -netestnomatch '[!0-9]' '9' -netestmatch '[!0-9]' '/' -netestmatch '[!0-9]' ':' -netestmatch '[!0-9]' '*' -netestmatch '*[0-9]' 'a0' -netestmatch '*[0-9]' 'a5' -netestmatch '*[0-9]' 'a9' -netestnomatch '*[0-9]' 'a/' -netestnomatch '*[0-9]' 'a:' -netestnomatch '*[0-9]' 'a*' -netestnomatch '*[!0-9]' 'a0' -netestnomatch '*[!0-9]' 'a5' -netestnomatch '*[!0-9]' 'a9' -netestmatch '*[!0-9]' 'a/' -netestmatch '*[!0-9]' 'a:' -netestmatch '*[!0-9]' 'a*' -netestmatch '*[0-9]' 'a00' -netestmatch '*[0-9]' 'a55' -netestmatch '*[0-9]' 'a99' -netestmatch '*[0-9]' 'a0a0' -netestmatch '*[0-9]' 'a5a5' -netestmatch '*[0-9]' 'a9a9' -netestmatch '\*' '\*' -netestmatch '\?' '\?' -netestmatch '\' '\' -netestnomatch '\\' '\' -netestmatch '\\' '\\' -netestmatch '*\*' 'foo\foo' -netestnomatch '*\*' 'foo' -netestmatch '.*' '.' -netestmatch '.*' '..' -netestmatch '.*' '.a' -netestmatch 'a*' 'a.' -[ -z "$failures" ] diff --git a/tools/regression/bin/sh/builtins/case4.0 b/tools/regression/bin/sh/builtins/case4.0 deleted file mode 100644 index 18219f5..0000000 --- a/tools/regression/bin/sh/builtins/case4.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -set -- "*" -case x in -"$1") echo failed ;; -esac diff --git a/tools/regression/bin/sh/builtins/case5.0 b/tools/regression/bin/sh/builtins/case5.0 deleted file mode 100644 index 8c6db5a..0000000 --- a/tools/regression/bin/sh/builtins/case5.0 +++ /dev/null @@ -1,57 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.UTF-8 -export LC_CTYPE - -c1=e -# a umlaut -c2=$(printf '\303\244') -# euro sign -c3=$(printf '\342\202\254') -# some sort of 't' outside BMP -c4=$(printf '\360\235\225\245') - -ok=0 -case $c1$c2$c3$c4 in -*) ok=1 ;; -esac -if [ $ok = 0 ]; then - echo wrong at $LINENO - exit 3 -fi - -case $c1$c2$c3$c4 in -$c1$c2$c3$c4) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -"$c1$c2$c3$c4") ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -????) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1.$c2.$c3.$c4 in -?.?.?.?) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -[!a][!b][!c][!d]) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -[$c1][$c2][$c3][$c4]) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -["$c1"]["$c2"]["$c3"]["$c4"]) ;; -*) echo wrong at $LINENO ;; -esac diff --git a/tools/regression/bin/sh/builtins/case6.0 b/tools/regression/bin/sh/builtins/case6.0 deleted file mode 100644 index 8d79183..0000000 --- a/tools/regression/bin/sh/builtins/case6.0 +++ /dev/null @@ -1,52 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=de_DE.ISO8859-1 -export LC_CTYPE - -c1=e -# o umlaut -c2=$(printf '\366') -# non-break space -c3=$(printf '\240') -c4=$(printf '\240') -# $c2$c3$c4 form one utf-8 character - -ok=0 -case $c1$c2$c3$c4 in -*) ok=1 ;; -esac -if [ $ok = 0 ]; then - echo wrong at $LINENO - exit 3 -fi - -case $c1$c2$c3$c4 in -$c1$c2$c3$c4) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -"$c1$c2$c3$c4") ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -????) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -[!$c2][!b][!c][!d]) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -[$c1][$c2][$c3][$c4]) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2$c3$c4 in -["$c1"]["$c2"]["$c3"]["$c4"]) ;; -*) echo wrong at $LINENO ;; -esac diff --git a/tools/regression/bin/sh/builtins/case7.0 b/tools/regression/bin/sh/builtins/case7.0 deleted file mode 100644 index 96b9de6..0000000 --- a/tools/regression/bin/sh/builtins/case7.0 +++ /dev/null @@ -1,24 +0,0 @@ -# $FreeBSD$ - -# Character ranges in a locale other than the POSIX locale, not specified -# by POSIX. - -unset LC_ALL -LC_CTYPE=de_DE.ISO8859-1 -export LC_CTYPE -LC_COLLATE=de_DE.ISO8859-1 -export LC_COLLATE - -c1=e -# o umlaut -c2=$(printf '\366') - -case $c1$c2 in -[a-z][a-z]) ;; -*) echo wrong at $LINENO ;; -esac - -case $c1$c2 in -[a-f][n-p]) ;; -*) echo wrong at $LINENO ;; -esac diff --git a/tools/regression/bin/sh/builtins/case8.0 b/tools/regression/bin/sh/builtins/case8.0 deleted file mode 100644 index 8d9f8b6..0000000 --- a/tools/regression/bin/sh/builtins/case8.0 +++ /dev/null @@ -1,32 +0,0 @@ -# $FreeBSD$ - -case aZ_ in -[[:alpha:]_][[:upper:]_][[:alpha:]_]) ;; -*) echo Failed at $LINENO ;; -esac - -case ' ' in -[[:alpha:][:digit:]]) echo Failed at $LINENO ;; -[![:alpha:][:digit:]]) ;; -*) echo Failed at $LINENO ;; -esac - -case '.X.' in -*[[:lower:]]*) echo Failed at $LINENO ;; -*[[:upper:]]*) ;; -*) echo Failed at $LINENO ;; -esac - -case ' ' in -[![:print:]]) echo Failed at $LINENO ;; -[![:alnum:][:punct:]]) ;; -*) echo Failed at $LINENO ;; -esac - -case ' -' in -[[:print:]]) echo Failed at $LINENO ;; -[' -'[:digit:]]) ;; -*) echo Failed at $LINENO ;; -esac diff --git a/tools/regression/bin/sh/builtins/case9.0 b/tools/regression/bin/sh/builtins/case9.0 deleted file mode 100644 index 476caec..0000000 --- a/tools/regression/bin/sh/builtins/case9.0 +++ /dev/null @@ -1,39 +0,0 @@ -# $FreeBSD$ - -errors=0 - -f() { - result= - case $1 in - a) result=${result}a ;; - b) result=${result}b ;& - c) result=${result}c ;& - d) result=${result}d ;; - e) result=${result}e ;& - esac -} - -check() { - f "$1" - if [ "$result" != "$2" ]; then - printf "For %s, expected %s got %s\n" "$1" "$2" "$result" - errors=$((errors + 1)) - fi -} - -check '' '' -check a a -check b bcd -check c cd -check d d -check e e - -if ! (case 1 in - 1) false ;& - 2) true ;; -esac) then - echo "Subshell bad" - errors=$((errors + 1)) -fi - -exit $((errors != 0)) diff --git a/tools/regression/bin/sh/builtins/cd1.0 b/tools/regression/bin/sh/builtins/cd1.0 deleted file mode 100644 index bc5108e..0000000 --- a/tools/regression/bin/sh/builtins/cd1.0 +++ /dev/null @@ -1,30 +0,0 @@ -# $FreeBSD$ -set -e - -P=${TMPDIR:-/tmp} -cd $P -T=$(mktemp -d sh-test.XXXXXX) - -chmod 0 $T -if [ `id -u` -ne 0 ]; then - # Root can always cd, regardless of directory permissions. - cd -L $T 2>/dev/null && exit 1 - [ "$PWD" = "$P" ] - [ "$(pwd)" = "$P" ] - cd -P $T 2>/dev/null && exit 1 - [ "$PWD" = "$P" ] - [ "$(pwd)" = "$P" ] -fi - -chmod 755 $T -cd $T -mkdir -p 1/2/3 -ln -s 1/2 link1 -ln -s 2/3 1/link2 -(cd -L 1/../1 && [ "$(pwd -L)" = "$P/$T/1" ]) -(cd -L link1 && [ "$(pwd -L)" = "$P/$T/link1" ]) -(cd -L link1 && [ "$(pwd -P)" = "$P/$T/1/2" ]) -(cd -P link1 && [ "$(pwd -L)" = "$P/$T/1/2" ]) -(cd -P link1 && [ "$(pwd -P)" = "$P/$T/1/2" ]) - -rm -rf ${P}/${T} diff --git a/tools/regression/bin/sh/builtins/cd2.0 b/tools/regression/bin/sh/builtins/cd2.0 deleted file mode 100644 index f2b6416..0000000 --- a/tools/regression/bin/sh/builtins/cd2.0 +++ /dev/null @@ -1,16 +0,0 @@ -# $FreeBSD$ -set -e - -L=$(getconf PATH_MAX / 2>/dev/null) || L=4096 -[ "$L" -lt 100000 ] 2>/dev/null || L=4096 -L=$((L+100)) -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf ${T}' 0 -cd $T -D=$T -while [ ${#D} -lt $L ]; do - mkdir veryverylongdirectoryname - cd veryverylongdirectoryname - D=$D/veryverylongdirectoryname -done -[ $(pwd | wc -c) -eq $((${#D} + 1)) ] # +\n diff --git a/tools/regression/bin/sh/builtins/cd3.0 b/tools/regression/bin/sh/builtins/cd3.0 deleted file mode 100644 index 7729c54..0000000 --- a/tools/regression/bin/sh/builtins/cd3.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -# If fully successful, cd -Pe must be like cd -P. - -set -e - -cd "${TMPDIR:-/tmp}" -cd -Pe / -[ "$PWD" = / ] -[ "$(pwd)" = / ] -cd "${TMPDIR:-/tmp}" -cd -eP / -[ "$PWD" = / ] -[ "$(pwd)" = / ] - -set +e - -# If cd -Pe cannot chdir, the exit status must be greater than 1. - -v=$( (cd -Pe /var/empty/nonexistent) 2>&1 >/dev/null) -[ $? -gt 1 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/builtins/cd4.0 b/tools/regression/bin/sh/builtins/cd4.0 deleted file mode 100644 index df3a9a4..0000000 --- a/tools/regression/bin/sh/builtins/cd4.0 +++ /dev/null @@ -1,38 +0,0 @@ -# $FreeBSD$ - -# This test assumes that whatever mechanism cd -P uses to determine the -# pathname to the current directory if it is longer than PATH_MAX requires -# read permission on all parent directories. It also works if this -# requirement always applies. - -set -e -L=$(getconf PATH_MAX / 2>/dev/null) || L=4096 -[ "$L" -lt 100000 ] 2>/dev/null || L=4096 -L=$((L+100)) -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'chmod u+r ${T}; rm -rf ${T}' 0 -cd -Pe $T -D=$(pwd) -chmod u-r "$D" -if [ -r "$D" ]; then - # Running as root, cannot test. - exit 0 -fi -set +e -while [ ${#D} -lt $L ]; do - mkdir veryverylongdirectoryname || exit - cd -Pe veryverylongdirectoryname 2>/dev/null - r=$? - [ $r -gt 1 ] && exit $r - if [ $r -eq 1 ]; then - # Verify that the directory was changed correctly. - cd -Pe .. || exit - [ "$(pwd)" = "$D" ] || exit - # Verify that omitting -e results in success. - cd -P veryverylongdirectoryname 2>/dev/null || exit - exit 0 - fi - D=$D/veryverylongdirectoryname -done -echo "cd -Pe never returned 1" -exit 0 diff --git a/tools/regression/bin/sh/builtins/cd5.0 b/tools/regression/bin/sh/builtins/cd5.0 deleted file mode 100644 index 3dff604..0000000 --- a/tools/regression/bin/sh/builtins/cd5.0 +++ /dev/null @@ -1,23 +0,0 @@ -# $FreeBSD$ - -set -e -T=$(mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXX") -trap 'rm -rf "$T"' 0 - -cd -P "$T" -D=$(pwd) - -mkdir a a/1 b b/1 b/2 - -CDPATH=$D/a: -# Basic test. -cd 1 >/dev/null -[ "$(pwd)" = "$D/a/1" ] -# Test that the current directory is not checked before CDPATH. -cd "$D/b" -cd 1 >/dev/null -[ "$(pwd)" = "$D/a/1" ] -# Test not using a CDPATH entry. -cd "$D/b" -cd 2 -[ "$(pwd)" = "$D/b/2" ] diff --git a/tools/regression/bin/sh/builtins/cd6.0 b/tools/regression/bin/sh/builtins/cd6.0 deleted file mode 100644 index 083a061..0000000 --- a/tools/regression/bin/sh/builtins/cd6.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -set -e -cd -P /bin -d=$PWD -CDPATH=/: -cd -P . -[ "$d" = "$PWD" ] -cd -P ./ -[ "$d" = "$PWD" ] diff --git a/tools/regression/bin/sh/builtins/cd7.0 b/tools/regression/bin/sh/builtins/cd7.0 deleted file mode 100644 index 9adda86..0000000 --- a/tools/regression/bin/sh/builtins/cd7.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ - -set -e -cd /usr/bin -[ "$PWD" = /usr/bin ] -CDPATH=/: -cd . -[ "$PWD" = /usr/bin ] -cd ./ -[ "$PWD" = /usr/bin ] -cd .. -[ "$PWD" = /usr ] -cd /usr/bin -cd ../ -[ "$PWD" = /usr ] diff --git a/tools/regression/bin/sh/builtins/cd8.0 b/tools/regression/bin/sh/builtins/cd8.0 deleted file mode 100644 index a68f77f..0000000 --- a/tools/regression/bin/sh/builtins/cd8.0 +++ /dev/null @@ -1,26 +0,0 @@ -# $FreeBSD$ - -# The exact wording of the error message is not standardized, but giving -# a description of the errno is useful. - -LC_ALL=C -export LC_ALL -r=0 - -t() { - exec 3>&1 - errmsg=`cd "$1" 2>&1 >&3 3>&-` - exec 3>&- - case $errmsg in - *[Nn]ot\ a\ directory*) - ;; - *) - printf "Wrong error message for %s: %s\n" "$1" "$errmsg" - r=3 - ;; - esac -} - -t /dev/tty -t /dev/tty/x -exit $r diff --git a/tools/regression/bin/sh/builtins/command1.0 b/tools/regression/bin/sh/builtins/command1.0 deleted file mode 100644 index fd0afdf..0000000 --- a/tools/regression/bin/sh/builtins/command1.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -true() { - false -} -command true diff --git a/tools/regression/bin/sh/builtins/command10.0 b/tools/regression/bin/sh/builtins/command10.0 deleted file mode 100644 index 2c1adf1..0000000 --- a/tools/regression/bin/sh/builtins/command10.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '"$(f() { shift x; }; { command eval f 2>/dev/null; } >/dev/null; echo hi)" = hi' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/command11.0 b/tools/regression/bin/sh/builtins/command11.0 deleted file mode 100644 index 10c8647..0000000 --- a/tools/regression/bin/sh/builtins/command11.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '"$({ command eval \{ shift x\; \} 2\>/dev/null; } >/dev/null; echo hi)" = hi' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/command12.0 b/tools/regression/bin/sh/builtins/command12.0 deleted file mode 100644 index f981db3..0000000 --- a/tools/regression/bin/sh/builtins/command12.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $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/tools/regression/bin/sh/builtins/command2.0 deleted file mode 100644 index ff7b5f2..0000000 --- a/tools/regression/bin/sh/builtins/command2.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -PATH= -command -p cat < /dev/null diff --git a/tools/regression/bin/sh/builtins/command3.0 b/tools/regression/bin/sh/builtins/command3.0 deleted file mode 100644 index 9d4ae89..0000000 --- a/tools/regression/bin/sh/builtins/command3.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ -command -v ls -command -v true -command -v /bin/ls - -fun() { - : -} -command -v fun -command -v break -command -v if - -alias foo=bar -command -v foo diff --git a/tools/regression/bin/sh/builtins/command3.0.stdout b/tools/regression/bin/sh/builtins/command3.0.stdout deleted file mode 100644 index 239c53f..0000000 --- a/tools/regression/bin/sh/builtins/command3.0.stdout +++ /dev/null @@ -1,7 +0,0 @@ -/bin/ls -true -/bin/ls -fun -break -if -alias foo='bar ' diff --git a/tools/regression/bin/sh/builtins/command4.0 b/tools/regression/bin/sh/builtins/command4.0 deleted file mode 100644 index 3e49613..0000000 --- a/tools/regression/bin/sh/builtins/command4.0 +++ /dev/null @@ -1,2 +0,0 @@ -# $FreeBSD$ -! command -v nonexisting diff --git a/tools/regression/bin/sh/builtins/command5.0 b/tools/regression/bin/sh/builtins/command5.0 deleted file mode 100644 index 13b3fe1..0000000 --- a/tools/regression/bin/sh/builtins/command5.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ -command -V ls -command -V true -command -V /bin/ls - -fun() { - : -} -command -V fun -command -V break -command -V if -command -V { - -alias foo=bar -command -V foo diff --git a/tools/regression/bin/sh/builtins/command5.0.stdout b/tools/regression/bin/sh/builtins/command5.0.stdout deleted file mode 100644 index 4cb2b11..0000000 --- a/tools/regression/bin/sh/builtins/command5.0.stdout +++ /dev/null @@ -1,8 +0,0 @@ -ls is /bin/ls -true is a shell builtin -/bin/ls is /bin/ls -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 diff --git a/tools/regression/bin/sh/builtins/command6.0 b/tools/regression/bin/sh/builtins/command6.0 deleted file mode 100644 index 5b63bfe..0000000 --- a/tools/regression/bin/sh/builtins/command6.0 +++ /dev/null @@ -1,22 +0,0 @@ -# $FreeBSD$ -PATH=/var/empty -case $(command -pV ls) in -*/var/empty/ls*) - echo "Failed: \$(command -pV ls) should not match */var/empty/ls*" ;; -"ls is"*" "/*/ls) ;; -*) - echo "Failed: \$(command -pV ls) match \"ls is\"*\" \"/*/ls" ;; -esac -command -pV true -command -pV /bin/ls - -fun() { - : -} -command -pV fun -command -pV break -command -pV if -command -pV { - -alias foo=bar -command -pV foo diff --git a/tools/regression/bin/sh/builtins/command6.0.stdout b/tools/regression/bin/sh/builtins/command6.0.stdout deleted file mode 100644 index df4d647..0000000 --- a/tools/regression/bin/sh/builtins/command6.0.stdout +++ /dev/null @@ -1,7 +0,0 @@ -true is a shell builtin -/bin/ls is /bin/ls -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 diff --git a/tools/regression/bin/sh/builtins/command7.0 b/tools/regression/bin/sh/builtins/command7.0 deleted file mode 100644 index fc652f2..0000000 --- a/tools/regression/bin/sh/builtins/command7.0 +++ /dev/null @@ -1,34 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '"$(PATH=/libexec command -V ld-elf.so.1)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' -check '"$(PATH=/libexec command -V ld-elf.so.1; :)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' -check '"$(PATH=/libexec command -pv ld-elf.so.1)" = ""' -check '"$(PATH=/libexec command -pv ld-elf.so.1; :)" = ""' - -PATH=/libexec:$PATH - -check '"$(command -V ld-elf.so.1)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' -check '"$(command -V ld-elf.so.1; :)" = "ld-elf.so.1 is /libexec/ld-elf.so.1"' -check '"$(command -pv ld-elf.so.1)" = ""' -check '"$(command -pv ld-elf.so.1; :)" = ""' - -PATH=/libexec - -check '"$(command -v ls)" = ""' -case $(command -pv ls) in -/*/ls) ;; -*) - echo "Failed: \$(command -pv ls) match /*/ls" - : $((failures += 1)) ;; -esac - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/command8.0 b/tools/regression/bin/sh/builtins/command8.0 deleted file mode 100644 index 9e3a2b6..0000000 --- a/tools/regression/bin/sh/builtins/command8.0 +++ /dev/null @@ -1,45 +0,0 @@ -# $FreeBSD$ -IFS=, - -SPECIAL="break,\ - :,\ - continue,\ - . /dev/null,\ - eval,\ - exec,\ - export -p,\ - readonly -p,\ - set,\ - shift 0,\ - times,\ - trap,\ - unset foo" - -set -e - -# Check that special builtins can be executed via "command". - -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "v=:; while \$v; do v=false; command ${cmd}; done" >/dev/null -done - -while :; do - command break - echo Error on line $LINENO -done - -set p q r -command shift 2 -if [ $# -ne 1 ]; then - echo Error on line $LINENO -fi - -( - command exec >/dev/null - echo Error on line $LINENO -) - -set +e -! command shift 2 2>/dev/null diff --git a/tools/regression/bin/sh/builtins/command9.0 b/tools/regression/bin/sh/builtins/command9.0 deleted file mode 100644 index 212e52a..0000000 --- a/tools/regression/bin/sh/builtins/command9.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '"$({ command eval shift x 2>/dev/null; } >/dev/null; echo hi)" = hi' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/dot1.0 b/tools/regression/bin/sh/builtins/dot1.0 deleted file mode 100644 index 43eab0d..0000000 --- a/tools/regression/bin/sh/builtins/dot1.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit -trap 'rm -rf $T' 0 -cd $T || exit 3 -unset x -echo 'x=2' >testscript -. ./testscript -[ "$x" = 2 ] || failure $LINENO -cd / || exit 3 -x=1 -PATH=$T:$PATH . testscript -[ "$x" = 2 ] || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/dot2.0 b/tools/regression/bin/sh/builtins/dot2.0 deleted file mode 100644 index ed6379b..0000000 --- a/tools/regression/bin/sh/builtins/dot2.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit -trap 'rm -rf $T' 0 -cd $T || exit 3 -unset x -echo 'x=2' >testscript -. -- ./testscript -[ "$x" = 2 ] || failure $LINENO -cd / || exit 3 -x=1 -PATH=$T:$PATH . -- testscript -[ "$x" = 2 ] || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/dot3.0 b/tools/regression/bin/sh/builtins/dot3.0 deleted file mode 100644 index b337f0f..0000000 --- a/tools/regression/bin/sh/builtins/dot3.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -# . should return 0 if no command was executed. - -if false; then - exit 3 -else - . /dev/null - exit $? -fi diff --git a/tools/regression/bin/sh/builtins/dot4.0 b/tools/regression/bin/sh/builtins/dot4.0 deleted file mode 100644 index b898131..0000000 --- a/tools/regression/bin/sh/builtins/dot4.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -v=abcd -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -r=$( ( - trap 'exit 0' 0 - . "$v" -) 2>&1 >/dev/null) && [ -n "$r" ] diff --git a/tools/regression/bin/sh/builtins/eval1.0 b/tools/regression/bin/sh/builtins/eval1.0 deleted file mode 100644 index 04606a4..0000000 --- a/tools/regression/bin/sh/builtins/eval1.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ -set -e - -eval -eval "" "" -eval "true" -! eval "false - -" diff --git a/tools/regression/bin/sh/builtins/eval2.0 b/tools/regression/bin/sh/builtins/eval2.0 deleted file mode 100644 index bf06b6e..0000000 --- a/tools/regression/bin/sh/builtins/eval2.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -eval ' -false - -' && exit 1 -exit 0 diff --git a/tools/regression/bin/sh/builtins/eval3.0 b/tools/regression/bin/sh/builtins/eval3.0 deleted file mode 100644 index dfb8357..0000000 --- a/tools/regression/bin/sh/builtins/eval3.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -eval 'false;' && exit 1 -eval 'true;' || exit 1 -eval 'false; -' && exit 1 -eval 'true; -' || exit 1 -exit 0 diff --git a/tools/regression/bin/sh/builtins/eval4.0 b/tools/regression/bin/sh/builtins/eval4.0 deleted file mode 100644 index 67da2f5..0000000 --- a/tools/regression/bin/sh/builtins/eval4.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -# eval should preserve $? from command substitutions when starting -# the parsed command. -[ $(eval 'echo $?' $(false)) = 1 ] diff --git a/tools/regression/bin/sh/builtins/eval5.0 b/tools/regression/bin/sh/builtins/eval5.0 deleted file mode 100644 index 3e86de9..0000000 --- a/tools/regression/bin/sh/builtins/eval5.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -# eval should return 0 if no command was executed. -eval $(false) diff --git a/tools/regression/bin/sh/builtins/eval6.0 b/tools/regression/bin/sh/builtins/eval6.0 deleted file mode 100644 index 6752bb6..0000000 --- a/tools/regression/bin/sh/builtins/eval6.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -# eval should preserve $? from command substitutions when starting -# the parsed command. -[ $(false; eval 'echo $?' $(:)) = 0 ] diff --git a/tools/regression/bin/sh/builtins/exec1.0 b/tools/regression/bin/sh/builtins/exec1.0 deleted file mode 100644 index dd30a4c..0000000 --- a/tools/regression/bin/sh/builtins/exec1.0 +++ /dev/null @@ -1,25 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -( - exec >/dev/null - echo bad -) -[ $? = 0 ] || failure $LINENO -( - exec ${SH} -c 'exit 42' - echo bad -) -[ $? = 42 ] || failure $LINENO -( - exec /var/empty/nosuch - echo bad -) 2>/dev/null -[ $? = 127 ] || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/exec2.0 b/tools/regression/bin/sh/builtins/exec2.0 deleted file mode 100644 index 3dcb6c4..0000000 --- a/tools/regression/bin/sh/builtins/exec2.0 +++ /dev/null @@ -1,25 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -( - exec -- >/dev/null - echo bad -) -[ $? = 0 ] || failure $LINENO -( - exec -- ${SH} -c 'exit 42' - echo bad -) -[ $? = 42 ] || failure $LINENO -( - exec -- /var/empty/nosuch - echo bad -) 2>/dev/null -[ $? = 127 ] || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/exit1.0 b/tools/regression/bin/sh/builtins/exit1.0 deleted file mode 100644 index 496d448..0000000 --- a/tools/regression/bin/sh/builtins/exit1.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -# exit with an argument should overwrite the exit status in an EXIT trap. - -trap 'true; exit $?' 0 -false diff --git a/tools/regression/bin/sh/builtins/exit2.8 b/tools/regression/bin/sh/builtins/exit2.8 deleted file mode 100644 index 124c32e..0000000 --- a/tools/regression/bin/sh/builtins/exit2.8 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -# exit without arguments is the same as exit $? outside a trap. - -trap 'true; true' 0 -(exit 8) -exit diff --git a/tools/regression/bin/sh/builtins/exit3.0 b/tools/regression/bin/sh/builtins/exit3.0 deleted file mode 100644 index 80655ac..0000000 --- a/tools/regression/bin/sh/builtins/exit3.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -# exit without arguments differs from exit $? in an EXIT trap. - -trap 'false; exit' 0 diff --git a/tools/regression/bin/sh/builtins/export1.0 b/tools/regression/bin/sh/builtins/export1.0 deleted file mode 100644 index 7b08c9d..0000000 --- a/tools/regression/bin/sh/builtins/export1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -env @badness=1 ${SH} -c 'v=`export -p`; eval "$v"' diff --git a/tools/regression/bin/sh/builtins/fc1.0 b/tools/regression/bin/sh/builtins/fc1.0 deleted file mode 100644 index ab7a387..0000000 --- a/tools/regression/bin/sh/builtins/fc1.0 +++ /dev/null @@ -1,27 +0,0 @@ -# $FreeBSD$ -set -e -trap 'echo Broken pipe -- test failed' PIPE - -P=${TMPDIR:-/tmp} -cd $P -T=$(mktemp -d sh-test.XXXXXX) -cd $T - -mkfifo input output error -HISTFILE=/dev/null ${SH} +m -i output 2>error & -{ - # Syntax error - echo ')' >&3 - # Read error message, shell will read new input now - read dummy <&5 - # Execute bad command again - echo 'fc -e true' >&3 - # Verify that the shell is still running - echo 'echo continued' >&3 || rc=3 - echo 'exit' >&3 || rc=3 - read line <&4 && [ "$line" = continued ] && : ${rc:=0} -} 3>input 4output 2>error & -exec 3>input -{ - # Command not found, containing slash - echo '/var/empty/nonexistent' >&3 - # Read error message, shell will read new input now - read dummy <&5 - # Execute bad command again - echo 'fc -e true; echo continued' >&3 - read dummy <&5 - read line <&4 && [ "$line" = continued ] && : ${rc:=0} - exec 3>&- - # Old sh duplicates itself after the fc, producing another line - # of output. - if read line <&4; then - echo "Extraneous output: $line" - rc=1 - fi -} 4&- - -rm input output error -rmdir ${P}/${T} -exit ${rc:-3} diff --git a/tools/regression/bin/sh/builtins/for1.0 b/tools/regression/bin/sh/builtins/for1.0 deleted file mode 100644 index cd55e2c..0000000 --- a/tools/regression/bin/sh/builtins/for1.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -false -for i in `false`; do exit 3; done diff --git a/tools/regression/bin/sh/builtins/for2.0 b/tools/regression/bin/sh/builtins/for2.0 deleted file mode 100644 index 48c22ce..0000000 --- a/tools/regression/bin/sh/builtins/for2.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -r=x -f() { return 42; } -f -for i in x; do - r=$? -done -[ "$r" = 42 ] diff --git a/tools/regression/bin/sh/builtins/for3.0 b/tools/regression/bin/sh/builtins/for3.0 deleted file mode 100644 index cc37238..0000000 --- a/tools/regression/bin/sh/builtins/for3.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -r=x -f() { return 42; } -for i in x`f`; do - r=$? -done -[ "$r" = 42 ] diff --git a/tools/regression/bin/sh/builtins/getopts1.0 b/tools/regression/bin/sh/builtins/getopts1.0 deleted file mode 100644 index af31d55..0000000 --- a/tools/regression/bin/sh/builtins/getopts1.0 +++ /dev/null @@ -1,25 +0,0 @@ -# $FreeBSD$ - -printf -- '-1-\n' -set -- -abc -getopts "ab:" OPTION -echo ${OPTION} - -# In this case 'getopts' should realize that we have not provided the -# required argument for "-b". -# Note that Solaris 10's (UNIX 03) /usr/xpg4/bin/sh, /bin/sh, and /bin/ksh; -# ksh93 20090505; pdksh 5.2.14p2; mksh R39c; bash 4.1 PL7; and zsh 4.3.10. -# all recognize that "b" is missing its argument on the *first* iteration -# of 'getopts' and do not produce the "a" in $OPTION. -printf -- '-2-\n' -set -- -ab -getopts "ab:" OPTION -echo ${OPTION} -getopts "ab:" OPTION -echo ${OPTION} - -# The 'shift' is aimed at causing an error. -printf -- '-3-\n' -shift 1 -getopts "ab:" OPTION -echo ${OPTION} diff --git a/tools/regression/bin/sh/builtins/getopts1.0.stdout b/tools/regression/bin/sh/builtins/getopts1.0.stdout deleted file mode 100644 index a0a347e..0000000 --- a/tools/regression/bin/sh/builtins/getopts1.0.stdout +++ /dev/null @@ -1,8 +0,0 @@ --1- -a --2- -a -No arg for -b option -? --3- -? diff --git a/tools/regression/bin/sh/builtins/getopts2.0 b/tools/regression/bin/sh/builtins/getopts2.0 deleted file mode 100644 index 5a5dbe2..0000000 --- a/tools/regression/bin/sh/builtins/getopts2.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ -set - -ax -getopts ax option -set -C -getopts ax option -echo $option diff --git a/tools/regression/bin/sh/builtins/getopts2.0.stdout b/tools/regression/bin/sh/builtins/getopts2.0.stdout deleted file mode 100644 index 587be6b..0000000 --- a/tools/regression/bin/sh/builtins/getopts2.0.stdout +++ /dev/null @@ -1 +0,0 @@ -x diff --git a/tools/regression/bin/sh/builtins/hash1.0 b/tools/regression/bin/sh/builtins/hash1.0 deleted file mode 100644 index 45cc300..0000000 --- a/tools/regression/bin/sh/builtins/hash1.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -cat /dev/null -hash -hash -r -hash diff --git a/tools/regression/bin/sh/builtins/hash1.0.stdout b/tools/regression/bin/sh/builtins/hash1.0.stdout deleted file mode 100644 index 3afc3e7..0000000 --- a/tools/regression/bin/sh/builtins/hash1.0.stdout +++ /dev/null @@ -1 +0,0 @@ -/bin/cat diff --git a/tools/regression/bin/sh/builtins/hash2.0 b/tools/regression/bin/sh/builtins/hash2.0 deleted file mode 100644 index e5cd21b..0000000 --- a/tools/regression/bin/sh/builtins/hash2.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -hash -hash cat -hash diff --git a/tools/regression/bin/sh/builtins/hash2.0.stdout b/tools/regression/bin/sh/builtins/hash2.0.stdout deleted file mode 100644 index 3afc3e7..0000000 --- a/tools/regression/bin/sh/builtins/hash2.0.stdout +++ /dev/null @@ -1 +0,0 @@ -/bin/cat diff --git a/tools/regression/bin/sh/builtins/hash3.0 b/tools/regression/bin/sh/builtins/hash3.0 deleted file mode 100644 index eade0b3..0000000 --- a/tools/regression/bin/sh/builtins/hash3.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -hash -v cat -hash diff --git a/tools/regression/bin/sh/builtins/hash3.0.stdout b/tools/regression/bin/sh/builtins/hash3.0.stdout deleted file mode 100644 index a34864c..0000000 --- a/tools/regression/bin/sh/builtins/hash3.0.stdout +++ /dev/null @@ -1,2 +0,0 @@ -/bin/cat -/bin/cat diff --git a/tools/regression/bin/sh/builtins/hash4.0 b/tools/regression/bin/sh/builtins/hash4.0 deleted file mode 100644 index dec584c..0000000 --- a/tools/regression/bin/sh/builtins/hash4.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -exec 3>&1 -m=`hash nosuchtool 2>&1 >&3` -r=$? -[ "$r" != 0 ] && [ -n "$m" ] diff --git a/tools/regression/bin/sh/builtins/jobid1.0 b/tools/regression/bin/sh/builtins/jobid1.0 deleted file mode 100644 index 483fda2..0000000 --- a/tools/regression/bin/sh/builtins/jobid1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -# Non-standard builtin. - -: & -p1=$! -p2=$(jobid) -[ "${p1:?}" = "${p2:?}" ] diff --git a/tools/regression/bin/sh/builtins/jobid2.0 b/tools/regression/bin/sh/builtins/jobid2.0 deleted file mode 100644 index 101831a..0000000 --- a/tools/regression/bin/sh/builtins/jobid2.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -: & -p1=$(jobid) -p2=$(jobid --) -p3=$(jobid %+) -p4=$(jobid -- %+) -[ "${p1:?}" = "${p2:?}" ] && [ "${p2:?}" = "${p3:?}" ] && -[ "${p3:?}" = "${p4:?}" ] && [ "${p4:?}" = "${p1:?}" ] diff --git a/tools/regression/bin/sh/builtins/lineno.0 b/tools/regression/bin/sh/builtins/lineno.0 deleted file mode 100644 index c9311f8..0000000 --- a/tools/regression/bin/sh/builtins/lineno.0 +++ /dev/null @@ -1,16 +0,0 @@ -# $FreeBSD$ -echo $LINENO -echo $LINENO - -f() { - echo $LINENO - echo $LINENO -} - -f - -echo ${LINENO:-foo} -echo ${LINENO=foo} -echo ${LINENO:+foo} -echo ${LINENO+foo} -echo ${#LINENO} diff --git a/tools/regression/bin/sh/builtins/lineno.0.stdout b/tools/regression/bin/sh/builtins/lineno.0.stdout deleted file mode 100644 index 82583a9..0000000 --- a/tools/regression/bin/sh/builtins/lineno.0.stdout +++ /dev/null @@ -1,9 +0,0 @@ -2 -3 -2 -3 -12 -13 -foo -foo -2 diff --git a/tools/regression/bin/sh/builtins/local1.0 b/tools/regression/bin/sh/builtins/local1.0 deleted file mode 100644 index b28837ec..0000000 --- a/tools/regression/bin/sh/builtins/local1.0 +++ /dev/null @@ -1,13 +0,0 @@ -# $FreeBSD$ -# A commonly used but non-POSIX builtin. - -f() { - local x - x=2 - [ "$x" = 2 ] -} -x=1 -f || exit 3 -[ "$x" = 1 ] || exit 3 -f || exit 3 -[ "$x" = 1 ] || exit 3 diff --git a/tools/regression/bin/sh/builtins/local2.0 b/tools/regression/bin/sh/builtins/local2.0 deleted file mode 100644 index cc8c10f..0000000 --- a/tools/regression/bin/sh/builtins/local2.0 +++ /dev/null @@ -1,17 +0,0 @@ -# $FreeBSD$ - -f() { - local - - set -a - case $- in - *a*) : ;; - *) echo In-function \$- bad - esac -} -case $- in -*a*) echo Initial \$- bad -esac -f -case $- in -*a*) echo Final \$- bad -esac diff --git a/tools/regression/bin/sh/builtins/local3.0 b/tools/regression/bin/sh/builtins/local3.0 deleted file mode 100644 index 39ee370..0000000 --- a/tools/regression/bin/sh/builtins/local3.0 +++ /dev/null @@ -1,26 +0,0 @@ -# $FreeBSD$ - -f() { - local "$@" - set -a - x=7 - case $- in - *a*) : ;; - *) echo In-function \$- bad - esac - [ "$x" = 7 ] || echo In-function \$x bad -} -x=1 -case $- in -*a*) echo Initial \$- bad -esac -f x - -case $- in -*a*) echo Intermediate \$- bad -esac -[ "$x" = 1 ] || echo Intermediate \$x bad -f - x -case $- in -*a*) echo Final \$- bad -esac -[ "$x" = 1 ] || echo Final \$x bad diff --git a/tools/regression/bin/sh/builtins/local4.0 b/tools/regression/bin/sh/builtins/local4.0 deleted file mode 100644 index 3955aaa..0000000 --- a/tools/regression/bin/sh/builtins/local4.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -f() { - local -- x - x=2 - [ "$x" = 2 ] -} -x=1 -f || exit 3 -[ "$x" = 1 ] || exit 3 -f || exit 3 -[ "$x" = 1 ] || exit 3 diff --git a/tools/regression/bin/sh/builtins/locale1.0 b/tools/regression/bin/sh/builtins/locale1.0 deleted file mode 100644 index 90b1094..0000000 --- a/tools/regression/bin/sh/builtins/locale1.0 +++ /dev/null @@ -1,134 +0,0 @@ -# $FreeBSD$ -# Note: this test depends on strerror() using locale. - -failures=0 - -check() { - if ! eval "[ $1 ]"; then - echo "Failed: $1 at $2" - : $((failures += 1)) - fi -} - -unset LANG LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES -unset LANGUAGE - -msgeng="No such file or directory" -msgdut="Bestand of map niet gevonden" - -# Verify C locale error message. -case $(command . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -# Various locale variables that should not affect the message. -case $(LC_ALL=C command . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_ALL=C LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_ALL=C LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_CTYPE=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -# Verify Dutch message. -case $(export LANG=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(export LC_MESSAGES=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(export LC_ALL=nl_NL.ISO8859-1; command . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -# Verify that command assignments do not set the locale persistently. -case $(command . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LANG=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in - *"$msgdut"*"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_MESSAGES=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in - *"$msgdut"*"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(LC_ALL=nl_NL.ISO8859-1 command . /var/empty/foo 2>&1; command . /var/empty/foo 2>&1) in - *"$msgdut"*"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -# Check special builtin; add colon invocation to avoid depending on certain fix. -case $(LC_ALL=nl_NL.ISO8859-1 . /var/empty/foo 2>&1; :) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -# Assignments on special builtins are exported to that builtin; the export -# is not persistent. -case $(LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in - *"$msgeng"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -case $(export LC_ALL; LC_ALL=nl_NL.ISO8859-1 . /dev/null; . /var/empty/foo 2>&1) in - *"$msgdut"*) ok=1 ;; - *) ok=0 ;; -esac -check '$ok -eq 1' $LINENO - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/printf1.0 b/tools/regression/bin/sh/builtins/printf1.0 deleted file mode 100644 index 99a82d0..0000000 --- a/tools/regression/bin/sh/builtins/printf1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -[ "$(printf '%c\0%s%d' x '\' 010 | tr '\0' Z)" = 'xZ\8' ] diff --git a/tools/regression/bin/sh/builtins/printf2.0 b/tools/regression/bin/sh/builtins/printf2.0 deleted file mode 100644 index 7763d6f..0000000 --- a/tools/regression/bin/sh/builtins/printf2.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -[ "$(printf '%cZ%s%d' x '\' 010)" = 'xZ\8' ] diff --git a/tools/regression/bin/sh/builtins/printf3.0 b/tools/regression/bin/sh/builtins/printf3.0 deleted file mode 100644 index 0e7ea85..0000000 --- a/tools/regression/bin/sh/builtins/printf3.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -set -e -v=$(! printf "%d" @wrong 2>/dev/null) -[ "$v" = "0" ] diff --git a/tools/regression/bin/sh/builtins/printf4.0 b/tools/regression/bin/sh/builtins/printf4.0 deleted file mode 100644 index 2dd3e72..0000000 --- a/tools/regression/bin/sh/builtins/printf4.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -set -e -v=$(! printf "%d" 4wrong 2>/dev/null) -[ "$v" = "4" ] diff --git a/tools/regression/bin/sh/builtins/read1.0 b/tools/regression/bin/sh/builtins/read1.0 deleted file mode 100644 index 06a68fa..0000000 --- a/tools/regression/bin/sh/builtins/read1.0 +++ /dev/null @@ -1,26 +0,0 @@ -# $FreeBSD$ -set -e - -echo "1 2 3" | { read a; echo "x${a}x"; } -echo "1 2 3" | { read a b; echo "x${a}x${b}x"; } -echo "1 2 3" | { read a b c; echo "x${a}x${b}x${c}x"; } -echo "1 2 3" | { read a b c d; echo "x${a}x${b}x${c}x${d}x"; } - -echo " 1 2 3 " | { read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 2 3 " | { unset IFS; read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 2 3 " | { IFS=$(printf ' \t\n') read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 2 3 " | { IFS= read a b; echo "x${a}x${b}x"; } - -echo " 1,2 3 " | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } -echo ", 2 ,3" | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 ,,3" | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 , , 3" | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 ,2 3," | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 ,2 3,," | { IFS=' ,' read a b c; echo "x${a}x${b}x${c}x"; } - -echo " 1,2 3 " | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } -echo ", 2 ,3" | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 ,,3" | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 , , 3" | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 ,2 3," | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } -echo " 1 ,2 3,," | { IFS=', ' read a b c; echo "x${a}x${b}x${c}x"; } diff --git a/tools/regression/bin/sh/builtins/read1.0.stdout b/tools/regression/bin/sh/builtins/read1.0.stdout deleted file mode 100644 index dbcb1af..0000000 --- a/tools/regression/bin/sh/builtins/read1.0.stdout +++ /dev/null @@ -1,20 +0,0 @@ -x1 2 3x -x1x2 3x -x1x2x3x -x1x2x3xx -x1x2x3x -x1x2x3x -x1x2x3x -x 1 2 3 xx -x1x2x3x -xx2x3x -x1xx3x -x1xx3x -x1x2x3x -x1x2x3,,x -x1x2x3x -xx2x3x -x1xx3x -x1xx3x -x1x2x3x -x1x2x3,,x diff --git a/tools/regression/bin/sh/builtins/read2.0 b/tools/regression/bin/sh/builtins/read2.0 deleted file mode 100644 index fc74511..0000000 --- a/tools/regression/bin/sh/builtins/read2.0 +++ /dev/null @@ -1,31 +0,0 @@ -# $FreeBSD$ - -set -e -{ - echo 1 - echo two - echo three -} | { - read x - [ "$x" = 1 ] - (read x - [ "$x" = two ]) - read x - [ "$x" = three ] -} - -T=`mktemp sh-test.XXXXXX` -trap 'rm -f "$T"' 0 -{ - echo 1 - echo two - echo three -} >$T -{ - read x - [ "$x" = 1 ] - (read x - [ "$x" = two ]) - read x - [ "$x" = three ] -} <$T diff --git a/tools/regression/bin/sh/builtins/read3.0 b/tools/regression/bin/sh/builtins/read3.0 deleted file mode 100644 index c6ae9c1..0000000 --- a/tools/regression/bin/sh/builtins/read3.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -printf '%s\n' 'a\ b c' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' 'a b\ c' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' 'a\:b:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' 'a:b\:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\:a' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\\ a' | { read -r a b; printf '%s\n' "x${a}x${b}x"; } diff --git a/tools/regression/bin/sh/builtins/read3.0.stdout b/tools/regression/bin/sh/builtins/read3.0.stdout deleted file mode 100644 index 8ed98ca..0000000 --- a/tools/regression/bin/sh/builtins/read3.0.stdout +++ /dev/null @@ -1,9 +0,0 @@ -xa bxcx -xaxb cx -xa:bxcx -xaxb:cx -x axx -x:axx -x\xx -x\ axx -x\\\xax diff --git a/tools/regression/bin/sh/builtins/read4.0 b/tools/regression/bin/sh/builtins/read4.0 deleted file mode 100644 index 7204a35..0000000 --- a/tools/regression/bin/sh/builtins/read4.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -printf '%s\n' '\a\ b c' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\a b\ c' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\a\:b:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\a:b\:c' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\:a' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\\ a' | { read a b; printf '%s\n' "x${a}x${b}x"; } -printf '%s\n' '\\\:a' | { IFS=: read a b; printf '%s\n' "x${a}x${b}x"; } diff --git a/tools/regression/bin/sh/builtins/read4.0.stdout b/tools/regression/bin/sh/builtins/read4.0.stdout deleted file mode 100644 index a8747a4..0000000 --- a/tools/regression/bin/sh/builtins/read4.0.stdout +++ /dev/null @@ -1,8 +0,0 @@ -xa bxcx -xaxb cx -xa:bxcx -xaxb:cx -x\xax -x\xax -x\ axx -x\:axx diff --git a/tools/regression/bin/sh/builtins/read5.0 b/tools/regression/bin/sh/builtins/read5.0 deleted file mode 100644 index 7d83391..0000000 --- a/tools/regression/bin/sh/builtins/read5.0 +++ /dev/null @@ -1,32 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.ISO8859-1 -export LC_CTYPE - -# Note: the first and last characters are not whitespace. -# Exclude backslash and newline. -bad1=`printf %03o \'\\\\` -bad2=`printf %03o \'' -'` -e= -for i in 0 1 2 3; do - for j in 0 1 2 3 4 5 6 7; do - for k in 0 1 2 3 4 5 6 7; do - case $i$j$k in - 000|$bad1|$bad2) continue ;; - esac - e="$e\\$i$j$k" - done - done -done -e=`printf "$e"` -[ "${#e}" = 253 ] || echo length bad - -r1=`printf '%s\n' "$e" | { read -r x; printf '%s' "$x"; }` -[ "$r1" = "$e" ] || echo "read with -r bad" -r2=`printf '%s\n' "$e" | { read x; printf '%s' "$x"; }` -[ "$r2" = "$e" ] || echo "read without -r bad 1" -IFS= -r3=`printf '%s\n' "$e" | { read x; printf '%s' "$x"; }` -[ "$r3" = "$e" ] || echo "read without -r bad 2" diff --git a/tools/regression/bin/sh/builtins/read6.0 b/tools/regression/bin/sh/builtins/read6.0 deleted file mode 100644 index 2168e10..0000000 --- a/tools/regression/bin/sh/builtins/read6.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -: | read x -r=$? -[ "$r" = 1 ] diff --git a/tools/regression/bin/sh/builtins/read7.0 b/tools/regression/bin/sh/builtins/read7.0 deleted file mode 100644 index e78f887..0000000 --- a/tools/regression/bin/sh/builtins/read7.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -{ errmsg=`read x <&- 2>&1 >&3`; } 3>&1 -r=$? -[ "$r" -ge 2 ] && [ "$r" -le 128 ] && [ -n "$errmsg" ] diff --git a/tools/regression/bin/sh/builtins/return1.0 b/tools/regression/bin/sh/builtins/return1.0 deleted file mode 100644 index 787e892..0000000 --- a/tools/regression/bin/sh/builtins/return1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -f() { - return 0 - exit 1 -} - -f diff --git a/tools/regression/bin/sh/builtins/return2.1 b/tools/regression/bin/sh/builtins/return2.1 deleted file mode 100644 index 0ef8171..0000000 --- a/tools/regression/bin/sh/builtins/return2.1 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -f() { - true && return 1 - return 0 -} - -f diff --git a/tools/regression/bin/sh/builtins/return3.1 b/tools/regression/bin/sh/builtins/return3.1 deleted file mode 100644 index 605ec68..0000000 --- a/tools/regression/bin/sh/builtins/return3.1 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -return 1 -exit 0 diff --git a/tools/regression/bin/sh/builtins/return4.0 b/tools/regression/bin/sh/builtins/return4.0 deleted file mode 100644 index be5582b..0000000 --- a/tools/regression/bin/sh/builtins/return4.0 +++ /dev/null @@ -1,16 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit -trap 'rm -rf $T' 0 -cd $T || exit 3 -echo 'return 42; exit 4' >testscript -. ./testscript -[ "$?" = 42 ] || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/return5.0 b/tools/regression/bin/sh/builtins/return5.0 deleted file mode 100644 index 6e4b7bd..0000000 --- a/tools/regression/bin/sh/builtins/return5.0 +++ /dev/null @@ -1,17 +0,0 @@ -# $FreeBSD$ - -if [ "$1" != nested ]; then - f() { - set -- nested - . "$0" - # Allow return to return from the function or the dot script. - return 4 - } - f - exit $(($? ^ 4)) -fi -# To trigger the bug, the following commands must be at the top level, -# with newlines in between. -return 4 -echo bad -exit 1 diff --git a/tools/regression/bin/sh/builtins/return6.4 b/tools/regression/bin/sh/builtins/return6.4 deleted file mode 100644 index e4d8e0d..0000000 --- a/tools/regression/bin/sh/builtins/return6.4 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -while return 4; do exit 3; done diff --git a/tools/regression/bin/sh/builtins/return7.4 b/tools/regression/bin/sh/builtins/return7.4 deleted file mode 100644 index 2047373..0000000 --- a/tools/regression/bin/sh/builtins/return7.4 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -f() { - while return 4; do exit 3; done -} -f diff --git a/tools/regression/bin/sh/builtins/return8.0 b/tools/regression/bin/sh/builtins/return8.0 deleted file mode 100644 index f00e859..0000000 --- a/tools/regression/bin/sh/builtins/return8.0 +++ /dev/null @@ -1,13 +0,0 @@ -# $FreeBSD$ - -if [ "$1" = nested ]; then - return 17 -fi - -f() { - set -- nested - . "$0" - return $(($? ^ 1)) -} -f -exit $(($? ^ 16)) diff --git a/tools/regression/bin/sh/builtins/set1.0 b/tools/regression/bin/sh/builtins/set1.0 deleted file mode 100644 index fc39fad..0000000 --- a/tools/regression/bin/sh/builtins/set1.0 +++ /dev/null @@ -1,32 +0,0 @@ -# $FreeBSD$ - -set +C -set +f -set -e - -settings=$(set +o) -set -C -set -f -set +e -case $- in -*C*) ;; -*) echo missing C ;; -esac -case $- in -*f*) ;; -*) echo missing C ;; -esac -case $- in -*e*) echo bad e ;; -esac -eval "$settings" -case $- in -*C*) echo bad C ;; -esac -case $- in -*f*) echo bad f ;; -esac -case $- in -*e*) ;; -*) echo missing e ;; -esac diff --git a/tools/regression/bin/sh/builtins/set2.0 b/tools/regression/bin/sh/builtins/set2.0 deleted file mode 100644 index ad13eab..0000000 --- a/tools/regression/bin/sh/builtins/set2.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -! env @badness=1 ${SH} -c 'v=`set`; eval "$v"' 2>&1 | grep @badness diff --git a/tools/regression/bin/sh/builtins/trap1.0 b/tools/regression/bin/sh/builtins/trap1.0 deleted file mode 100644 index 313f6a3..0000000 --- a/tools/regression/bin/sh/builtins/trap1.0 +++ /dev/null @@ -1,22 +0,0 @@ -# $FreeBSD$ - -test "$(trap 'echo trapped' EXIT; :)" = trapped || exit 1 - -test "$(trap 'echo trapped' EXIT; /usr/bin/true)" = trapped || exit 1 - -result=$(${SH} -c 'trap "echo trapped" EXIT; /usr/bin/false') -test $? -eq 1 || exit 1 -test "$result" = trapped || exit 1 - -result=$(${SH} -c 'trap "echo trapped" EXIT; exec /usr/bin/false') -test $? -eq 1 || exit 1 -test -z "$result" || exit 1 - -result=0 -trap 'result=$((result+1))' INT -kill -INT $$ -test "$result" -eq 1 || exit 1 -(kill -INT $$) -test "$result" -eq 2 || exit 1 - -exit 0 diff --git a/tools/regression/bin/sh/builtins/trap10.0 b/tools/regression/bin/sh/builtins/trap10.0 deleted file mode 100644 index fa0e35d..0000000 --- a/tools/regression/bin/sh/builtins/trap10.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -# Check that the return statement will not break the EXIT trap, ie. all -# trap commands are executed before the script exits. - -test "$(trap 'printf trap; echo ped' EXIT; f() { return; }; f)" = trapped || exit 1 diff --git a/tools/regression/bin/sh/builtins/trap11.0 b/tools/regression/bin/sh/builtins/trap11.0 deleted file mode 100644 index cfeea9e..0000000 --- a/tools/regression/bin/sh/builtins/trap11.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -# Check that the return statement will not break the USR1 trap, ie. all -# trap commands are executed before the script resumes. - -result=$(${SH} -c 'trap "printf trap; echo ped" USR1; f() { return $(kill -USR1 $$); }; f') -test $? -eq 0 || exit 1 -test "$result" = trapped || exit 1 diff --git a/tools/regression/bin/sh/builtins/trap12.0 b/tools/regression/bin/sh/builtins/trap12.0 deleted file mode 100644 index 8c62ffd..0000000 --- a/tools/regression/bin/sh/builtins/trap12.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -f() { - trap 'return 42' USR1 - kill -USR1 $$ - return 3 -} -f -r=$? -[ "$r" = 42 ] diff --git a/tools/regression/bin/sh/builtins/trap13.0 b/tools/regression/bin/sh/builtins/trap13.0 deleted file mode 100644 index d90eb08..0000000 --- a/tools/regression/bin/sh/builtins/trap13.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -{ - trap 'exit 0' INT - ${SH} -c 'kill -INT $PPID' - exit 3 -} & -wait $! diff --git a/tools/regression/bin/sh/builtins/trap14.0 b/tools/regression/bin/sh/builtins/trap14.0 deleted file mode 100644 index 97cce8d..0000000 --- a/tools/regression/bin/sh/builtins/trap14.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $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/tools/regression/bin/sh/builtins/trap2.0 deleted file mode 100644 index a05287a..0000000 --- a/tools/regression/bin/sh/builtins/trap2.0 +++ /dev/null @@ -1,52 +0,0 @@ -# $FreeBSD$ -# This is really a test for outqstr(), which is readily accessible via trap. - -runtest() -{ - teststring=$1 - trap -- "$teststring" USR1 - traps=$(trap) - if [ "$teststring" != "-" ] && [ -z "$traps" ]; then - # One possible reading of POSIX requires the above to return an - # empty string because backquote commands are executed in a - # subshell and subshells shall reset traps. However, an example - # in the normative description of the trap builtin shows the - # same usage as here, it is useful and our /bin/sh allows it. - echo '$(trap) is broken' - exit 1 - fi - trap - USR1 - eval "$traps" - traps2=$(trap) - if [ "$traps" != "$traps2" ]; then - echo "Mismatch for '$teststring'" - exit 1 - fi -} - -runtest 'echo' -runtest 'echo hi' -runtest "'echo' 'hi'" -runtest '"echo" $PATH' -runtest '\echo "$PATH"' -runtest ' 0' -runtest '0 ' -runtest ' 1' -runtest '1 ' -i=1 -while [ $i -le 127 ]; do - c=$(printf \\"$(printf %o $i)") - if [ $i -lt 48 ] || [ $i -gt 57 ]; then - runtest "$c" - fi - runtest " $c$c" - runtest "a$c" - i=$((i+1)) -done -IFS=, -runtest ' ' -runtest ',' -unset IFS -runtest ' ' - -exit 0 diff --git a/tools/regression/bin/sh/builtins/trap3.0 b/tools/regression/bin/sh/builtins/trap3.0 deleted file mode 100644 index 8160729..0000000 --- a/tools/regression/bin/sh/builtins/trap3.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -{ - trap '' garbage && exit 3 - trap - garbage && exit 3 - trap true garbage && exit 3 - trap '' 99999 && exit 3 - trap - 99999 && exit 3 - trap true 99999 && exit 3 -} 2>/dev/null -exit 0 diff --git a/tools/regression/bin/sh/builtins/trap4.0 b/tools/regression/bin/sh/builtins/trap4.0 deleted file mode 100644 index 7f2080e..0000000 --- a/tools/regression/bin/sh/builtins/trap4.0 +++ /dev/null @@ -1,17 +0,0 @@ -# $FreeBSD$ - -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf $T' 0 -cd $T || exit 3 -mkfifo fifo1 - -v=$( - exec 3>&1 - : &3 2>/dev/null' PIPE - echo x 2>/dev/null - } >fifo1 -) -test "$v" = trapped diff --git a/tools/regression/bin/sh/builtins/trap5.0 b/tools/regression/bin/sh/builtins/trap5.0 deleted file mode 100644 index 56e0fb1..0000000 --- a/tools/regression/bin/sh/builtins/trap5.0 +++ /dev/null @@ -1,19 +0,0 @@ -# $FreeBSD$ - -set -e -trap - USR1 -initial=$(trap) -trap -- -l USR1 -added=$(trap) -[ -n "$added" ] -trap - USR1 -second=$(trap) -[ "$initial" = "$second" ] -eval "$added" -added2=$(trap) -added3=$(trap --) -[ "$added" = "$added2" ] -[ "$added2" = "$added3" ] -trap -- - USR1 -third=$(trap) -[ "$initial" = "$third" ] diff --git a/tools/regression/bin/sh/builtins/trap6.0 b/tools/regression/bin/sh/builtins/trap6.0 deleted file mode 100644 index bd2bf7e..0000000 --- a/tools/regression/bin/sh/builtins/trap6.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -v=$( - ${SH} -c 'trap "echo ok; exit" USR1; kill -USR1 $$' & - # Suppress possible message about exit on signal - wait $! >/dev/null 2>&1 -) -r=$(kill -l $?) -[ "$v" = "ok" ] && { [ "$r" = "USR1" ] || [ "$r" = "usr1" ]; } diff --git a/tools/regression/bin/sh/builtins/trap7.0 b/tools/regression/bin/sh/builtins/trap7.0 deleted file mode 100644 index 35529b8..0000000 --- a/tools/regression/bin/sh/builtins/trap7.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -[ "$(trap 'echo trapped' EXIT)" = trapped ] diff --git a/tools/regression/bin/sh/builtins/trap8.0 b/tools/regression/bin/sh/builtins/trap8.0 deleted file mode 100644 index cdce976..0000000 --- a/tools/regression/bin/sh/builtins/trap8.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -# I am not sure if POSIX requires the shell to continue processing -# further trap names in the same trap command after an invalid one. - -test -n "$(trap true garbage TERM 2>/dev/null || trap)" || exit 3 -exit 0 diff --git a/tools/regression/bin/sh/builtins/trap9.0 b/tools/regression/bin/sh/builtins/trap9.0 deleted file mode 100644 index 0f584ec..0000000 --- a/tools/regression/bin/sh/builtins/trap9.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -test "$(trap 'printf trap; echo ped' EXIT; f() { :; }; f)" = trapped || exit 1 diff --git a/tools/regression/bin/sh/builtins/type1.0 b/tools/regression/bin/sh/builtins/type1.0 deleted file mode 100644 index c5e4564..0000000 --- a/tools/regression/bin/sh/builtins/type1.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ -command -v not-here && exit 1 -command -v /not-here && exit 1 -command -V not-here && exit 1 -command -V /not-here && exit 1 -type not-here && exit 1 -type /not-here && exit 1 -exit 0 diff --git a/tools/regression/bin/sh/builtins/type1.0.stderr b/tools/regression/bin/sh/builtins/type1.0.stderr deleted file mode 100644 index 7853418..0000000 --- a/tools/regression/bin/sh/builtins/type1.0.stderr +++ /dev/null @@ -1,4 +0,0 @@ -not-here: not found -/not-here: No such file or directory -not-here: not found -/not-here: No such file or directory diff --git a/tools/regression/bin/sh/builtins/type2.0 b/tools/regression/bin/sh/builtins/type2.0 deleted file mode 100644 index fe44d95..0000000 --- a/tools/regression/bin/sh/builtins/type2.0 +++ /dev/null @@ -1,26 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "$*"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check 'PATH=/libexec type ld-elf.so.1 >/dev/null' -check '! PATH=/libexec type ls 2>/dev/null' - -PATH=/libexec:$PATH - -check 'type ld-elf.so.1 >/dev/null' - -PATH=/libexec - -check 'type ld-elf.so.1 >/dev/null' -check '! type ls 2>/dev/null' -check 'PATH=/bin type ls >/dev/null' -check '! PATH=/bin type ld-elf.so.1 2>/dev/null' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/builtins/type3.0 b/tools/regression/bin/sh/builtins/type3.0 deleted file mode 100644 index 87cccdd..0000000 --- a/tools/regression/bin/sh/builtins/type3.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -[ "$(type type)" = "$(type -- type)" ] diff --git a/tools/regression/bin/sh/builtins/unalias.0 b/tools/regression/bin/sh/builtins/unalias.0 deleted file mode 100644 index 34d8d6e..0000000 --- a/tools/regression/bin/sh/builtins/unalias.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ -set -e - -alias false=true -false -unalias false -false && exit 1 -unalias false && exit 1 - -alias a1=foo a2=bar -unalias a1 a2 -unalias a1 && exit 1 -unalias a2 && exit 1 -alias a2=bar -unalias a1 a2 && exit 1 - -alias a1=foo a2=bar -unalias -a -unalias a1 && exit 1 -unalias a2 && exit 1 -exit 0 diff --git a/tools/regression/bin/sh/builtins/var-assign.0 b/tools/regression/bin/sh/builtins/var-assign.0 deleted file mode 100644 index ace39c0..0000000 --- a/tools/regression/bin/sh/builtins/var-assign.0 +++ /dev/null @@ -1,55 +0,0 @@ -# $FreeBSD$ -IFS=, - -SPECIAL="break,\ - :,\ - continue,\ - . /dev/null, - eval, - exec, - export -p, - readonly -p, - set, - shift 0, - times, - trap, - unset foo" - -UTILS="alias,\ - bg,\ - bind,\ - cd,\ - command echo,\ - echo,\ - false,\ - fc -l,\ - fg,\ - getopts a var,\ - hash,\ - jobs,\ - printf a,\ - pwd,\ - read var < /dev/null,\ - test,\ - true,\ - type ls,\ - ulimit,\ - umask,\ - unalias -a,\ - wait" - -set -e - -# For special built-ins variable assignments affect the shell environment. -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "VAR=1; VAR=0 ${cmd}; exit \${VAR}" >/dev/null 2>&1 -done - -# For other built-ins and utilites they do not. -set -- ${UTILS} -for cmd in "$@" -do - ${SH} -c "VAR=0; VAR=1 ${cmd}; exit \${VAR}" >/dev/null 2>&1 -done diff --git a/tools/regression/bin/sh/builtins/var-assign2.0 b/tools/regression/bin/sh/builtins/var-assign2.0 deleted file mode 100644 index eafec89..0000000 --- a/tools/regression/bin/sh/builtins/var-assign2.0 +++ /dev/null @@ -1,55 +0,0 @@ -# $FreeBSD$ -IFS=, - -SPECIAL="break,\ - :,\ - continue,\ - . /dev/null,\ - eval,\ - exec,\ - export -p,\ - readonly -p,\ - set,\ - shift 0,\ - times,\ - trap,\ - unset foo" - -UTILS="alias,\ - bg,\ - bind,\ - cd,\ - command echo,\ - echo,\ - false,\ - fc -l,\ - fg,\ - getopts a var,\ - hash,\ - jobs,\ - printf a,\ - pwd,\ - read var < /dev/null,\ - test,\ - true,\ - type ls,\ - ulimit,\ - umask,\ - unalias -a,\ - wait" - -set -e - -# With 'command', variable assignments do not affect the shell environment. - -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "VAR=0; VAR=1 command ${cmd}; exit \${VAR}" >/dev/null 2>&1 -done - -set -- ${UTILS} -for cmd in "$@" -do - ${SH} -c "VAR=0; VAR=1 command ${cmd}; exit \${VAR}" >/dev/null 2>&1 -done diff --git a/tools/regression/bin/sh/builtins/wait1.0 b/tools/regression/bin/sh/builtins/wait1.0 deleted file mode 100644 index 1ca8530..0000000 --- a/tools/regression/bin/sh/builtins/wait1.0 +++ /dev/null @@ -1,23 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -exit 4 & p4=$! -exit 8 & p8=$! -wait $p4 -[ $? = 4 ] || failure $LINENO -wait $p8 -[ $? = 8 ] || failure $LINENO - -exit 3 & p3=$! -exit 7 & p7=$! -wait $p7 -[ $? = 7 ] || failure $LINENO -wait $p3 -[ $? = 3 ] || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/wait10.0 b/tools/regression/bin/sh/builtins/wait10.0 deleted file mode 100644 index 864fc78..0000000 --- a/tools/regression/bin/sh/builtins/wait10.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -# Init cannot be a child of the shell. -exit 49 & p49=$! -wait 1 "$p49" -[ "$?" = 49 ] diff --git a/tools/regression/bin/sh/builtins/wait2.0 b/tools/regression/bin/sh/builtins/wait2.0 deleted file mode 100644 index e61455c..0000000 --- a/tools/regression/bin/sh/builtins/wait2.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -for i in 1 2 3 4 5 6 7 8 9 10; do - exit $i & -done -wait || failure $LINENO -wait || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/wait3.0 b/tools/regression/bin/sh/builtins/wait3.0 deleted file mode 100644 index 1ed5299..0000000 --- a/tools/regression/bin/sh/builtins/wait3.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -failures= -failure() { - echo "Error at line $1" >&2 - failures=x$failures -} - -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf $T' 0 -cd $T || exit 3 -mkfifo fifo1 -for i in 1 2 3 4 5 6 7 8 9 10; do - exit $i 4fifo1 -wait || failure $LINENO -(${SH} -c echo >&3) 2>/dev/null && failure $LINENO -wait || failure $LINENO - -test -z "$failures" diff --git a/tools/regression/bin/sh/builtins/wait4.0 b/tools/regression/bin/sh/builtins/wait4.0 deleted file mode 100644 index 7935131..0000000 --- a/tools/regression/bin/sh/builtins/wait4.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -T=`mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX` -trap 'rm -rf $T' 0 -cd $T || exit 3 -mkfifo fifo1 -trapped= -trap trapped=1 QUIT -{ kill -QUIT $$; sleep 1; exit 4; } >fifo1 & -wait $! fifo1 & -wait /dev/null && exit 1 - -# Special built-in utilities must abort on an assignment error. -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "readonly a=0; a=2 ${cmd}; exit 0" 2>/dev/null && exit 1 -done - -# Other utilities must not abort; we currently still execute them. -${SH} -c 'readonly a=0; a=1 true; exit $a' 2>/dev/null || exit 1 -${SH} -c 'readonly a=0; a=1 command :; exit $a' 2>/dev/null || exit 1 diff --git a/tools/regression/bin/sh/errors/assignment-error2.0 b/tools/regression/bin/sh/errors/assignment-error2.0 deleted file mode 100644 index ff4e629..0000000 --- a/tools/regression/bin/sh/errors/assignment-error2.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -set -e -HOME=/ -readonly HOME -cd /sbin -{ HOME=/bin cd; } 2>/dev/null || : -[ "$(pwd)" != /bin ] diff --git a/tools/regression/bin/sh/errors/backquote-error1.0 b/tools/regression/bin/sh/errors/backquote-error1.0 deleted file mode 100644 index 43e3303..0000000 --- a/tools/regression/bin/sh/errors/backquote-error1.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -echo 'echo `for` echo ".BAD"CODE.' | ${SH} +m -i 2>&1 | grep -q BADCODE && exit 1 -exit 0 diff --git a/tools/regression/bin/sh/errors/backquote-error2.0 b/tools/regression/bin/sh/errors/backquote-error2.0 deleted file mode 100644 index 5b49e2b..0000000 --- a/tools/regression/bin/sh/errors/backquote-error2.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -${SH} -c 'echo `echo .BA"DCODE.` -echo ".BAD"CODE.' 2>&1 | grep -q BADCODE && exit 1 -echo '`"`' | ${SH} -n 2>/dev/null && exit 1 -echo '`'"'"'`' | ${SH} -n 2>/dev/null && exit 1 -exit 0 diff --git a/tools/regression/bin/sh/errors/bad-binary1.126 b/tools/regression/bin/sh/errors/bad-binary1.126 deleted file mode 100644 index d92e9de..0000000 --- a/tools/regression/bin/sh/errors/bad-binary1.126 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ -# Checking for binary "scripts" without magic number is permitted but not -# required by POSIX. However, it is preferable to getting errors like -# Syntax error: word unexpected (expecting ")") -# from trying to execute ELF binaries for the wrong architecture. - -T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit -trap 'rm -rf "${T}"' 0 -printf '\0echo bad\n' >"$T/testshellproc" -chmod 755 "$T/testshellproc" -PATH=$T:$PATH -testshellproc 2>/dev/null diff --git a/tools/regression/bin/sh/errors/bad-keyword1.0 b/tools/regression/bin/sh/errors/bad-keyword1.0 deleted file mode 100644 index ac01536..0000000 --- a/tools/regression/bin/sh/errors/bad-keyword1.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -echo ':; fi' | ${SH} -n 2>/dev/null && exit 1 -exit 0 diff --git a/tools/regression/bin/sh/errors/bad-parm-exp1.0 b/tools/regression/bin/sh/errors/bad-parm-exp1.0 deleted file mode 100644 index 6e94994..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -false && { - ${} - ${foo/} - ${foo@bar} -} -: diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2 b/tools/regression/bin/sh/errors/bad-parm-exp2.2 deleted file mode 100644 index 7e13d2b..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp2.2 +++ /dev/null @@ -1,2 +0,0 @@ -# $FreeBSD$ -${} diff --git a/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr deleted file mode 100644 index d027a5a..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp2.2.stderr +++ /dev/null @@ -1 +0,0 @@ -./errors/bad-parm-exp2.2: ${}: Bad substitution diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2 b/tools/regression/bin/sh/errors/bad-parm-exp3.2 deleted file mode 100644 index a5ecba5..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp3.2 +++ /dev/null @@ -1,2 +0,0 @@ -# $FreeBSD$ -${foo/} diff --git a/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr deleted file mode 100644 index ef40251..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp3.2.stderr +++ /dev/null @@ -1 +0,0 @@ -./errors/bad-parm-exp3.2: ${foo/}: Bad substitution diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2 b/tools/regression/bin/sh/errors/bad-parm-exp4.2 deleted file mode 100644 index 9eec8d0..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp4.2 +++ /dev/null @@ -1,2 +0,0 @@ -# $FreeBSD$ -${foo:@abc} diff --git a/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr deleted file mode 100644 index 89bd80f..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp4.2.stderr +++ /dev/null @@ -1 +0,0 @@ -./errors/bad-parm-exp4.2: ${foo:@...}: Bad substitution diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2 b/tools/regression/bin/sh/errors/bad-parm-exp5.2 deleted file mode 100644 index 459281f..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp5.2 +++ /dev/null @@ -1,2 +0,0 @@ -# $FreeBSD$ -${/} diff --git a/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr deleted file mode 100644 index 89b1997..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp5.2.stderr +++ /dev/null @@ -1 +0,0 @@ -./errors/bad-parm-exp5.2: ${/}: Bad substitution diff --git a/tools/regression/bin/sh/errors/bad-parm-exp6.2 b/tools/regression/bin/sh/errors/bad-parm-exp6.2 deleted file mode 100644 index ba51442..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp6.2 +++ /dev/null @@ -1,2 +0,0 @@ -# $FreeBSD$ -${#foo^} diff --git a/tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr b/tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr deleted file mode 100644 index dbf14b5..0000000 --- a/tools/regression/bin/sh/errors/bad-parm-exp6.2.stderr +++ /dev/null @@ -1 +0,0 @@ -./errors/bad-parm-exp6.2: ${foo...}: Bad substitution diff --git a/tools/regression/bin/sh/errors/option-error.0 b/tools/regression/bin/sh/errors/option-error.0 deleted file mode 100644 index b4b44c4..0000000 --- a/tools/regression/bin/sh/errors/option-error.0 +++ /dev/null @@ -1,46 +0,0 @@ -# $FreeBSD$ -IFS=, - -SPECIAL="break abc,\ - continue abc,\ - ., - exit abc, - export -x, - readonly -x, - return abc, - set -z, - shift abc, - trap -y, - unset -y" - -UTILS="alias -y,\ - cat -z,\ - cd abc def,\ - command break abc,\ - expr 1 +,\ - fc -z,\ - getopts,\ - hash -z,\ - jobs -z,\ - printf,\ - pwd abc,\ - read,\ - test abc =,\ - ulimit -z,\ - umask -z,\ - unalias -z,\ - wait abc" - -# Special built-in utilities must abort on an option or operand error. -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "${cmd}; exit 0" 2>/dev/null && exit 1 -done - -# Other utilities must not abort. -set -- ${UTILS} -for cmd in "$@" -do - ${SH} -c "${cmd}; exit 0" 2>/dev/null || exit 1 -done diff --git a/tools/regression/bin/sh/errors/redirection-error.0 b/tools/regression/bin/sh/errors/redirection-error.0 deleted file mode 100644 index cb8c0b1..0000000 --- a/tools/regression/bin/sh/errors/redirection-error.0 +++ /dev/null @@ -1,53 +0,0 @@ -# $FreeBSD$ -IFS=, - -SPECIAL="break,\ - :,\ - continue,\ - . /dev/null, - eval, - exec, - export -p, - readonly -p, - set, - shift, - times, - trap, - unset foo" - -UTILS="alias,\ - bg,\ - bind,\ - cd,\ - command echo,\ - echo,\ - false,\ - fc -l,\ - fg,\ - getopts a -a,\ - hash,\ - jobs,\ - printf a,\ - pwd,\ - read var < /dev/null,\ - test,\ - true,\ - type ls,\ - ulimit,\ - umask,\ - unalias -a,\ - wait" - -# Special built-in utilities must abort on a redirection error. -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "${cmd} > /; exit 0" 2>/dev/null && exit 1 -done - -# Other utilities must not abort. -set -- ${UTILS} -for cmd in "$@" -do - ${SH} -c "${cmd} > /; exit 0" 2>/dev/null || exit 1 -done diff --git a/tools/regression/bin/sh/errors/redirection-error2.2 b/tools/regression/bin/sh/errors/redirection-error2.2 deleted file mode 100644 index 32bccd8..0000000 --- a/tools/regression/bin/sh/errors/redirection-error2.2 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -# sh should fail gracefully on this bad redirect -${SH} -c 'echo 1 >&$a' 2>/dev/null diff --git a/tools/regression/bin/sh/errors/redirection-error3.0 b/tools/regression/bin/sh/errors/redirection-error3.0 deleted file mode 100644 index 8a07d03..0000000 --- a/tools/regression/bin/sh/errors/redirection-error3.0 +++ /dev/null @@ -1,54 +0,0 @@ -# $FreeBSD$ -IFS=, - -SPECIAL="break,\ - :,\ - continue,\ - . /dev/null,\ - eval,\ - exec,\ - export -p,\ - readonly -p,\ - set,\ - shift,\ - times,\ - trap,\ - unset foo" - -UTILS="alias,\ - bg,\ - bind,\ - cd,\ - command echo,\ - echo,\ - false,\ - fc -l,\ - fg,\ - getopts a -a,\ - hash,\ - jobs,\ - printf a,\ - pwd,\ - read var < /dev/null,\ - test,\ - true,\ - type ls,\ - ulimit,\ - umask,\ - unalias -a,\ - wait" - -# When used with 'command', neither special built-in utilities nor other -# utilities must abort on a redirection error. - -set -- ${SPECIAL} -for cmd in "$@" -do - ${SH} -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1 -done - -set -- ${UTILS} -for cmd in "$@" -do - ${SH} -c "command ${cmd} > /; exit 0" 2>/dev/null || exit 1 -done diff --git a/tools/regression/bin/sh/errors/redirection-error4.0 b/tools/regression/bin/sh/errors/redirection-error4.0 deleted file mode 100644 index 2060974..0000000 --- a/tools/regression/bin/sh/errors/redirection-error4.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -# A redirection error should not abort the shell if there is no command word. -exec 2>/dev/null -/dev/null -( echo bad ) /dev/null -{ echo bad; } &1 >&2 2>&3 - ulimit -n 9 - exec 9<. -) && [ -n "$dummy" ] diff --git a/tools/regression/bin/sh/errors/write-error1.0 b/tools/regression/bin/sh/errors/write-error1.0 deleted file mode 100644 index fcb52e7..0000000 --- a/tools/regression/bin/sh/errors/write-error1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -! echo >&- 2>/dev/null diff --git a/tools/regression/bin/sh/execution/bg1.0 b/tools/regression/bin/sh/execution/bg1.0 deleted file mode 100644 index edb92ae..0000000 --- a/tools/regression/bin/sh/execution/bg1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -: `false` & diff --git a/tools/regression/bin/sh/execution/bg10.0 b/tools/regression/bin/sh/execution/bg10.0 deleted file mode 100644 index 44a25dc..0000000 --- a/tools/regression/bin/sh/execution/bg10.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -# The redirection overrides the /dev/null; { cat & wait; }' diff --git a/tools/regression/bin/sh/execution/bg9.0 b/tools/regression/bin/sh/execution/bg9.0 deleted file mode 100644 index 64fde3e..0000000 --- a/tools/regression/bin/sh/execution/bg9.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $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/tools/regression/bin/sh/execution/fork1.0 deleted file mode 100644 index 2eeac79..0000000 --- a/tools/regression/bin/sh/execution/fork1.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -shname=${SH%% *} -shname=${shname##*/} - -result=$(${SH} -c 'ps -p $$ -o comm=') -test "$result" = "ps" || exit 1 - -result=$(${SH} -c 'ps -p $$ -o comm=; :') -test "$result" = "$shname" || exit 1 diff --git a/tools/regression/bin/sh/execution/fork2.0 b/tools/regression/bin/sh/execution/fork2.0 deleted file mode 100644 index 62a2537..0000000 --- a/tools/regression/bin/sh/execution/fork2.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -result=$(${SH} -c '(/bin/sleep 1)& sleep 0.1; ps -p $! -o comm=; kill $!') -test "$result" = sleep || exit 1 - -result=$(${SH} -c '{ trap "echo trapped" EXIT; (/usr/bin/true); } & wait') -test "$result" = trapped || exit 1 - -exit 0 diff --git a/tools/regression/bin/sh/execution/fork3.0 b/tools/regression/bin/sh/execution/fork3.0 deleted file mode 100644 index 3cb678c..0000000 --- a/tools/regression/bin/sh/execution/fork3.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -result=$(${SH} -c 'f() { ps -p $$ -o comm=; }; f') -test "$result" = "ps" diff --git a/tools/regression/bin/sh/execution/func1.0 b/tools/regression/bin/sh/execution/func1.0 deleted file mode 100644 index 29fcc07..0000000 --- a/tools/regression/bin/sh/execution/func1.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -MALLOC_OPTIONS=J ${SH} -c 'g() { g() { :; }; :; }; g' && -MALLOC_OPTIONS=J ${SH} -c 'g() { unset -f g; :; }; g' diff --git a/tools/regression/bin/sh/execution/func2.0 b/tools/regression/bin/sh/execution/func2.0 deleted file mode 100644 index 9830b5e..0000000 --- a/tools/regression/bin/sh/execution/func2.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ -# The empty pairs of braces here are to test that this does not cause a crash. - -f() { } -f -hash -v f >/dev/null -f() { { }; } -f -hash -v f >/dev/null -f() { { } } -f -hash -v f >/dev/null diff --git a/tools/regression/bin/sh/execution/func3.0 b/tools/regression/bin/sh/execution/func3.0 deleted file mode 100644 index e0ed581..0000000 --- a/tools/regression/bin/sh/execution/func3.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -# This may fail when parsing or when defining the function, or the definition -# may silently do nothing. In no event may the function be executed. - -${SH} -c 'unset() { echo overriding function executed, bad; }; v=1; unset v; exit "${v-0}"' 2>/dev/null -: diff --git a/tools/regression/bin/sh/execution/hash1.0 b/tools/regression/bin/sh/execution/hash1.0 deleted file mode 100644 index a645c2a..0000000 --- a/tools/regression/bin/sh/execution/hash1.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit -trap 'rm -rf "${T}"' 0 -PATH=$T:$PATH -ls -ld . >/dev/null -cat <"$T/ls" -: -EOF -chmod 755 "$T/ls" -PATH=$PATH -ls -ld . diff --git a/tools/regression/bin/sh/execution/int-cmd1.0 b/tools/regression/bin/sh/execution/int-cmd1.0 deleted file mode 100644 index a1f097b..0000000 --- a/tools/regression/bin/sh/execution/int-cmd1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -! echo echo bad | $SH -ic 'fi' 2>/dev/null diff --git a/tools/regression/bin/sh/execution/killed1.0 b/tools/regression/bin/sh/execution/killed1.0 deleted file mode 100644 index 41d3e05..0000000 --- a/tools/regression/bin/sh/execution/killed1.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ -# Sometimes the "Killed" message is not flushed soon enough and it -# is redirected along with the output of a builtin. -# Do not change the semicolon to a newline as it would hide the bug. - -exec 3>&1 -exec >/dev/null 2>&1 -${SH} -c 'kill -9 $$'; : >&3 2>&3 diff --git a/tools/regression/bin/sh/execution/killed2.0 b/tools/regression/bin/sh/execution/killed2.0 deleted file mode 100644 index 7ff3fe2..0000000 --- a/tools/regression/bin/sh/execution/killed2.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ -# Most shells print a message when a foreground job is killed by a signal. -# POSIX allows this, provided the message is sent to stderr, not stdout. -# Some trickery is needed to capture the message as redirecting stderr of -# the command itself does not affect it. The colon command ensures that -# the subshell forks for ${SH}. - -exec 3>&1 -r=`(${SH} -c 'kill $$'; :) 2>&1 >&3` -[ -n "$r" ] diff --git a/tools/regression/bin/sh/execution/not1.0 b/tools/regression/bin/sh/execution/not1.0 deleted file mode 100644 index 12c6265..0000000 --- a/tools/regression/bin/sh/execution/not1.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -f() { ! return $1; } -f 0 && ! f 1 diff --git a/tools/regression/bin/sh/execution/not2.0 b/tools/regression/bin/sh/execution/not2.0 deleted file mode 100644 index 1b128d0..0000000 --- a/tools/regression/bin/sh/execution/not2.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -while :; do - ! break - exit 3 -done diff --git a/tools/regression/bin/sh/execution/path1.0 b/tools/regression/bin/sh/execution/path1.0 deleted file mode 100644 index 50829d6..0000000 --- a/tools/regression/bin/sh/execution/path1.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ -# Some builtins should not be overridable via PATH. - -set -e -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf ${T}' 0 -echo '#!/bin/sh -echo bad' >"$T/cd" -chmod 755 "$T/cd" -cd /bin -oPATH=$PATH -PATH=$T:$PATH:%builtin -cd / -PATH=$oPATH -[ "$(pwd)" = / ] diff --git a/tools/regression/bin/sh/execution/redir1.0 b/tools/regression/bin/sh/execution/redir1.0 deleted file mode 100644 index dd0011f..0000000 --- a/tools/regression/bin/sh/execution/redir1.0 +++ /dev/null @@ -1,27 +0,0 @@ -# $FreeBSD$ -trap ': $((brokenpipe+=1))' PIPE - -P=${TMPDIR:-/tmp} -cd $P -T=$(mktemp -d sh-test.XXXXXX) -cd $T - -brokenpipe=0 -mkfifo fifo1 fifo2 -read dummy >fifo2 fifo2 -} 3fifo1 -if [ $brokenpipe -ne 0 ]; then - rc=3 -fi -wait -echo dummy >&4 2>/dev/null -if [ $brokenpipe -eq 1 ]; then - : ${rc:=0} -fi - -rm fifo1 fifo2 -rmdir ${P}/${T} -exit ${rc:-3} diff --git a/tools/regression/bin/sh/execution/redir2.0 b/tools/regression/bin/sh/execution/redir2.0 deleted file mode 100644 index 1588105..0000000 --- a/tools/regression/bin/sh/execution/redir2.0 +++ /dev/null @@ -1,29 +0,0 @@ -# $FreeBSD$ -trap ': $((brokenpipe+=1))' PIPE - -P=${TMPDIR:-/tmp} -cd $P -T=$(mktemp -d sh-test.XXXXXX) -cd $T - -brokenpipe=0 -mkfifo fifo1 fifo2 -{ - { - exec ${SH} -c 'exec fifo2 -exec 3>fifo1 -echo dummy >&4 2>/dev/null -if [ $brokenpipe -eq 1 ]; then - : ${rc:=0} -fi -echo dummy >&3 -wait - -rm fifo1 fifo2 -rmdir ${P}/${T} -exit ${rc:-3} diff --git a/tools/regression/bin/sh/execution/redir3.0 b/tools/regression/bin/sh/execution/redir3.0 deleted file mode 100644 index d68e450..0000000 --- a/tools/regression/bin/sh/execution/redir3.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -3>&- 3>&- diff --git a/tools/regression/bin/sh/execution/redir4.0 b/tools/regression/bin/sh/execution/redir4.0 deleted file mode 100644 index 57054c1..0000000 --- a/tools/regression/bin/sh/execution/redir4.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -{ echo bad 0>&3; } 2>/dev/null 3>/dev/null 3>&- -exit 0 diff --git a/tools/regression/bin/sh/execution/redir5.0 b/tools/regression/bin/sh/execution/redir5.0 deleted file mode 100644 index 707ca68..0000000 --- a/tools/regression/bin/sh/execution/redir5.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -{ (echo bad) >/dev/null; } &2 - failures=$((failures + 1)) - fi -} - -check $LINENO "$(trap "echo bye" EXIT; : >/dev/null)" bye -check $LINENO "$(trap "echo bye" EXIT; { :; } >/dev/null)" bye -check $LINENO "$(trap "echo bye" EXIT; (:) >/dev/null)" bye -check $LINENO "$(trap "echo bye" EXIT; (: >/dev/null))" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; : >/dev/null')" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; { :; } >/dev/null')" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; (:) >/dev/null')" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; (: >/dev/null)')" bye - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/execution/redir7.0 b/tools/regression/bin/sh/execution/redir7.0 deleted file mode 100644 index 2487bcf..0000000 --- a/tools/regression/bin/sh/execution/redir7.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ "$2" != "$3" ]; then - echo "Failure at $1" >&2 - failures=$((failures + 1)) - fi -} - -check $LINENO "$(trap "echo bye" EXIT; f() { :; }; f >/dev/null)" bye -check $LINENO "$(trap "echo bye" EXIT; f() { :; }; { f; } >/dev/null)" bye -check $LINENO "$(trap "echo bye" EXIT; f() { :; }; (f) >/dev/null)" bye -check $LINENO "$(trap "echo bye" EXIT; f() { :; }; (f >/dev/null))" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; f >/dev/null')" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; { f; } >/dev/null')" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; (f) >/dev/null')" bye -check $LINENO "$(${SH} -c 'trap "echo bye" EXIT; f() { :; }; (f >/dev/null)')" bye - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/execution/set-n1.0 b/tools/regression/bin/sh/execution/set-n1.0 deleted file mode 100644 index 14c9b93..0000000 --- a/tools/regression/bin/sh/execution/set-n1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -v=$( ($SH -n <<'EOF' -for -EOF -) 2>&1 >/dev/null) -[ $? -ne 0 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/execution/set-n2.0 b/tools/regression/bin/sh/execution/set-n2.0 deleted file mode 100644 index c7f3162..0000000 --- a/tools/regression/bin/sh/execution/set-n2.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -$SH -n <<'EOF' -echo bad -EOF diff --git a/tools/regression/bin/sh/execution/set-n3.0 b/tools/regression/bin/sh/execution/set-n3.0 deleted file mode 100644 index 24a9159..0000000 --- a/tools/regression/bin/sh/execution/set-n3.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -v=$( ($SH -nc 'for') 2>&1 >/dev/null) -[ $? -ne 0 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/execution/set-n4.0 b/tools/regression/bin/sh/execution/set-n4.0 deleted file mode 100644 index 3698508..0000000 --- a/tools/regression/bin/sh/execution/set-n4.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -$SH -nc 'echo bad' diff --git a/tools/regression/bin/sh/execution/set-x1.0 b/tools/regression/bin/sh/execution/set-x1.0 deleted file mode 100644 index 7fe1dbf..0000000 --- a/tools/regression/bin/sh/execution/set-x1.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -key='must_contain_this' -{ r=`set -x; { : "$key"; } 2>&1 >/dev/null`; } 2>/dev/null -case $r in -*"$key"*) true ;; -*) false ;; -esac diff --git a/tools/regression/bin/sh/execution/set-x2.0 b/tools/regression/bin/sh/execution/set-x2.0 deleted file mode 100644 index 56d54e3..0000000 --- a/tools/regression/bin/sh/execution/set-x2.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -key='must contain this' -PS4="$key+ " -{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null -case $r in -*"$key"*) true ;; -*) false ;; -esac diff --git a/tools/regression/bin/sh/execution/set-x3.0 b/tools/regression/bin/sh/execution/set-x3.0 deleted file mode 100644 index 1ca57ac..0000000 --- a/tools/regression/bin/sh/execution/set-x3.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -key='must contain this' -PS4='$key+ ' -{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null -case $r in -*"$key"*) true ;; -*) false ;; -esac diff --git a/tools/regression/bin/sh/execution/shellproc1.0 b/tools/regression/bin/sh/execution/shellproc1.0 deleted file mode 100644 index 1326bc2..0000000 --- a/tools/regression/bin/sh/execution/shellproc1.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit -trap 'rm -rf "${T}"' 0 -cat <"$T/testshellproc" -printf 'this ' -echo is a test -EOF -chmod 755 "$T/testshellproc" -PATH=$T:$PATH -[ "`testshellproc`" = "this is a test" ] diff --git a/tools/regression/bin/sh/execution/subshell1.0 b/tools/regression/bin/sh/execution/subshell1.0 deleted file mode 100644 index 347806e..0000000 --- a/tools/regression/bin/sh/execution/subshell1.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -(eval "cd / -v=$(printf %0100000d 1) -echo \${#v}") -echo end diff --git a/tools/regression/bin/sh/execution/subshell1.0.stdout b/tools/regression/bin/sh/execution/subshell1.0.stdout deleted file mode 100644 index 8c71af3..0000000 --- a/tools/regression/bin/sh/execution/subshell1.0.stdout +++ /dev/null @@ -1,2 +0,0 @@ -100000 -end diff --git a/tools/regression/bin/sh/execution/subshell2.0 b/tools/regression/bin/sh/execution/subshell2.0 deleted file mode 100644 index 3216449..0000000 --- a/tools/regression/bin/sh/execution/subshell2.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -f() { - x=2 -} -( - x=1 - f - [ "$x" = 2 ] -) diff --git a/tools/regression/bin/sh/execution/subshell3.0 b/tools/regression/bin/sh/execution/subshell3.0 deleted file mode 100644 index 9a87acb..0000000 --- a/tools/regression/bin/sh/execution/subshell3.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -(false; exit) && exit 3 -exit 0 diff --git a/tools/regression/bin/sh/execution/subshell4.0 b/tools/regression/bin/sh/execution/subshell4.0 deleted file mode 100644 index b39edb1..0000000 --- a/tools/regression/bin/sh/execution/subshell4.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -(eval "set v=1"; false) && echo bad; : diff --git a/tools/regression/bin/sh/execution/unknown1.0 b/tools/regression/bin/sh/execution/unknown1.0 deleted file mode 100644 index 45f541e..0000000 --- a/tools/regression/bin/sh/execution/unknown1.0 +++ /dev/null @@ -1,29 +0,0 @@ -# $FreeBSD$ - -nosuchtool 2>/dev/null -[ $? -ne 127 ] && exit 1 -/var/empty/nosuchtool 2>/dev/null -[ $? -ne 127 ] && exit 1 -(nosuchtool) 2>/dev/null -[ $? -ne 127 ] && exit 1 -(/var/empty/nosuchtool) 2>/dev/null -[ $? -ne 127 ] && exit 1 -/ 2>/dev/null -[ $? -ne 126 ] && exit 1 -PATH=/usr bin 2>/dev/null -[ $? -ne 126 ] && exit 1 - -dummy=$(nosuchtool 2>/dev/null) -[ $? -ne 127 ] && exit 1 -dummy=$(/var/empty/nosuchtool 2>/dev/null) -[ $? -ne 127 ] && exit 1 -dummy=$( (nosuchtool) 2>/dev/null) -[ $? -ne 127 ] && exit 1 -dummy=$( (/var/empty/nosuchtool) 2>/dev/null) -[ $? -ne 127 ] && exit 1 -dummy=$(/ 2>/dev/null) -[ $? -ne 126 ] && exit 1 -dummy=$(PATH=/usr bin 2>/dev/null) -[ $? -ne 126 ] && exit 1 - -exit 0 diff --git a/tools/regression/bin/sh/execution/var-assign1.0 b/tools/regression/bin/sh/execution/var-assign1.0 deleted file mode 100644 index 26e5424..0000000 --- a/tools/regression/bin/sh/execution/var-assign1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -[ "$(HOME=/etc HOME=/ cd && pwd)" = / ] diff --git a/tools/regression/bin/sh/expansion/arith1.0 b/tools/regression/bin/sh/expansion/arith1.0 deleted file mode 100644 index 118ba22..0000000 --- a/tools/regression/bin/sh/expansion/arith1.0 +++ /dev/null @@ -1,30 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ $(($1)) != $2 ]; then - failures=$((failures+1)) - echo "For $1, expected $2 actual $(($1))" - fi -} - -check "0&&0" 0 -check "1&&0" 0 -check "0&&1" 0 -check "1&&1" 1 -check "2&&2" 1 -check "1&&2" 1 -check "1<<40&&1<<40" 1 -check "1<<40&&4" 1 - -check "0||0" 0 -check "1||0" 1 -check "0||1" 1 -check "1||1" 1 -check "2||2" 1 -check "1||2" 1 -check "1<<40||1<<40" 1 -check "1<<40||4" 1 - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/arith10.0 b/tools/regression/bin/sh/expansion/arith10.0 deleted file mode 100644 index 1aaf619..0000000 --- a/tools/regression/bin/sh/expansion/arith10.0 +++ /dev/null @@ -1,35 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ $(($1)) != $2 ]; then - failures=$((failures+1)) - echo "For $1, expected $2 actual $(($1))" - fi -} - -readonly ro=4 -rw=1 -check "0 && 0 / 0" 0 -check "1 || 0 / 0" 1 -check "0 && (ro = 2)" 0 -check "ro" 4 -check "1 || (ro = -1)" 1 -check "ro" 4 -check "0 && (rw += 1)" 0 -check "rw" 1 -check "1 || (rw += 1)" 1 -check "rw" 1 -check "0 ? 44 / 0 : 51" 51 -check "0 ? ro = 3 : 52" 52 -check "ro" 4 -check "0 ? rw += 1 : 52" 52 -check "rw" 1 -check "1 ? 68 : 30 / 0" 68 -check "2 ? 1 : (ro += 2)" 1 -check "ro" 4 -check "4 ? 1 : (rw += 1)" 1 -check "rw" 1 - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/arith11.0 b/tools/regression/bin/sh/expansion/arith11.0 deleted file mode 100644 index 6bc7369..0000000 --- a/tools/regression/bin/sh/expansion/arith11.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ -# Try to divide the smallest integer by -1. -# On amd64 this causes SIGFPE, so make sure the shell checks. - -# Calculate the minimum possible value, assuming two's complement and -# a certain interpretation of overflow when shifting left. -minint=1 -while [ $((minint <<= 1)) -gt 0 ]; do - : -done -v=$( eval ': $((minint / -1))' 2>&1 >/dev/null) -[ $? -ne 0 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/expansion/arith12.0 b/tools/regression/bin/sh/expansion/arith12.0 deleted file mode 100644 index cb7da3b..0000000 --- a/tools/regression/bin/sh/expansion/arith12.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -_x=4 y_=5 z_z=6 -[ "$((_x*100+y_*10+z_z))" = 456 ] diff --git a/tools/regression/bin/sh/expansion/arith13.0 b/tools/regression/bin/sh/expansion/arith13.0 deleted file mode 100644 index 207e488..0000000 --- a/tools/regression/bin/sh/expansion/arith13.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ -# Pre-increment and pre-decrement in arithmetic expansion are not in POSIX. -# Require either an error or a correct implementation. - -! (eval 'x=4; [ $((++x)) != 5 ] || [ $x != 5 ]') 2>/dev/null && -! (eval 'x=2; [ $((--x)) != 1 ] || [ $x != 1 ]') 2>/dev/null diff --git a/tools/regression/bin/sh/expansion/arith2.0 b/tools/regression/bin/sh/expansion/arith2.0 deleted file mode 100644 index 95b48a0..0000000 --- a/tools/regression/bin/sh/expansion/arith2.0 +++ /dev/null @@ -1,77 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ $(($1)) != $2 ]; then - failures=$((failures+1)) - echo "For $1, expected $2 actual $(($1))" - fi -} - -# variables -unset v -check "v=2" 2 -check "v" 2 -check "$(($v))" 2 -check "v+=1" 3 -check "v" 3 - -# constants -check "4611686018427387904" 4611686018427387904 -check "0x4000000000000000" 4611686018427387904 -check "0400000000000000000000" 4611686018427387904 -check "0x4Ab0000000000000" 5381801554707742720 -check "010" 8 - -# try out all operators -v=42 -check "!v" 0 -check "!!v" 1 -check "!0" 1 -check "~0" -1 -check "~(-1)" 0 -check "-0" 0 -check "-v" -42 -check "v*v" 1764 -check "v/2" 21 -check "v%10" 2 -check "v+v" 84 -check "v-4" 38 -check "v<<1" 84 -check "v>>1" 21 -check "v<43" 1 -check "v>42" 0 -check "v<=43" 1 -check "v>=43" 0 -check "v==41" 0 -check "v!=42" 0 -check "v&3" 2 -check "v^3" 41 -check "v|3" 43 -check "v>=40&&v<=44" 1 -check "v<40||v>44" 0 -check "(v=42)&&(v+=1)==43" 1 -check "v" 43 -check "(v=42)&&(v-=1)==41" 1 -check "v" 41 -check "(v=42)&&(v*=2)==84" 1 -check "v" 84 -check "(v=42)&&(v/=10)==4" 1 -check "v" 4 -check "(v=42)&&(v%=10)==2" 1 -check "v" 2 -check "(v=42)&&(v<<=1)==84" 1 -check "v" 84 -check "(v=42)&&(v>>=2)==10" 1 -check "v" 10 -check "(v=42)&&(v&=32)==32" 1 -check "v" 32 -check "(v=42)&&(v^=32)==10" 1 -check "v" 10 -check "(v=42)&&(v|=32)==42" 1 -check "v" 42 - -# missing: ternary - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/arith3.0 b/tools/regression/bin/sh/expansion/arith3.0 deleted file mode 100644 index b69159d..0000000 --- a/tools/regression/bin/sh/expansion/arith3.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ $(($1)) != $2 ]; then - failures=$((failures+1)) - echo "For $1, expected $2 actual $(($1))" - fi -} - -check "1 << 1 + 1 | 1" 5 - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/arith4.0 b/tools/regression/bin/sh/expansion/arith4.0 deleted file mode 100644 index 610dad8..0000000 --- a/tools/regression/bin/sh/expansion/arith4.0 +++ /dev/null @@ -1,20 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ $(($1)) != $2 ]; then - failures=$((failures+1)) - echo "For $1, expected $2 actual $(($1))" - fi -} - -check '20 / 2 / 2' 5 -check '20 - 2 - 2' 16 -unset a b c d -check "a = b = c = d = 1" 1 -check "a == 1 && b == 1 && c == 1 && d == 1" 1 -check "a += b += c += d" 4 -check "a == 4 && b == 3 && c == 2 && d == 1" 1 - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/arith5.0 b/tools/regression/bin/sh/expansion/arith5.0 deleted file mode 100644 index d0f2331..0000000 --- a/tools/regression/bin/sh/expansion/arith5.0 +++ /dev/null @@ -1,17 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ "$2" != "$3" ]; then - failures=$((failures+1)) - echo "For $1, expected $3 actual $2" - fi -} - -unset a -check '$((1+${a:-$((7+2))}))' "$((1+${a:-$((7+2))}))" 10 -check '$((1+${a:=$((2+2))}))' "$((1+${a:=$((2+2))}))" 5 -check '$a' "$a" 4 - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/arith6.0 b/tools/regression/bin/sh/expansion/arith6.0 deleted file mode 100644 index fc4589c..0000000 --- a/tools/regression/bin/sh/expansion/arith6.0 +++ /dev/null @@ -1,16 +0,0 @@ -# $FreeBSD$ - -v1=1\ +\ 1 -v2=D -v3=C123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 -f() { v4="$*"; } - -while [ ${#v2} -lt 1250 ]; do - eval $v2=$((3+${#v2})) $v3=$((4-${#v2})) - eval f $(($v2+ $v1 +$v3)) - if [ $v4 -ne 9 ]; then - echo bad: $v4 -ne 9 at ${#v2} - fi - v2=x$v2 - v3=y$v3 -done diff --git a/tools/regression/bin/sh/expansion/arith7.0 b/tools/regression/bin/sh/expansion/arith7.0 deleted file mode 100644 index 5aada2b..0000000 --- a/tools/regression/bin/sh/expansion/arith7.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -v=1+ -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -[ "$(cat <&1 >/dev/null) -[ $? -ne 0 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/expansion/arith9.0 b/tools/regression/bin/sh/expansion/arith9.0 deleted file mode 100644 index cc8b597..0000000 --- a/tools/regression/bin/sh/expansion/arith9.0 +++ /dev/null @@ -1,20 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if [ $(($1)) != $2 ]; then - failures=$((failures+1)) - echo "For $1, expected $2 actual $(($1))" - fi -} - -check "0 ? 44 : 51" 51 -check "1 ? 68 : 30" 68 -check "2 ? 1 : -5" 1 -check "0 ? 4 : 0 ? 5 : 6" 6 -check "0 ? 4 : 1 ? 5 : 6" 5 -check "1 ? 4 : 0 ? 5 : 6" 4 -check "1 ? 4 : 1 ? 5 : 6" 4 - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/assign1.0 b/tools/regression/bin/sh/expansion/assign1.0 deleted file mode 100644 index d4fa772..0000000 --- a/tools/regression/bin/sh/expansion/assign1.0 +++ /dev/null @@ -1,37 +0,0 @@ -# $FreeBSD$ - -e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' -h='##' -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'v=; set -- ${v=a b} $v' '0|' -testcase 'unset v; set -- ${v=a b} $v' '4|a|b|a|b' -testcase 'v=; set -- ${v:=a b} $v' '4|a|b|a|b' -testcase 'v=; set -- "${v:=a b}" "$v"' '2|a b|a b' -# expect sensible behaviour, although it disagrees with POSIX -testcase 'v=; set -- ${v:=a\ b} $v' '4|a|b|a|b' -testcase 'v=; set -- ${v:=$p} $v' '2|/etc/|/etc/' -testcase 'v=; set -- "${v:=$p}" "$v"' '2|/et[c]/|/et[c]/' -testcase 'v=; set -- "${v:=a\ b}" "$v"' '2|a\ b|a\ b' -testcase 'v=; set -- ${v:="$p"} $v' '2|/etc/|/etc/' -# whether $p is quoted or not shouldn't really matter -testcase 'v=; set -- "${v:="$p"}" "$v"' '2|/et[c]/|/et[c]/' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/cmdsubst1.0 b/tools/regression/bin/sh/expansion/cmdsubst1.0 deleted file mode 100644 index 515c7da..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst1.0 +++ /dev/null @@ -1,48 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '"$(echo abcde)" = "abcde"' -check '"$(echo abcde; :)" = "abcde"' - -check '"$(printf abcde)" = "abcde"' -check '"$(printf abcde; :)" = "abcde"' - -# regular -check '-n "$(umask)"' -check '-n "$(umask; :)"' -check '-n "$(umask 2>&1)"' -check '-n "$(umask 2>&1; :)"' - -# special -check '-n "$(times)"' -check '-n "$(times; :)"' -check '-n "$(times 2>&1)"' -check '-n "$(times 2>&1; :)"' - -# regular -check '".$(umask -@ 2>&1)." = ".umask: Illegal option -@."' -check '".$(umask -@ 2>&1; :)." = ".umask: Illegal option -@."' -check '".$({ umask -@; } 2>&1)." = ".umask: Illegal option -@."' - -# special -check '".$(shift xyz 2>&1)." = ".shift: Illegal number: xyz."' -check '".$(shift xyz 2>&1; :)." = ".shift: Illegal number: xyz."' -check '".$({ shift xyz; } 2>&1)." = ".shift: Illegal number: xyz."' - -v=1 -check '-z "$(v=2 :)"' -check '"$v" = 1' -check '-z "$(v=3)"' -check '"$v" = 1' -check '"$(v=4 eval echo \$v)" = 4' -check '"$v" = 1' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/expansion/cmdsubst10.0 b/tools/regression/bin/sh/expansion/cmdsubst10.0 deleted file mode 100644 index 7cf17a3..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst10.0 +++ /dev/null @@ -1,51 +0,0 @@ -# $FreeBSD$ - -a1=$(alias) -: $(alias testalias=abcd) -a2=$(alias) -[ "$a1" = "$a2" ] || echo Error at line $LINENO - -alias testalias2=abcd -a1=$(alias) -: $(unalias testalias2) -a2=$(alias) -[ "$a1" = "$a2" ] || echo Error at line $LINENO - -[ "$(command -V pwd)" = "$(command -V pwd; exit $?)" ] || echo Error at line $LINENO - -v=1 -: $(export v=2) -[ "$v" = 1 ] || echo Error at line $LINENO - -rotest=1 -: $(readonly rotest=2) -[ "$rotest" = 1 ] || echo Error at line $LINENO - -set +u -: $(set -u) -case $- in -*u*) echo Error at line $LINENO ;; -esac -set +u - -set +u -: $(set -o nounset) -case $- in -*u*) echo Error at line $LINENO ;; -esac -set +u - -set +u -: $(command set -u) -case $- in -*u*) echo Error at line $LINENO ;; -esac -set +u - -umask 77 -u1=$(umask) -: $(umask 022) -u2=$(umask) -[ "$u1" = "$u2" ] || echo Error at line $LINENO - -dummy=$(exit 3); [ $? -eq 3 ] || echo Error at line $LINENO diff --git a/tools/regression/bin/sh/expansion/cmdsubst11.0 b/tools/regression/bin/sh/expansion/cmdsubst11.0 deleted file mode 100644 index f1af547..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst11.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -# Not required by POSIX but useful for efficiency. - -[ $$ = $(eval '${SH} -c echo\ \$PPID') ] diff --git a/tools/regression/bin/sh/expansion/cmdsubst12.0 b/tools/regression/bin/sh/expansion/cmdsubst12.0 deleted file mode 100644 index 50394db..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst12.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -f() { - echo x$(printf foo >&2)y -} -[ "$(f 2>&1)" = "fooxy" ] diff --git a/tools/regression/bin/sh/expansion/cmdsubst13.0 b/tools/regression/bin/sh/expansion/cmdsubst13.0 deleted file mode 100644 index 7fdc5b2..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst13.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -x=1 y=2 -[ "$( - case $((x+=1)) in - ($((y+=1))) echo bad1 ;; - ($((y-1))) echo $x.$y ;; - ($((y=2))) echo bad2 ;; - (*) echo bad3 ;; - esac -)" = "2.3" ] || echo "Error at $LINENO" -[ "$x.$y" = "1.2" ] || echo "Error at $LINENO" diff --git a/tools/regression/bin/sh/expansion/cmdsubst14.0 b/tools/regression/bin/sh/expansion/cmdsubst14.0 deleted file mode 100644 index bdbbb82..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst14.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -! v=`false - -` diff --git a/tools/regression/bin/sh/expansion/cmdsubst15.0 b/tools/regression/bin/sh/expansion/cmdsubst15.0 deleted file mode 100644 index 31d85d4..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst15.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -! v=`false; - -` diff --git a/tools/regression/bin/sh/expansion/cmdsubst16.0 b/tools/regression/bin/sh/expansion/cmdsubst16.0 deleted file mode 100644 index 71df562..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst16.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -f() { return 3; } -f -[ `echo $?` = 3 ] diff --git a/tools/regression/bin/sh/expansion/cmdsubst17.0 b/tools/regression/bin/sh/expansion/cmdsubst17.0 deleted file mode 100644 index 8c29e83..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst17.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -f() { return 3; } -f -[ `echo $?; :` = 3 ] diff --git a/tools/regression/bin/sh/expansion/cmdsubst2.0 b/tools/regression/bin/sh/expansion/cmdsubst2.0 deleted file mode 100644 index b86776e..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst2.0 +++ /dev/null @@ -1,43 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '`echo /et[c]/` = "/etc/"' -check '`printf /var/empty%s /et[c]/` = "/var/empty/etc/"' -check '"`echo /et[c]/`" = "/etc/"' -check '`echo "/et[c]/"` = "/etc/"' -check '`printf /var/empty%s "/et[c]/"` = "/var/empty/et[c]/"' -check '`printf /var/empty/%s \"/et[c]/\"` = "/var/empty/\"/et[c]/\""' -check '"`echo \"/et[c]/\"`" = "/et[c]/"' -check '"`echo "/et[c]/"`" = "/et[c]/"' -check '`echo $$` = $$' -check '"`echo $$`" = $$' -check '`echo \$\$` = $$' -check '"`echo \$\$`" = $$' - -# Command substitutions consisting of a single builtin may be treated -# differently. -check '`:; echo /et[c]/` = "/etc/"' -check '`:; printf /var/empty%s /et[c]/` = "/var/empty/etc/"' -check '"`:; echo /et[c]/`" = "/etc/"' -check '`:; echo "/et[c]/"` = "/etc/"' -check '`:; printf /var/empty%s "/et[c]/"` = "/var/empty/et[c]/"' -check '`:; printf /var/empty/%s \"/et[c]/\"` = "/var/empty/\"/et[c]/\""' -check '"`:; echo \"/et[c]/\"`" = "/et[c]/"' -check '"`:; echo "/et[c]/"`" = "/et[c]/"' -check '`:; echo $$` = $$' -check '"`:; echo $$`" = $$' -check '`:; echo \$\$` = $$' -check '"`:; echo \$\$`" = $$' - -check '`set -f; echo /et[c]/` = "/etc/"' -check '"`set -f; echo /et[c]/`" = "/et[c]/"' - -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/expansion/cmdsubst3.0 b/tools/regression/bin/sh/expansion/cmdsubst3.0 deleted file mode 100644 index abb6b22..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst3.0 +++ /dev/null @@ -1,23 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -export LC_CTYPE=en_US.ISO8859-1 - -e= -for i in 0 1 2 3; do - for j in 0 1 2 3 4 5 6 7; do - for k in 0 1 2 3 4 5 6 7; do - case $i$j$k in - 000) continue ;; - esac - e="$e\n\\$i$j$k" - done - done -done -e1=$(printf "$e") -e2="$(printf "$e")" -[ "${#e1}" = 510 ] || echo length bad -[ "$e1" = "$e2" ] || echo e1 != e2 -[ "$e1" = "$(printf "$e")" ] || echo quoted bad -IFS= -[ "$e1" = $(printf "$e") ] || echo unquoted bad diff --git a/tools/regression/bin/sh/expansion/cmdsubst4.0 b/tools/regression/bin/sh/expansion/cmdsubst4.0 deleted file mode 100644 index ee1ce73..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst4.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -exec 2>/dev/null -! y=$(: /dev/null -! y=$(: ${v?}) diff --git a/tools/regression/bin/sh/expansion/cmdsubst6.0 b/tools/regression/bin/sh/expansion/cmdsubst6.0 deleted file mode 100644 index 6586f33..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst6.0 +++ /dev/null @@ -1,53 +0,0 @@ -# $FreeBSD$ -# This tests if the cmdsubst optimization is still used if possible. - -failures='' -ok='' - -testcase() { - code="$1" - - unset v - eval "pid=\$(dummy=$code echo \$(\$SH -c echo\ \\\$PPID))" - - if [ "$pid" = "$$" ]; then - ok=x$ok - else - failures=x$failures - echo "Failure for $code" - fi -} - -unset v -w=1 -testcase '$w' -testcase '1${w+1}' -testcase '1${w-1}' -testcase '1${v+1}' -testcase '1${v-1}' -testcase '1${w:+1}' -testcase '1${w:-1}' -testcase '1${v:+1}' -testcase '1${v:-1}' -testcase '${w?}' -testcase '${w:?}' -testcase '${w#x}' -testcase '${w##x}' -testcase '${w%x}' -testcase '${w%%x}' - -testcase '$((w))' -testcase '$(((w+4)*2/3))' -testcase '$((w==1))' -testcase '$((w>=0 && w<=5 && w!=2))' -testcase '$((${#w}))' -testcase '$((${#IFS}))' -testcase '$((${#w}>=1))' -testcase '$(($$))' -testcase '$(($#))' -testcase '$(($?))' - -testcase '$(: $((w=4)))' -testcase '$(: ${v=2})' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/cmdsubst7.0 b/tools/regression/bin/sh/expansion/cmdsubst7.0 deleted file mode 100644 index dbd1aec..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst7.0 +++ /dev/null @@ -1,31 +0,0 @@ -# $FreeBSD$ - -failures='' -ok='' - -testcase() { - code="$1" - - unset v - eval ": \$($code)" - - if [ "${v:+bad}" = "" ]; then - ok=x$ok - else - failures=x$failures - echo "Failure for $code" - fi -} - -testcase ': ${v=0}' -testcase ': ${v:=0}' -testcase ': $((v=1))' -testcase ': $((v+=1))' -w='v=1' -testcase ': $(($w))' -testcase ': $((${$+v=1}))' -testcase ': $((v${$+=1}))' -testcase ': $((v $(echo =) 1))' -testcase ': $(($(echo $w)))' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/cmdsubst8.0 b/tools/regression/bin/sh/expansion/cmdsubst8.0 deleted file mode 100644 index 52adaea..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst8.0 +++ /dev/null @@ -1,17 +0,0 @@ -# $FreeBSD$ -# Not required by POSIX (although referenced in a non-normative section), -# but possibly useful. - -: hi there & -p=$! -q=$(jobs -l $p) - -# Change tabs to spaces. -set -f -set -- $q -r="$*" - -case $r in -*" $p "*) ;; -*) echo Pid missing; exit 3 ;; -esac diff --git a/tools/regression/bin/sh/expansion/cmdsubst9.0 b/tools/regression/bin/sh/expansion/cmdsubst9.0 deleted file mode 100644 index 0b1f81f..0000000 --- a/tools/regression/bin/sh/expansion/cmdsubst9.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -set -e - -cd / -dummy=$(cd /bin) -[ "$(pwd)" = / ] - -v=1 -dummy=$(eval v=2) -[ "$v" = 1 ] diff --git a/tools/regression/bin/sh/expansion/export1.0 b/tools/regression/bin/sh/expansion/export1.0 deleted file mode 100644 index 4ee3ef4..0000000 --- a/tools/regression/bin/sh/expansion/export1.0 +++ /dev/null @@ -1,13 +0,0 @@ -# $FreeBSD$ - -w='@ vv=6' - -v=0 vv=0 -export \v=$w -[ "$v" = "@" ] || echo "Expected @ got $v" -[ "$vv" = "6" ] || echo "Expected 6 got $vv" - -HOME=/known/value - -export \v=~ -[ "$v" = \~ ] || echo "Expected ~ got $v" diff --git a/tools/regression/bin/sh/expansion/export2.0 b/tools/regression/bin/sh/expansion/export2.0 deleted file mode 100644 index 57f64e7..0000000 --- a/tools/regression/bin/sh/expansion/export2.0 +++ /dev/null @@ -1,24 +0,0 @@ -# $FreeBSD$ - -w='@ @' -check() { - [ "$v" = "$w" ] || echo "Expected $w got $v" -} - -export v=$w -check - -HOME=/known/value -check() { - [ "$v" = ~ ] || echo "Expected $HOME got $v" -} - -export v=~ -check - -check() { - [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" -} - -export v=x:~ -check diff --git a/tools/regression/bin/sh/expansion/export3.0 b/tools/regression/bin/sh/expansion/export3.0 deleted file mode 100644 index a1a0e66..0000000 --- a/tools/regression/bin/sh/expansion/export3.0 +++ /dev/null @@ -1,30 +0,0 @@ -# $FreeBSD$ - -w='@ @' -check() { - [ "$v" = "$w" ] || echo "Expected $w got $v" -} - -command export v=$w -check -command command export v=$w -check - -HOME=/known/value -check() { - [ "$v" = ~ ] || echo "Expected $HOME got $v" -} - -command export v=~ -check -command command export v=~ -check - -check() { - [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" -} - -command export v=x:~ -check -command command export v=x:~ -check diff --git a/tools/regression/bin/sh/expansion/heredoc1.0 b/tools/regression/bin/sh/expansion/heredoc1.0 deleted file mode 100644 index a67b2da..0000000 --- a/tools/regression/bin/sh/expansion/heredoc1.0 +++ /dev/null @@ -1,25 +0,0 @@ -# $FreeBSD$ - -f() { return $1; } - -[ `f 42; { cat; } <&2 - : $((failures += 1)) - fi - i=$((i+1)) -done -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/expansion/ifs3.0 b/tools/regression/bin/sh/expansion/ifs3.0 deleted file mode 100644 index 0569b57..0000000 --- a/tools/regression/bin/sh/expansion/ifs3.0 +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -failures=0 -unset LC_ALL -export LC_CTYPE=en_US.ISO8859-1 -i=128 -set -f -while [ "$i" -le 255 ]; do - i2=$((i^2)) - c=$(printf \\"$(printf %o "$i")") - c2=$(printf \\"$(printf %o "$i2")") - IFS=$c - set -- $c2$c$c2$c$c2 - if [ "$#" -ne 3 ] || [ "$1" != "$c2" ] || [ "$2" != "$c2" ] || - [ "$3" != "$c2" ]; then - echo "Bad results for separator $i (word $i2)" >&2 - : $((failures += 1)) - fi - i=$((i+1)) -done -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/expansion/ifs4.0 b/tools/regression/bin/sh/expansion/ifs4.0 deleted file mode 100644 index 5b896a2..0000000 --- a/tools/regression/bin/sh/expansion/ifs4.0 +++ /dev/null @@ -1,39 +0,0 @@ -# $FreeBSD$ - -c=: e= s=' ' -failures='' -ok='' - -check_result() { - if [ "x$2" = "x$3" ]; then - ok=x$ok - else - failures=x$failures - echo "For $1, expected $3 actual $2" - fi -} - -IFS=' -' -set -- a b '' c -set -- $@ -check_result 'set -- $@' "($#)($1)($2)($3)($4)" "(3)(a)(b)(c)()" - -IFS='' -set -- a b '' c -set -- $@ -check_result 'set -- $@' "($#)($1)($2)($3)($4)" "(3)(a)(b)(c)()" - -set -- a b '' c -set -- $* -check_result 'set -- $*' "($#)($1)($2)($3)($4)" "(3)(a)(b)(c)()" - -set -- a b '' c -set -- "$@" -check_result 'set -- "$@"' "($#)($1)($2)($3)($4)" "(4)(a)(b)()(c)" - -set -- a b '' c -set -- "$*" -check_result 'set -- "$*"' "($#)($1)($2)($3)($4)" "(1)(abc)()()()" - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/length1.0 b/tools/regression/bin/sh/expansion/length1.0 deleted file mode 100644 index 2aaebf9..0000000 --- a/tools/regression/bin/sh/expansion/length1.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -v=abcd -[ "${#v}" = 4 ] || echo '${#v} wrong' -v=$$ -[ "${#$}" = "${#v}" ] || echo '${#$} wrong' -[ "${#!}" = 0 ] || echo '${#!} wrong' -set -- 01 2 3 4 5 6 7 8 9 10 11 12 0013 -[ "${#1}" = 2 ] || echo '${#1} wrong' -[ "${#13}" = 4 ] || echo '${#13} wrong' -v=$0 -[ "${#0}" = "${#v}" ] || echo '${#0} wrong' diff --git a/tools/regression/bin/sh/expansion/length2.0 b/tools/regression/bin/sh/expansion/length2.0 deleted file mode 100644 index d749b51..0000000 --- a/tools/regression/bin/sh/expansion/length2.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -v=$- -[ "${#-}" = "${#v}" ] || echo '${#-} wrong' diff --git a/tools/regression/bin/sh/expansion/length3.0 b/tools/regression/bin/sh/expansion/length3.0 deleted file mode 100644 index 2093eed..0000000 --- a/tools/regression/bin/sh/expansion/length3.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -set -- 1 2 3 4 5 6 7 8 9 10 11 12 13 -[ "$#" = 13 ] || echo '$# wrong' -[ "${#}" = 13 ] || echo '${#} wrong' -[ "${##}" = 2 ] || echo '${##} wrong' -set -- -[ "$#" = 0 ] || echo '$# wrong' -[ "${#}" = 0 ] || echo '${#} wrong' -[ "${##}" = 1 ] || echo '${##} wrong' diff --git a/tools/regression/bin/sh/expansion/length4.0 b/tools/regression/bin/sh/expansion/length4.0 deleted file mode 100644 index 5348be5..0000000 --- a/tools/regression/bin/sh/expansion/length4.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -# The construct ${#?} is ambiguous in POSIX.1-2008: it could be the length -# of $? or it could be $# giving an error in the (impossible) case that it -# is not set. -# We use the former interpretation; it seems more useful. - -: -[ "${#?}" = 1 ] || echo '${#?} wrong' -(exit 42) -[ "${#?}" = 2 ] || echo '${#?} wrong' diff --git a/tools/regression/bin/sh/expansion/length5.0 b/tools/regression/bin/sh/expansion/length5.0 deleted file mode 100644 index 322ca16..0000000 --- a/tools/regression/bin/sh/expansion/length5.0 +++ /dev/null @@ -1,27 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.ISO8859-1 -export LC_CTYPE - -e= -for i in 0 1 2 3; do - for j in 0 1 2 3 4 5 6 7; do - for k in 0 1 2 3 4 5 6 7; do - case $i$j$k in - 000) continue ;; - esac - e="$e\\$i$j$k" - done - done -done -ee=`printf "$e"` -[ ${#ee} = 255 ] || echo bad 1 -[ "${#ee}" = 255 ] || echo bad 2 -[ $((${#ee})) = 255 ] || echo bad 3 -[ "$((${#ee}))" = 255 ] || echo bad 4 -set -- "$ee" -[ ${#1} = 255 ] || echo bad 5 -[ "${#1}" = 255 ] || echo bad 6 -[ $((${#1})) = 255 ] || echo bad 7 -[ "$((${#1}))" = 255 ] || echo bad 8 diff --git a/tools/regression/bin/sh/expansion/length6.0 b/tools/regression/bin/sh/expansion/length6.0 deleted file mode 100644 index 6b78309..0000000 --- a/tools/regression/bin/sh/expansion/length6.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -x='!@#$%^&*()[]' -[ ${#x} = 12 ] || echo bad 1 -[ "${#x}" = 12 ] || echo bad 2 -IFS=2 -[ ${#x} = 1 ] || echo bad 3 -[ "${#x}" = 12 ] || echo bad 4 diff --git a/tools/regression/bin/sh/expansion/length7.0 b/tools/regression/bin/sh/expansion/length7.0 deleted file mode 100644 index b79b116..0000000 --- a/tools/regression/bin/sh/expansion/length7.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.UTF-8 -export LC_CTYPE - -# a umlaut -s=$(printf '\303\244') -# euro sign -s=$s$(printf '\342\202\254') -# some sort of 't' outside BMP -s=$s$(printf '\360\235\225\245') -set -- "$s" -[ ${#s} = 3 ] && [ ${#1} = 3 ] diff --git a/tools/regression/bin/sh/expansion/length8.0 b/tools/regression/bin/sh/expansion/length8.0 deleted file mode 100644 index 3cc6c15..0000000 --- a/tools/regression/bin/sh/expansion/length8.0 +++ /dev/null @@ -1,14 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.ISO8859-1 -export LC_CTYPE - -# a umlaut -s=$(printf '\303\244') -# euro sign -s=$s$(printf '\342\202\254') -# some sort of 't' outside BMP -s=$s$(printf '\360\235\225\245') -set -- "$s" -[ ${#s} = 9 ] && [ ${#1} = 9 ] diff --git a/tools/regression/bin/sh/expansion/local1.0 b/tools/regression/bin/sh/expansion/local1.0 deleted file mode 100644 index 3477835..0000000 --- a/tools/regression/bin/sh/expansion/local1.0 +++ /dev/null @@ -1,28 +0,0 @@ -# $FreeBSD$ - -run_test() { - w='@ @' - check() { - [ "$v" = "$w" ] || echo "Expected $w got $v" - } - - local v=$w - check - - HOME=/known/value - check() { - [ "$v" = ~ ] || echo "Expected $HOME got $v" - } - - local v=~ - check - - check() { - [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" - } - - local v=x:~ - check -} - -run_test diff --git a/tools/regression/bin/sh/expansion/local2.0 b/tools/regression/bin/sh/expansion/local2.0 deleted file mode 100644 index 1984290..0000000 --- a/tools/regression/bin/sh/expansion/local2.0 +++ /dev/null @@ -1,34 +0,0 @@ -# $FreeBSD$ - -run_test() { - w='@ @' - check() { - [ "$v" = "$w" ] || echo "Expected $w got $v" - } - - command local v=$w - check - command command local v=$w - check - - HOME=/known/value - check() { - [ "$v" = ~ ] || echo "Expected $HOME got $v" - } - - command local v=~ - check - command command local v=~ - check - - check() { - [ "$v" = "x:$HOME" ] || echo "Expected x:$HOME got $v" - } - - command local v=x:~ - check - command command local v=x:~ - check -} - -run_test diff --git a/tools/regression/bin/sh/expansion/pathname1.0 b/tools/regression/bin/sh/expansion/pathname1.0 deleted file mode 100644 index 8c6b01c..0000000 --- a/tools/regression/bin/sh/expansion/pathname1.0 +++ /dev/null @@ -1,61 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - testcase=$1 - expect=$2 - eval "set -- $testcase" - actual="$*" - if [ "$actual" != "$expect" ]; then - failures=$((failures+1)) - printf '%s\n' "For $testcase, expected $expect actual $actual" - fi -} - -set -e -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf $T' 0 -cd -P $T - -mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b -mkdir testdir2/.c -touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a - -check '' '' -check 'testdir/b' 'testdir/b' -check 'testdir/c' 'testdir/c' -check '\*' '*' -check '\?' '?' -check '*' 'testdir testdir2 testf' -check '*""' 'testdir testdir2 testf' -check '""*' 'testdir testdir2 testf' -check '*/' 'testdir/ testdir2/' -check 'testdir*/a' 'testdir/a' -check 'testdir*/b' 'testdir/b testdir2/b' -check '*/.c' 'testdir2/.c' -check 'testdir2/*' 'testdir2/b' -check 'testdir2/b/*' 'testdir2/b/*' -check 'testdir/*' 'testdir/* testdir/? testdir/a testdir/b' -check 'testdir/*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' -check '"testdir/"*/1' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' -check 'testdir/\*/*' 'testdir/*/1' -check 'testdir/\?/*' 'testdir/?/1' -check 'testdir/"?"/*' 'testdir/?/1' -check '"testdir"/"?"/*' 'testdir/?/1' -check '"testdir"/"?"*/*' 'testdir/?/1' -check '"testdir"/*"?"/*' 'testdir/?/1' -check '"testdir/?"*/*' 'testdir/?/1' -check 'testdir/\*/' 'testdir/*/' -check 'testdir/\?/' 'testdir/?/' -check 'testdir/"?"/' 'testdir/?/' -check '"testdir"/"?"/' 'testdir/?/' -check '"testdir"/"?"*/' 'testdir/?/' -check '"testdir"/*"?"/' 'testdir/?/' -check '"testdir/?"*/' 'testdir/?/' -check 'testdir/[*]/' 'testdir/*/' -check 'testdir/[?]/' 'testdir/?/' -check 'testdir/[*?]/' 'testdir/*/ testdir/?/' -check '[tz]estdir/[*]/' 'testdir/*/' - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/pathname2.0 b/tools/regression/bin/sh/expansion/pathname2.0 deleted file mode 100644 index 8a884ff..0000000 --- a/tools/regression/bin/sh/expansion/pathname2.0 +++ /dev/null @@ -1,31 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - testcase=$1 - expect=$2 - eval "set -- $testcase" - actual="$*" - if [ "$actual" != "$expect" ]; then - failures=$((failures+1)) - printf '%s\n' "For $testcase, expected $expect actual $actual" - fi -} - -set -e -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf $T' 0 -cd -P $T - -mkdir testdir testdir2 'testdir/*' 'testdir/?' testdir/a testdir/b testdir2/b -mkdir testdir2/.c -touch testf 'testdir/*/1' 'testdir/?/1' testdir/a/1 testdir/b/1 testdir2/b/.a - -check '*\/' 'testdir/ testdir2/' -check '"testdir/"*"/1"' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' -check '"testdir/"*"/"*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' -check '"testdir/"*\/*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' -check '"testdir"*"/"*"/"*' 'testdir/*/1 testdir/?/1 testdir/a/1 testdir/b/1' - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/pathname3.0 b/tools/regression/bin/sh/expansion/pathname3.0 deleted file mode 100644 index d1672e0..0000000 --- a/tools/regression/bin/sh/expansion/pathname3.0 +++ /dev/null @@ -1,29 +0,0 @@ -# $FreeBSD$ - -v=12345678 -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -v=$v$v$v$v -# 8192 bytes -v=${v##???} -[ /*/$v = "/*/$v" ] || exit 1 - -s=//// -s=$s$s$s$s -s=$s$s$s$s -s=$s$s$s$s -s=$s$s$s$s -# 1024 bytes -s=${s##??????????} -[ /var/empt[y]/$s/$v = "/var/empt[y]/$s/$v" ] || exit 2 -while [ ${#s} -lt 1034 ]; do - set -- /.${s}et[c] - [ ${#s} -gt 1018 ] || [ "$1" = /.${s}etc ] || exit 3 - set -- /.${s}et[c]/ - [ ${#s} -gt 1017 ] || [ "$1" = /.${s}etc/ ] || exit 4 - set -- /.${s}et[c]/. - [ ${#s} -gt 1016 ] || [ "$1" = /.${s}etc/. ] || exit 5 - s=$s/ -done diff --git a/tools/regression/bin/sh/expansion/pathname4.0 b/tools/regression/bin/sh/expansion/pathname4.0 deleted file mode 100644 index 18269c4..0000000 --- a/tools/regression/bin/sh/expansion/pathname4.0 +++ /dev/null @@ -1,28 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - testcase=$1 - expect=$2 - eval "set -- $testcase" - actual="$*" - if [ "$actual" != "$expect" ]; then - failures=$((failures+1)) - printf '%s\n' "For $testcase, expected $expect actual $actual" - fi -} - -set -e -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf $T' 0 -cd -P $T - -mkdir !!a -touch !!a/fff - -chmod u-r . -check '!!a/ff*' '!!a/fff' -chmod u+r . - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/expansion/plus-minus1.0 b/tools/regression/bin/sh/expansion/plus-minus1.0 deleted file mode 100644 index 9a6a53a..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus1.0 +++ /dev/null @@ -1,76 +0,0 @@ -# $FreeBSD$ - -e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' -h='##' -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'set -- a b' '2|a|b' -testcase 'set --' '0|' -testcase 'set -- ${e}' '0|' -testcase 'set -- "${e}"' '1|' - -testcase 'set -- $p' '1|/etc/' -testcase 'set -- "$p"' '1|/et[c]/' -testcase 'set -- ${s+$p}' '1|/etc/' -testcase 'set -- "${s+$p}"' '1|/et[c]/' -testcase 'set -- ${s+"$p"}' '1|/et[c]/' -# Dquotes in dquotes is undefined for Bourne shell operators -#testcase 'set -- "${s+"$p"}"' '1|/et[c]/' -testcase 'set -- ${e:-$p}' '1|/etc/' -testcase 'set -- "${e:-$p}"' '1|/et[c]/' -testcase 'set -- ${e:-"$p"}' '1|/et[c]/' -# Dquotes in dquotes is undefined for Bourne shell operators -#testcase 'set -- "${e:-"$p"}"' '1|/et[c]/' -testcase 'set -- ${e:+"$e"}' '0|' -testcase 'set -- ${e:+$w"$e"}' '0|' -testcase 'set -- ${w:+"$w"}' '1|a b c' -testcase 'set -- ${w:+$w"$w"}' '3|a|b|ca b c' - -testcase 'set -- "${s+a b}"' '1|a b' -testcase 'set -- "${e:-a b}"' '1|a b' -testcase 'set -- ${e:-\}}' '1|}' -testcase 'set -- ${e:+{}}' '1|}' -testcase 'set -- "${e:+{}}"' '1|}' - -testcase 'set -- ${e+x}${e+x}' '1|xx' -testcase 'set -- "${e+x}"${e+x}' '1|xx' -testcase 'set -- ${e+x}"${e+x}"' '1|xx' -testcase 'set -- "${e+x}${e+x}"' '1|xx' -testcase 'set -- "${e+x}""${e+x}"' '1|xx' - -testcase 'set -- ${e:-${e:-$p}}' '1|/etc/' -testcase 'set -- "${e:-${e:-$p}}"' '1|/et[c]/' -testcase 'set -- ${e:-"${e:-$p}"}' '1|/et[c]/' -testcase 'set -- ${e:-${e:-"$p"}}' '1|/et[c]/' -testcase 'set -- ${e:-${e:-${e:-$w}}}' '3|a|b|c' -testcase 'set -- ${e:-${e:-${e:-"$w"}}}' '1|a b c' -testcase 'set -- ${e:-${e:-"${e:-$w}"}}' '1|a b c' -testcase 'set -- ${e:-"${e:-${e:-$w}}"}' '1|a b c' -testcase 'set -- "${e:-${e:-${e:-$w}}}"' '1|a b c' - -testcase 'shift $#; set -- ${1+"$@"}' '0|' -testcase 'set -- ""; set -- ${1+"$@"}' '1|' -testcase 'set -- "" a; set -- ${1+"$@"}' '2||a' -testcase 'set -- a ""; set -- ${1+"$@"}' '2|a|' -testcase 'set -- a b; set -- ${1+"$@"}' '2|a|b' -testcase 'set -- a\ b; set -- ${1+"$@"}' '1|a b' -testcase 'set -- " " ""; set -- ${1+"$@"}' '2| |' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/plus-minus2.0 b/tools/regression/bin/sh/expansion/plus-minus2.0 deleted file mode 100644 index f5a8752..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus2.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -e= -test "${e:-\}}" = '}' diff --git a/tools/regression/bin/sh/expansion/plus-minus3.0 b/tools/regression/bin/sh/expansion/plus-minus3.0 deleted file mode 100644 index 49fcdc2..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus3.0 +++ /dev/null @@ -1,44 +0,0 @@ -# $FreeBSD$ - -e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' -h='##' -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -# We follow original ash behaviour for quoted ${var+-=?} expansions: -# a double-quote in one switches back to unquoted state. -# This allows expanding a variable as a single word if it is set -# and substituting multiple words otherwise. -# It is also close to the Bourne and Korn shells. -# POSIX leaves this undefined, and various other shells treat -# such double-quotes as introducing a second level of quoting -# which does not do much except quoting close braces. - -testcase 'set -- "${p+"/et[c]/"}"' '1|/etc/' -testcase 'set -- "${p-"/et[c]/"}"' '1|/et[c]/' -testcase 'set -- "${p+"$p"}"' '1|/etc/' -testcase 'set -- "${p-"$p"}"' '1|/et[c]/' -testcase 'set -- "${p+"""/et[c]/"}"' '1|/etc/' -testcase 'set -- "${p-"""/et[c]/"}"' '1|/et[c]/' -testcase 'set -- "${p+"""$p"}"' '1|/etc/' -testcase 'set -- "${p-"""$p"}"' '1|/et[c]/' -testcase 'set -- "${p+"\@"}"' '1|@' -testcase 'set -- "${p+"'\''/et[c]/'\''"}"' '1|/et[c]/' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/plus-minus4.0 b/tools/regression/bin/sh/expansion/plus-minus4.0 deleted file mode 100644 index 66dea38..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus4.0 +++ /dev/null @@ -1,38 +0,0 @@ -# $FreeBSD$ - -# These may be a bit unclear in the POSIX spec or the proposed revisions, -# and conflict with bash's interpretation, but I think ksh93's interpretation -# makes most sense. In particular, it makes no sense to me that single-quotes -# must match but are not removed. - -e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' -h='##' -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'set -- ${e:-'"'"'}'"'"'}' '1|}' -testcase "set -- \${e:-\\'}" "1|'" -testcase "set -- \${e:-\\'\\'}" "1|''" -testcase "set -- \"\${e:-'}\"" "1|'" -testcase "set -- \"\${e:-'}'}\"" "1|''}" -testcase "set -- \"\${e:-''}\"" "1|''" -testcase 'set -- ${e:-\a}' '1|a' -testcase 'set -- "${e:-\a}"' '1|\a' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/plus-minus5.0 b/tools/regression/bin/sh/expansion/plus-minus5.0 deleted file mode 100644 index 0b25e53..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus5.0 +++ /dev/null @@ -1,31 +0,0 @@ -# $FreeBSD$ - -e= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}' -h='##' -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'set -- ${e:-"{x}"}' '1|{x}' -testcase 'set -- "${e:-"{x}"}"' '1|{x}' -testcase 'set -- ${h+"{x}"}' '1|{x}' -testcase 'set -- "${h+"{x}"}"' '1|{x}' -testcase 'set -- ${h:-"{x}"}' '1|##' -testcase 'set -- "${h:-"{x}"}"' '1|##' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/plus-minus6.0 b/tools/regression/bin/sh/expansion/plus-minus6.0 deleted file mode 100644 index bc66805..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus6.0 +++ /dev/null @@ -1,34 +0,0 @@ -# $FreeBSD$ - -failures=0 -unset LC_ALL -export LC_CTYPE=en_US.ISO8859-1 -nl=' -' -i=1 -set -f -while [ "$i" -le 255 ]; do - # A different byte still in the range 1..255. - i2=$((i^2+(i==2))) - # Add a character to work around command substitution's removal of - # final newlines, then remove it again. - c=$(printf \\"$(printf %o@ "$i")") - c=${c%@} - c2=$(printf \\"$(printf %o@ "$i2")") - c2=${c2%@} - case $c in - [\'$nl'$}();&|\"`']) c=M - esac - case $c2 in - [\'$nl'$}();&|\"`']) c2=N - esac - IFS=$c - command eval "set -- \${\$+$c2$c$c2$c$c2}" - if [ "$#" -ne 3 ] || [ "$1" != "$c2" ] || [ "$2" != "$c2" ] || - [ "$3" != "$c2" ]; then - echo "Bad results for separator $i (word $i2)" >&2 - : $((failures += 1)) - fi - i=$((i+1)) -done -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/expansion/plus-minus7.0 b/tools/regression/bin/sh/expansion/plus-minus7.0 deleted file mode 100644 index 9e81f58..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus7.0 +++ /dev/null @@ -1,26 +0,0 @@ -# $FreeBSD$ - -e= s='foo' -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'set -- ${s+a b}' '2|a|b' -testcase 'set -- ${e:-a b}' '2|a|b' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/expansion/plus-minus8.0 b/tools/regression/bin/sh/expansion/plus-minus8.0 deleted file mode 100644 index beba009..0000000 --- a/tools/regression/bin/sh/expansion/plus-minus8.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -set -- 1 2 3 4 5 6 7 8 9 10 11 12 13 -[ "${#+hi}" = hi ] || echo '${#+hi} wrong' -[ "${#-hi}" = 13 ] || echo '${#-hi} wrong' diff --git a/tools/regression/bin/sh/expansion/question1.0 b/tools/regression/bin/sh/expansion/question1.0 deleted file mode 100644 index 663c68d..0000000 --- a/tools/regression/bin/sh/expansion/question1.0 +++ /dev/null @@ -1,22 +0,0 @@ -# $FreeBSD$ - -x=a\ b -[ "$x" = "${x?}" ] || exit 1 -set -- ${x?} -{ [ "$#" = 2 ] && [ "$1" = a ] && [ "$2" = b ]; } || exit 1 -unset x -(echo ${x?abcdefg}) 2>&1 | grep -q abcdefg || exit 1 -${SH} -c 'unset foo; echo ${foo?}' 2>/dev/null && exit 1 -${SH} -c 'foo=; echo ${foo:?}' 2>/dev/null && exit 1 -${SH} -c 'foo=; echo ${foo?}' >/dev/null || exit 1 -${SH} -c 'foo=1; echo ${foo:?}' >/dev/null || exit 1 -${SH} -c 'echo ${!?}' 2>/dev/null && exit 1 -${SH} -c ':& echo ${!?}' >/dev/null || exit 1 -${SH} -c 'echo ${#?}' >/dev/null || exit 1 -${SH} -c 'echo ${*?}' 2>/dev/null && exit 1 -${SH} -c 'echo ${*?}' ${SH} x >/dev/null || exit 1 -${SH} -c 'echo ${1?}' 2>/dev/null && exit 1 -${SH} -c 'echo ${1?}' ${SH} x >/dev/null || exit 1 -${SH} -c 'echo ${2?}' ${SH} x 2>/dev/null && exit 1 -${SH} -c 'echo ${2?}' ${SH} x y >/dev/null || exit 1 -exit 0 diff --git a/tools/regression/bin/sh/expansion/readonly1.0 b/tools/regression/bin/sh/expansion/readonly1.0 deleted file mode 100644 index 5ad0e14..0000000 --- a/tools/regression/bin/sh/expansion/readonly1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -w='@ @' - -v=0 HOME=/known/value -readonly v=~:~/:$w -[ "$v" = "$HOME:$HOME/:$w" ] || echo "Expected $HOME/:$w got $v" diff --git a/tools/regression/bin/sh/expansion/set-u1.0 b/tools/regression/bin/sh/expansion/set-u1.0 deleted file mode 100644 index 763eb7d..0000000 --- a/tools/regression/bin/sh/expansion/set-u1.0 +++ /dev/null @@ -1,29 +0,0 @@ -# $FreeBSD$ - -${SH} -uc 'unset foo; echo $foo' 2>/dev/null && exit 1 -${SH} -uc 'foo=; echo $foo' >/dev/null || exit 1 -${SH} -uc 'foo=1; echo $foo' >/dev/null || exit 1 -# -/+/= are unaffected by set -u -${SH} -uc 'unset foo; echo ${foo-}' >/dev/null || exit 1 -${SH} -uc 'unset foo; echo ${foo+}' >/dev/null || exit 1 -${SH} -uc 'unset foo; echo ${foo=}' >/dev/null || exit 1 -# length/trimming are affected -${SH} -uc 'unset foo; echo ${#foo}' 2>/dev/null && exit 1 -${SH} -uc 'foo=; echo ${#foo}' >/dev/null || exit 1 -${SH} -uc 'unset foo; echo ${foo#?}' 2>/dev/null && exit 1 -${SH} -uc 'foo=1; echo ${foo#?}' >/dev/null || exit 1 -${SH} -uc 'unset foo; echo ${foo##?}' 2>/dev/null && exit 1 -${SH} -uc 'foo=1; echo ${foo##?}' >/dev/null || exit 1 -${SH} -uc 'unset foo; echo ${foo%?}' 2>/dev/null && exit 1 -${SH} -uc 'foo=1; echo ${foo%?}' >/dev/null || exit 1 -${SH} -uc 'unset foo; echo ${foo%%?}' 2>/dev/null && exit 1 -${SH} -uc 'foo=1; echo ${foo%%?}' >/dev/null || exit 1 - -${SH} -uc 'echo $!' 2>/dev/null && exit 1 -${SH} -uc ':& echo $!' >/dev/null || exit 1 -${SH} -uc 'echo $#' >/dev/null || exit 1 -${SH} -uc 'echo $1' 2>/dev/null && exit 1 -${SH} -uc 'echo $1' ${SH} x >/dev/null || exit 1 -${SH} -uc 'echo $2' ${SH} x 2>/dev/null && exit 1 -${SH} -uc 'echo $2' ${SH} x y >/dev/null || exit 1 -exit 0 diff --git a/tools/regression/bin/sh/expansion/set-u2.0 b/tools/regression/bin/sh/expansion/set-u2.0 deleted file mode 100644 index f81aa62..0000000 --- a/tools/regression/bin/sh/expansion/set-u2.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -set -u -: $* $@ "$@" "$*" -set -- x -: $* $@ "$@" "$*" -shift $# -: $* $@ "$@" "$*" -set -- y -set -- -: $* $@ "$@" "$*" -exit 0 diff --git a/tools/regression/bin/sh/expansion/set-u3.0 b/tools/regression/bin/sh/expansion/set-u3.0 deleted file mode 100644 index 7f199b4..0000000 --- a/tools/regression/bin/sh/expansion/set-u3.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -set -u -unset x -v=$( (eval ': $((x))') 2>&1 >/dev/null) -[ $? -ne 0 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/expansion/tilde1.0 b/tools/regression/bin/sh/expansion/tilde1.0 deleted file mode 100644 index 7d8581b..0000000 --- a/tools/regression/bin/sh/expansion/tilde1.0 +++ /dev/null @@ -1,56 +0,0 @@ -# $FreeBSD$ - -HOME=/tmp -roothome=~root -if [ "$roothome" = "~root" ]; then - echo "~root is not expanded!" - exit 2 -fi - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'set -- ~' '1|/tmp' -testcase 'set -- ~/foo' '1|/tmp/foo' -testcase 'set -- x~' '1|x~' -testcase 'set -- ~root' "1|$roothome" -h=~ -testcase 'set -- "$h"' '1|/tmp' -ooIFS=$IFS -IFS=m -testcase 'set -- ~' '1|/tmp' -testcase 'set -- ~/foo' '1|/tmp/foo' -testcase 'set -- $h' '2|/t|p' -IFS=$ooIFS -t=\~ -testcase 'set -- $t' '1|~' -r=$(cat <&1 >/dev/null <<\EOF -exit 0 -EOF -) && case $r in -*"$key"*) true ;; -*) false ;; -esac diff --git a/tools/regression/bin/sh/parameters/exitstatus1.0 b/tools/regression/bin/sh/parameters/exitstatus1.0 deleted file mode 100644 index 696823d..0000000 --- a/tools/regression/bin/sh/parameters/exitstatus1.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ -f() { - [ $? = $1 ] || exit 1 -} - -true -f 0 -false -f 1 diff --git a/tools/regression/bin/sh/parameters/mail1.0 b/tools/regression/bin/sh/parameters/mail1.0 deleted file mode 100644 index 5791a5a..0000000 --- a/tools/regression/bin/sh/parameters/mail1.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ -# Test that a non-interactive shell does not access $MAIL. - -goodfile=/var/empty/sh-test-goodfile -mailfile=/var/empty/sh-test-mailfile -T=$(mktemp sh-test.XXXXXX) || exit -MAIL=$mailfile ktrace -i -f "$T" ${SH} -c "[ -s $goodfile ]" 2>/dev/null -if ! grep -q $goodfile "$T"; then - # ktrace problem - rc=0 -elif ! grep -q $mailfile "$T"; then - rc=0 -fi -rm "$T" -exit ${rc:-3} diff --git a/tools/regression/bin/sh/parameters/mail2.0 b/tools/regression/bin/sh/parameters/mail2.0 deleted file mode 100644 index 343c99d..0000000 --- a/tools/regression/bin/sh/parameters/mail2.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ -# Test that an interactive shell accesses $MAIL. - -goodfile=/var/empty/sh-test-goodfile -mailfile=/var/empty/sh-test-mailfile -T=$(mktemp sh-test.XXXXXX) || exit -ENV=$goodfile MAIL=$mailfile ktrace -i -f "$T" ${SH} +m -i /dev/null 2>&1 -if ! grep -q $goodfile "$T"; then - # ktrace problem - rc=0 -elif grep -q $mailfile "$T"; then - rc=0 -fi -rm "$T" -exit ${rc:-3} diff --git a/tools/regression/bin/sh/parameters/optind1.0 b/tools/regression/bin/sh/parameters/optind1.0 deleted file mode 100644 index 33e0288..0000000 --- a/tools/regression/bin/sh/parameters/optind1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -unset OPTIND && [ -z "$OPTIND" ] diff --git a/tools/regression/bin/sh/parameters/positional1.0 b/tools/regression/bin/sh/parameters/positional1.0 deleted file mode 100644 index 67d1951..0000000 --- a/tools/regression/bin/sh/parameters/positional1.0 +++ /dev/null @@ -1,13 +0,0 @@ -# $FreeBSD$ - -set -- a b c d e f g h i j -[ "$1" = a ] || echo "error at line $LINENO" -[ "${1}" = a ] || echo "error at line $LINENO" -[ "${1-foo}" = a ] || echo "error at line $LINENO" -[ "${1+foo}" = foo ] || echo "error at line $LINENO" -[ "$1+foo" = a+foo ] || echo "error at line $LINENO" -[ "$10" = a0 ] || echo "error at line $LINENO" -[ "$100" = a00 ] || echo "error at line $LINENO" -[ "${10}" = j ] || echo "error at line $LINENO" -[ "${10-foo}" = j ] || echo "error at line $LINENO" -[ "${100-foo}" = foo ] || echo "error at line $LINENO" diff --git a/tools/regression/bin/sh/parameters/positional2.0 b/tools/regression/bin/sh/parameters/positional2.0 deleted file mode 100644 index fcec2a4..0000000 --- a/tools/regression/bin/sh/parameters/positional2.0 +++ /dev/null @@ -1,65 +0,0 @@ -# $FreeBSD$ - -failures='' -ok='' - -testcase() { - code="$1" - expected="$2" - oIFS="$IFS" - eval "$code" - IFS='|' - result="$#|$*" - IFS="$oIFS" - if [ "x$result" = "x$expected" ]; then - ok=x$ok - else - failures=x$failures - echo "For $code, expected $expected actual $result" - fi -} - -testcase 'set -- a b; set -- p$@q' '2|pa|bq' -testcase 'set -- a b; set -- $@q' '2|a|bq' -testcase 'set -- a b; set -- p$@' '2|pa|b' -testcase 'set -- a b; set -- p$@q' '2|pa|bq' -testcase 'set -- a b; set -- $@q' '2|a|bq' -testcase 'set -- a b; set -- p$@' '2|pa|b' -testcase 'set -- a b; set -- p$*q' '2|pa|bq' -testcase 'set -- a b; set -- $*q' '2|a|bq' -testcase 'set -- a b; set -- p$*' '2|pa|b' -testcase 'set -- a b; set -- p$*q' '2|pa|bq' -testcase 'set -- a b; set -- $*q' '2|a|bq' -testcase 'set -- a b; set -- p$*' '2|pa|b' -testcase 'set -- a b; set -- "p$@q"' '2|pa|bq' -testcase 'set -- a b; set -- "$@q"' '2|a|bq' -testcase 'set -- a b; set -- "p$@"' '2|pa|b' -testcase 'set -- a b; set -- p"$@"q' '2|pa|bq' -testcase 'set -- a b; set -- "$@"q' '2|a|bq' -testcase 'set -- a b; set -- p"$@"' '2|pa|b' -testcase 'set -- "" a b; set -- "p$@q"' '3|p|a|bq' -testcase 'set -- "" a b; set -- "$@q"' '3||a|bq' -testcase 'set -- "" a b; set -- "p$@"' '3|p|a|b' -testcase 'set -- "" a b; set -- p"$@"q' '3|p|a|bq' -testcase 'set -- "" a b; set -- "$@"q' '3||a|bq' -testcase 'set -- "" a b; set -- p"$@"' '3|p|a|b' -testcase 'set -- a; set -- p$@q' '1|paq' -testcase 'set -- a; set -- $@q' '1|aq' -testcase 'set -- a; set -- p$@' '1|pa' -testcase 'set -- a; set -- p$@q' '1|paq' -testcase 'set -- a; set -- $@q' '1|aq' -testcase 'set -- a; set -- p$@' '1|pa' -testcase 'set -- a; set -- p$*q' '1|paq' -testcase 'set -- a; set -- $*q' '1|aq' -testcase 'set -- a; set -- p$*' '1|pa' -testcase 'set -- a; set -- p$*q' '1|paq' -testcase 'set -- a; set -- $*q' '1|aq' -testcase 'set -- a; set -- p$*' '1|pa' -testcase 'set -- a; set -- "p$@q"' '1|paq' -testcase 'set -- a; set -- "$@q"' '1|aq' -testcase 'set -- a; set -- "p$@"' '1|pa' -testcase 'set -- a; set -- p"$@"q' '1|paq' -testcase 'set -- a; set -- "$@"q' '1|aq' -testcase 'set -- a; set -- p"$@"' '1|pa' - -test "x$failures" = x diff --git a/tools/regression/bin/sh/parameters/pwd1.0 b/tools/regression/bin/sh/parameters/pwd1.0 deleted file mode 100644 index 0099379..0000000 --- a/tools/regression/bin/sh/parameters/pwd1.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ -# Check that bogus PWD values are not accepted from the environment. - -cd / || exit 3 -failures=0 -[ "$(PWD=foo ${SH} -c 'pwd')" = / ] || : $((failures += 1)) -[ "$(PWD=/var/empty ${SH} -c 'pwd')" = / ] || : $((failures += 1)) -[ "$(PWD=/var/empty/foo ${SH} -c 'pwd')" = / ] || : $((failures += 1)) -[ "$(PWD=/bin/ls ${SH} -c 'pwd')" = / ] || : $((failures += 1)) - -exit $((failures != 0)) diff --git a/tools/regression/bin/sh/parameters/pwd2.0 b/tools/regression/bin/sh/parameters/pwd2.0 deleted file mode 100644 index 2297f8b..0000000 --- a/tools/regression/bin/sh/parameters/pwd2.0 +++ /dev/null @@ -1,24 +0,0 @@ -# $FreeBSD$ -# Check that PWD is exported and accepted from the environment. -set -e - -T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) -trap 'rm -rf $T' 0 -cd -P $T -TP=$(pwd) -mkdir test1 -ln -s test1 link -cd link -[ "$PWD" = "$TP/link" ] -[ "$(pwd)" = "$TP/link" ] -[ "$(pwd -P)" = "$TP/test1" ] -[ "$(${SH} -c pwd)" = "$TP/link" ] -[ "$(${SH} -c pwd\ -P)" = "$TP/test1" ] -cd .. -[ "$(pwd)" = "$TP" ] -cd -P link -[ "$PWD" = "$TP/test1" ] -[ "$(pwd)" = "$TP/test1" ] -[ "$(pwd -P)" = "$TP/test1" ] -[ "$(${SH} -c pwd)" = "$TP/test1" ] -[ "$(${SH} -c pwd\ -P)" = "$TP/test1" ] diff --git a/tools/regression/bin/sh/parser/alias1.0 b/tools/regression/bin/sh/parser/alias1.0 deleted file mode 100644 index 75dd9ab..0000000 --- a/tools/regression/bin/sh/parser/alias1.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -alias alias0=exit -eval 'alias0 0' -exit 1 diff --git a/tools/regression/bin/sh/parser/alias10.0 b/tools/regression/bin/sh/parser/alias10.0 deleted file mode 100644 index 30d99f4..0000000 --- a/tools/regression/bin/sh/parser/alias10.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -# This test may start consuming memory indefinitely if it fails. -ulimit -t 5 2>/dev/null -ulimit -v 100000 2>/dev/null - -alias echo='echo' -alias echo='echo' -[ "`eval echo b`" = b ] diff --git a/tools/regression/bin/sh/parser/alias2.0 b/tools/regression/bin/sh/parser/alias2.0 deleted file mode 100644 index ae99b8a..0000000 --- a/tools/regression/bin/sh/parser/alias2.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -alias alias0=exit -x=alias0 -eval 'case $x in alias0) exit 0;; esac' -exit 1 diff --git a/tools/regression/bin/sh/parser/alias3.0 b/tools/regression/bin/sh/parser/alias3.0 deleted file mode 100644 index e0721e2..0000000 --- a/tools/regression/bin/sh/parser/alias3.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -alias alias0=exit -x=alias0 -eval 'case $x in "alias0") alias0 0;; esac' -exit 1 diff --git a/tools/regression/bin/sh/parser/alias4.0 b/tools/regression/bin/sh/parser/alias4.0 deleted file mode 100644 index 19332ed..0000000 --- a/tools/regression/bin/sh/parser/alias4.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -alias alias0=exit -eval 'x=1 alias0 0' -exit 1 diff --git a/tools/regression/bin/sh/parser/alias5.0 b/tools/regression/bin/sh/parser/alias5.0 deleted file mode 100644 index 3d0205f..0000000 --- a/tools/regression/bin/sh/parser/alias5.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -alias alias0=exit -eval '&2 ;; - esac) -} -f1 -f2() { - x=$(case x in - (x|esac) ;; - (*) echo bad >&2 - esac) -} -f2 -f3() { - x=$(case x in - x|esac) ;; - *) echo bad >&2 ;; - esac) -} -f3 -f4() { - x=$(case x in - x|esac) ;; - *) echo bad >&2 - esac) -} -f4 diff --git a/tools/regression/bin/sh/parser/dollar-quote1.0 b/tools/regression/bin/sh/parser/dollar-quote1.0 deleted file mode 100644 index 1206141..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote1.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -set -e - -[ $'hi' = hi ] -[ $'hi -there' = 'hi -there' ] -[ $'\"\'\\\a\b\f\t\v' = "\"'\\$(printf "\a\b\f\t\v")" ] -[ $'hi\nthere' = 'hi -there' ] -[ $'a\rb' = "$(printf "a\rb")" ] diff --git a/tools/regression/bin/sh/parser/dollar-quote10.0 b/tools/regression/bin/sh/parser/dollar-quote10.0 deleted file mode 100644 index ad166da..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote10.0 +++ /dev/null @@ -1,10 +0,0 @@ -# $FreeBSD$ - -# a umlaut -s=$(printf '\303\244') -# euro sign -s=$s$(printf '\342\202\254') - -# Start a new shell so the locale change is picked up. -ss="$(LC_ALL=en_US.UTF-8 ${SH} -c "printf %s \$'\u00e4\u20ac'")" -[ "$s" = "$ss" ] diff --git a/tools/regression/bin/sh/parser/dollar-quote11.0 b/tools/regression/bin/sh/parser/dollar-quote11.0 deleted file mode 100644 index 2e872ab..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote11.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -# some sort of 't' outside BMP -s=$s$(printf '\360\235\225\245') - -# Start a new shell so the locale change is picked up. -ss="$(LC_ALL=en_US.UTF-8 ${SH} -c "printf %s \$'\U0001d565'")" -[ "$s" = "$ss" ] diff --git a/tools/regression/bin/sh/parser/dollar-quote2.0 b/tools/regression/bin/sh/parser/dollar-quote2.0 deleted file mode 100644 index 4617ed8..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote2.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -# This depends on the ASCII character set. - -[ $'\e' = "$(printf "\033")" ] diff --git a/tools/regression/bin/sh/parser/dollar-quote3.0 b/tools/regression/bin/sh/parser/dollar-quote3.0 deleted file mode 100644 index a7e6852..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote3.0 +++ /dev/null @@ -1,22 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.ISO8859-1 -export LC_CTYPE - -e= -for i in 0 1 2 3; do - for j in 0 1 2 3 4 5 6 7; do - for k in 0 1 2 3 4 5 6 7; do - case $i$j$k in - 000) continue ;; - esac - e="$e\\$i$j$k" - done - done -done -ee=`printf "$e"` -[ "${#ee}" = 255 ] || echo length bad - -# Start a new shell so the locale change is picked up. -[ "$(${SH} -c "printf %s \$'$e'")" = "$ee" ] diff --git a/tools/regression/bin/sh/parser/dollar-quote4.0 b/tools/regression/bin/sh/parser/dollar-quote4.0 deleted file mode 100644 index f620af5..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote4.0 +++ /dev/null @@ -1,19 +0,0 @@ -# $FreeBSD$ - -unset LC_ALL -LC_CTYPE=en_US.ISO8859-1 -export LC_CTYPE - -e= -for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do - for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do - case $i$j in - 00) continue ;; - esac - e="$e\x$i$j" - done -done - -# Start a new shell so the locale change is picked up. -ee="$(${SH} -c "printf %s \$'$e'")" -[ "${#ee}" = 255 ] || echo length bad diff --git a/tools/regression/bin/sh/parser/dollar-quote5.0 b/tools/regression/bin/sh/parser/dollar-quote5.0 deleted file mode 100644 index c2c44ca..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote5.0 +++ /dev/null @@ -1,12 +0,0 @@ -# $FreeBSD$ - -# This depends on the ASCII character set. - -set -e - -[ $'\ca\cb\cc\cd\ce\cf\cg\ch\ci\cj\ck\cl\cm\cn\co\cp\cq\cr\cs\ct\cu\cv\cw\cx\cy\cz' = $'\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032' ] -[ $'\cA\cB\cC\cD\cE\cF\cG\cH\cI\cJ\cK\cL\cM\cN\cO\cP\cQ\cR\cS\cT\cU\cV\cW\cX\cY\cZ' = $'\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032' ] -[ $'\c[' = $'\033' ] -[ $'\c]' = $'\035' ] -[ $'\c^' = $'\036' ] -[ $'\c_' = $'\037' ] diff --git a/tools/regression/bin/sh/parser/dollar-quote6.0 b/tools/regression/bin/sh/parser/dollar-quote6.0 deleted file mode 100644 index a4b1e3f..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote6.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -# This depends on the ASCII character set. - -[ $'\c\\' = $'\034' ] diff --git a/tools/regression/bin/sh/parser/dollar-quote7.0 b/tools/regression/bin/sh/parser/dollar-quote7.0 deleted file mode 100644 index c866b1a..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote7.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -set -e - -[ $'\u0024\u0040\u0060' = '$@`' ] -[ $'\U00000024\U00000040\U00000060' = '$@`' ] diff --git a/tools/regression/bin/sh/parser/dollar-quote8.0 b/tools/regression/bin/sh/parser/dollar-quote8.0 deleted file mode 100644 index 8f0b41a..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote8.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ - -[ $'hello\0' = hello ] -[ $'hello\0world' = hello ] -[ $'hello\0'$'world' = helloworld ] -[ $'hello\000' = hello ] -[ $'hello\000world' = hello ] -[ $'hello\000'$'world' = helloworld ] -[ $'hello\x00' = hello ] -[ $'hello\x00world' = hello ] -[ $'hello\x00'$'world' = helloworld ] diff --git a/tools/regression/bin/sh/parser/dollar-quote9.0 b/tools/regression/bin/sh/parser/dollar-quote9.0 deleted file mode 100644 index df64b7d..0000000 --- a/tools/regression/bin/sh/parser/dollar-quote9.0 +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ - -# POSIX and C99 say D800-DFFF are undefined in a universal character name. -# We reject this but many other shells expand to something that looks like -# CESU-8. - -v=$( (eval ": \$'\uD800'") 2>&1 >/dev/null) -[ $? -ne 0 ] && [ -n "$v" ] diff --git a/tools/regression/bin/sh/parser/empty-braces1.0 b/tools/regression/bin/sh/parser/empty-braces1.0 deleted file mode 100644 index 5ab443c..0000000 --- a/tools/regression/bin/sh/parser/empty-braces1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ - -# Unfortunately, some scripts depend on the extension of allowing an empty -# pair of braces. - -{ } & -wait $! diff --git a/tools/regression/bin/sh/parser/empty-cmd1.0 b/tools/regression/bin/sh/parser/empty-cmd1.0 deleted file mode 100644 index f8b01e9..0000000 --- a/tools/regression/bin/sh/parser/empty-cmd1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ - -! (eval ': || f()') 2>/dev/null diff --git a/tools/regression/bin/sh/parser/for1.0 b/tools/regression/bin/sh/parser/for1.0 deleted file mode 100644 index eb7c881..0000000 --- a/tools/regression/bin/sh/parser/for1.0 +++ /dev/null @@ -1,29 +0,0 @@ -# $FreeBSD$ - -nl=' -' -list=' a b c' -for s1 in "$nl" " "; do - for s2 in "$nl" ";" ";$nl"; do - for s3 in "$nl" " "; do - r='' - eval "for i${s1}in ${list}${s2}do${s3}r=\"\$r \$i\"; done" - [ "$r" = "$list" ] || exit 1 - done - done -done -set -- $list -for s2 in "$nl" " "; do - for s3 in "$nl" " "; do - r='' - eval "for i${s2}do${s3}r=\"\$r \$i\"; done" - [ "$r" = "$list" ] || exit 1 - done -done -for s1 in "$nl" " "; do - for s2 in "$nl" ";" ";$nl"; do - for s3 in "$nl" " "; do - eval "for i${s1}in${s2}do${s3}exit 1; done" - done - done -done diff --git a/tools/regression/bin/sh/parser/for2.0 b/tools/regression/bin/sh/parser/for2.0 deleted file mode 100644 index 54ebfc3..0000000 --- a/tools/regression/bin/sh/parser/for2.0 +++ /dev/null @@ -1,15 +0,0 @@ -# $FreeBSD$ - -# Common extensions to the 'for' syntax. - -nl=' -' -list=' a b c' -set -- $list -for s2 in ";" ";$nl"; do - for s3 in "$nl" " "; do - r='' - eval "for i${s2}do${s3}r=\"\$r \$i\"; done" - [ "$r" = "$list" ] || exit 1 - done -done diff --git a/tools/regression/bin/sh/parser/func1.0 b/tools/regression/bin/sh/parser/func1.0 deleted file mode 100644 index 4e887b2..0000000 --- a/tools/regression/bin/sh/parser/func1.0 +++ /dev/null @@ -1,25 +0,0 @@ -# $FreeBSD$ -# POSIX does not require these bytes to work in function names, -# but making them all work seems a good goal. - -failures=0 -unset LC_ALL -export LC_CTYPE=en_US.ISO8859-1 -i=128 -set -f -while [ "$i" -le 255 ]; do - c=$(printf \\"$(printf %o "$i")") - ok=0 - eval "$c() { ok=1; }" - $c - ok1=$ok - ok=0 - "$c" - if [ "$ok" != 1 ] || [ "$ok1" != 1 ]; then - echo "Bad results for character $i" >&2 - : $((failures += 1)) - fi - unset -f $c - i=$((i+1)) -done -exit $((failures > 0)) diff --git a/tools/regression/bin/sh/parser/func2.0 b/tools/regression/bin/sh/parser/func2.0 deleted file mode 100644 index 5fd4dda..0000000 --- a/tools/regression/bin/sh/parser/func2.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -f() { return 42; } -f() { return 3; } & -f -[ $? -eq 42 ] diff --git a/tools/regression/bin/sh/parser/func3.0 b/tools/regression/bin/sh/parser/func3.0 deleted file mode 100644 index dcac732..0000000 --- a/tools/regression/bin/sh/parser/func3.0 +++ /dev/null @@ -1,6 +0,0 @@ -# $FreeBSD$ - -name=/var/empty/nosuch -f() { true; } <$name -name=/dev/null -f diff --git a/tools/regression/bin/sh/parser/heredoc1.0 b/tools/regression/bin/sh/parser/heredoc1.0 deleted file mode 100644 index 5ce3897..0000000 --- a/tools/regression/bin/sh/parser/heredoc1.0 +++ /dev/null @@ -1,85 +0,0 @@ -# $FreeBSD$ - -failures=0 - -check() { - if ! eval "[ $* ]"; then - echo "Failed: $*" - : $((failures += 1)) - fi -} - -check '"$(cat </dev/null; command eval : hi \${r:=0} -exit ${r:-3} diff --git a/tools/regression/bin/sh/parser/heredoc7.0 b/tools/regression/bin/sh/parser/heredoc7.0 deleted file mode 100644 index a150106..0000000 --- a/tools/regression/bin/sh/parser/heredoc7.0 +++ /dev/null @@ -1,19 +0,0 @@ -# $FreeBSD$ - -# Some of these created malformed parse trees with null pointers for here -# documents, causing the here document writing process to segfault. -eval ': </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/tools/regression/bin/sh/regress.sh b/tools/regression/bin/sh/regress.sh deleted file mode 100644 index 60e5805..0000000 --- a/tools/regression/bin/sh/regress.sh +++ /dev/null @@ -1,42 +0,0 @@ -# $FreeBSD$ - -if [ -z "${SH}" ]; then - echo '${SH} is not set, please correct and re-run.' - exit 1 -fi -export SH=${SH} - -COUNTER=1 - -do_test() { - c=${COUNTER} - COUNTER=$((COUNTER+1)) - ${SH} $1 > tmp.stdout 2> tmp.stderr - if [ $? -ne $2 ]; then - echo "not ok ${c} - ${1} # wrong exit status" - rm tmp.stdout tmp.stderr - return - fi - for i in stdout stderr; do - if [ -f ${1}.${i} ]; then - if ! cmp -s tmp.${i} ${1}.${i}; then - echo "not ok ${c} - ${1} # wrong output on ${i}" - rm tmp.stdout tmp.stderr - return - fi - elif [ -s tmp.${i} ]; then - echo "not ok ${c} - ${1} # wrong output on ${i}" - rm tmp.stdout tmp.stderr - return - fi - done - echo "ok ${c} - ${1}" - rm tmp.stdout tmp.stderr -} - -TESTS=$(find -Es . -regex ".*\.[0-9]+") -printf "1..%d\n" $(echo ${TESTS} | wc -w) - -for i in ${TESTS} ; do - do_test ${i} ${i##*.} -done diff --git a/tools/regression/bin/sh/regress.t b/tools/regression/bin/sh/regress.t deleted file mode 100644 index 89b1828..0000000 --- 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/sh/set-e/and1.0 b/tools/regression/bin/sh/set-e/and1.0 deleted file mode 100644 index 607b7c3..0000000 --- a/tools/regression/bin/sh/set-e/and1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -true && true diff --git a/tools/regression/bin/sh/set-e/and2.1 b/tools/regression/bin/sh/set-e/and2.1 deleted file mode 100644 index 78e203a..0000000 --- a/tools/regression/bin/sh/set-e/and2.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -true && false -exit 0 diff --git a/tools/regression/bin/sh/set-e/and3.0 b/tools/regression/bin/sh/set-e/and3.0 deleted file mode 100644 index 9fafb1c..0000000 --- a/tools/regression/bin/sh/set-e/and3.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -false && true -exit 0 diff --git a/tools/regression/bin/sh/set-e/and4.0 b/tools/regression/bin/sh/set-e/and4.0 deleted file mode 100644 index 25d0e61..0000000 --- a/tools/regression/bin/sh/set-e/and4.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -false && false -exit 0 diff --git a/tools/regression/bin/sh/set-e/background1.0 b/tools/regression/bin/sh/set-e/background1.0 deleted file mode 100644 index 21577f4..0000000 --- a/tools/regression/bin/sh/set-e/background1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -false & diff --git a/tools/regression/bin/sh/set-e/cmd1.0 b/tools/regression/bin/sh/set-e/cmd1.0 deleted file mode 100644 index 67fdcbc..0000000 --- a/tools/regression/bin/sh/set-e/cmd1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -true diff --git a/tools/regression/bin/sh/set-e/cmd2.1 b/tools/regression/bin/sh/set-e/cmd2.1 deleted file mode 100644 index 7cd8b09..0000000 --- a/tools/regression/bin/sh/set-e/cmd2.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -false -exit 0 diff --git a/tools/regression/bin/sh/set-e/elif1.0 b/tools/regression/bin/sh/set-e/elif1.0 deleted file mode 100644 index 6a5937d..0000000 --- a/tools/regression/bin/sh/set-e/elif1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -set -e -if false; then - : -elif false; then - : -fi diff --git a/tools/regression/bin/sh/set-e/elif2.0 b/tools/regression/bin/sh/set-e/elif2.0 deleted file mode 100644 index 9dbb4bf..0000000 --- a/tools/regression/bin/sh/set-e/elif2.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -set -e -if false; then - : -elif false; false; then - : -fi diff --git a/tools/regression/bin/sh/set-e/eval1.0 b/tools/regression/bin/sh/set-e/eval1.0 deleted file mode 100644 index 9b7f67b..0000000 --- a/tools/regression/bin/sh/set-e/eval1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -eval false || true diff --git a/tools/regression/bin/sh/set-e/eval2.1 b/tools/regression/bin/sh/set-e/eval2.1 deleted file mode 100644 index 8bb7f3a..0000000 --- a/tools/regression/bin/sh/set-e/eval2.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -eval false -exit 0 diff --git a/tools/regression/bin/sh/set-e/for1.0 b/tools/regression/bin/sh/set-e/for1.0 deleted file mode 100644 index 67eb718..0000000 --- a/tools/regression/bin/sh/set-e/for1.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ -set -e -f() { - for i in a b c; do - false - true - done -} -f || true diff --git a/tools/regression/bin/sh/set-e/func1.0 b/tools/regression/bin/sh/set-e/func1.0 deleted file mode 100644 index 3c6b704..0000000 --- a/tools/regression/bin/sh/set-e/func1.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -set -e -f() { - false - true -} -f || true diff --git a/tools/regression/bin/sh/set-e/func2.1 b/tools/regression/bin/sh/set-e/func2.1 deleted file mode 100644 index cc76d6e..0000000 --- a/tools/regression/bin/sh/set-e/func2.1 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -set -e -f() { - false - exit 0 -} -f diff --git a/tools/regression/bin/sh/set-e/if1.0 b/tools/regression/bin/sh/set-e/if1.0 deleted file mode 100644 index 36aa4bd..0000000 --- a/tools/regression/bin/sh/set-e/if1.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -set -e -if false; then - : -fi diff --git a/tools/regression/bin/sh/set-e/if2.0 b/tools/regression/bin/sh/set-e/if2.0 deleted file mode 100644 index 4955408..0000000 --- a/tools/regression/bin/sh/set-e/if2.0 +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -set -e -# PR 28852 -if true; then - false && true -fi -exit 0 diff --git a/tools/regression/bin/sh/set-e/if3.0 b/tools/regression/bin/sh/set-e/if3.0 deleted file mode 100644 index a4916a8..0000000 --- a/tools/regression/bin/sh/set-e/if3.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -set -e -if false; false; then - : -fi diff --git a/tools/regression/bin/sh/set-e/not1.0 b/tools/regression/bin/sh/set-e/not1.0 deleted file mode 100644 index 21c089a..0000000 --- a/tools/regression/bin/sh/set-e/not1.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -! true -exit 0 diff --git a/tools/regression/bin/sh/set-e/not2.0 b/tools/regression/bin/sh/set-e/not2.0 deleted file mode 100644 index 7d93b4d..0000000 --- a/tools/regression/bin/sh/set-e/not2.0 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -! false -! eval false diff --git a/tools/regression/bin/sh/set-e/or1.0 b/tools/regression/bin/sh/set-e/or1.0 deleted file mode 100644 index c2dcbe9..0000000 --- a/tools/regression/bin/sh/set-e/or1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -true || false diff --git a/tools/regression/bin/sh/set-e/or2.0 b/tools/regression/bin/sh/set-e/or2.0 deleted file mode 100644 index 934e2a6..0000000 --- a/tools/regression/bin/sh/set-e/or2.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -false || true diff --git a/tools/regression/bin/sh/set-e/or3.1 b/tools/regression/bin/sh/set-e/or3.1 deleted file mode 100644 index 7a617a1..0000000 --- a/tools/regression/bin/sh/set-e/or3.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -false || false -exit 0 diff --git a/tools/regression/bin/sh/set-e/pipe1.1 b/tools/regression/bin/sh/set-e/pipe1.1 deleted file mode 100644 index c0bad0f..0000000 --- a/tools/regression/bin/sh/set-e/pipe1.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -true | false -exit 0 diff --git a/tools/regression/bin/sh/set-e/pipe2.0 b/tools/regression/bin/sh/set-e/pipe2.0 deleted file mode 100644 index 1e25566..0000000 --- a/tools/regression/bin/sh/set-e/pipe2.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -false | true diff --git a/tools/regression/bin/sh/set-e/return1.0 b/tools/regression/bin/sh/set-e/return1.0 deleted file mode 100644 index 961bd41..0000000 --- a/tools/regression/bin/sh/set-e/return1.0 +++ /dev/null @@ -1,11 +0,0 @@ -# $FreeBSD$ -set -e - -# PR 77067, 85267 -f() { - return 1 - true -} - -f || true -exit 0 diff --git a/tools/regression/bin/sh/set-e/semi1.1 b/tools/regression/bin/sh/set-e/semi1.1 deleted file mode 100644 index 90476a9..0000000 --- a/tools/regression/bin/sh/set-e/semi1.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -false; true -exit 0 diff --git a/tools/regression/bin/sh/set-e/semi2.1 b/tools/regression/bin/sh/set-e/semi2.1 deleted file mode 100644 index 8f510ac..0000000 --- a/tools/regression/bin/sh/set-e/semi2.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -true; false -exit 0 diff --git a/tools/regression/bin/sh/set-e/subshell1.0 b/tools/regression/bin/sh/set-e/subshell1.0 deleted file mode 100644 index 8e5831b..0000000 --- a/tools/regression/bin/sh/set-e/subshell1.0 +++ /dev/null @@ -1,3 +0,0 @@ -# $FreeBSD$ -set -e -(true) diff --git a/tools/regression/bin/sh/set-e/subshell2.1 b/tools/regression/bin/sh/set-e/subshell2.1 deleted file mode 100644 index 619e98a..0000000 --- a/tools/regression/bin/sh/set-e/subshell2.1 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ -set -e -(false) -exit 0 diff --git a/tools/regression/bin/sh/set-e/until1.0 b/tools/regression/bin/sh/set-e/until1.0 deleted file mode 100644 index 71ea7f2..0000000 --- a/tools/regression/bin/sh/set-e/until1.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -set -e -until false; do - break -done diff --git a/tools/regression/bin/sh/set-e/until2.0 b/tools/regression/bin/sh/set-e/until2.0 deleted file mode 100644 index 24ea276..0000000 --- a/tools/regression/bin/sh/set-e/until2.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -set -e -until false; false; do - break -done diff --git a/tools/regression/bin/sh/set-e/until3.0 b/tools/regression/bin/sh/set-e/until3.0 deleted file mode 100644 index 597db59..0000000 --- a/tools/regression/bin/sh/set-e/until3.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ -set -e -f() { - until false; do - false - break - done -} -f || true diff --git a/tools/regression/bin/sh/set-e/while1.0 b/tools/regression/bin/sh/set-e/while1.0 deleted file mode 100644 index 371c94a..0000000 --- a/tools/regression/bin/sh/set-e/while1.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -set -e -while false; do - : -done diff --git a/tools/regression/bin/sh/set-e/while2.0 b/tools/regression/bin/sh/set-e/while2.0 deleted file mode 100644 index 124966c..0000000 --- a/tools/regression/bin/sh/set-e/while2.0 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ -set -e -while false; false; do - : -done diff --git a/tools/regression/bin/sh/set-e/while3.0 b/tools/regression/bin/sh/set-e/while3.0 deleted file mode 100644 index dd3c790..0000000 --- a/tools/regression/bin/sh/set-e/while3.0 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ -set -e -f() { - while true; do - false - break - done -} -f || true diff --git a/tools/regression/bin/test/Makefile b/tools/regression/bin/test/Makefile deleted file mode 100644 index 2c9ca59..0000000 --- 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.sh b/tools/regression/bin/test/regress.sh deleted file mode 100644 index 9229551..0000000 --- a/tools/regression/bin/test/regress.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/bin/sh - -#- -# Copyright (c) June 1996 Wolfram Schneider . Berlin. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. - -# -# TEST.sh - check if test(1) or builtin test works -# -# $FreeBSD$ - -# force a specified test program, e.g. `env test=/bin/test sh regress.sh' -: ${test=test} - -t () -{ - # $1 -> exit code - # $2 -> $test expression - - count=$((count+1)) - # check for syntax errors - syntax="`eval $test $2 2>&1`" - ret=$? - if test -n "$syntax"; then - printf "not ok %s - (syntax error)\n" "$count $2" - elif [ "$ret" != "$1" ]; then - printf "not ok %s - (got $ret, expected $1)\n" "$count $2" - else - printf "ok %s\n" "$count $2" - fi -} - -count=0 -echo "1..130" - -t 0 'b = b' -t 0 'b == b' -t 1 'b != b' -t 0 '\( b = b \)' -t 0 '\( b == b \)' -t 1 '! \( b = b \)' -t 1 '! \( b == b \)' -t 1 '! -f /etc/passwd' - -t 0 '-h = -h' -t 0 '-o = -o' -t 1 '-f = h' -t 1 '-h = f' -t 1 '-o = f' -t 1 'f = -o' -t 0 '\( -h = -h \)' -t 1 '\( a = -h \)' -t 1 '\( -f = h \)' -t 0 '-h = -h -o a' -t 0 '\( -h = -h \) -o 1' -t 0 '-h = -h -o -h = -h' -t 0 '\( -h = -h \) -o \( -h = -h \)' -t 0 'roedelheim = roedelheim' -t 1 'potsdam = berlin-dahlem' - -t 0 '-d /' -t 0 '-d / -a a != b' -t 1 '-z "-z"' -t 0 '-n -n' - -t 0 '0' -t 0 '\( 0 \)' -t 0 '-E' -t 0 '-X -a -X' -t 0 '-XXX' -t 0 '\( -E \)' -t 0 'true -o X' -t 0 'true -o -X' -t 0 '\( \( \( a = a \) -o 1 \) -a 1 \) -a true' -t 1 '-h /' -t 0 '-r /' -t 1 '-w /' -t 0 '-x /bin/sh' -t 0 '-c /dev/null' -t 0 '-f /etc/passwd' -t 0 '-s /etc/passwd' - -t 1 '! \( 700 -le 1000 -a -n "1" -a "20" = "20" \)' -t 0 '100 -eq 100' -t 0 '100 -lt 200' -t 1 '1000 -lt 200' -t 0 '1000 -gt 200' -t 0 '1000 -ge 200' -t 0 '1000 -ge 1000' -t 1 '2 -ne 2' -t 0 '0 -eq 0' -t 1 '-5 -eq 5' -t 0 '\( 0 -eq 0 \)' -t 1 '1 -eq 0 -o a = a -a 1 -eq 0 -o a = aa' - -t 1 '"" -o ""' -t 1 '"" -a ""' -t 1 '"a" -a ""' -t 0 '"a" -a ! ""' -t 1 '""' -t 0 '! ""' - -t 0 '!' -t 0 '\(' -t 0 '\)' - -t 1 '\( = \)' -t 0 '\( != \)' -t 0 '\( ! \)' -t 0 '\( \( \)' -t 0 '\( \) \)' -t 0 '! = !' -t 1 '! != !' -t 1 '-n = \)' -t 0 '! != \)' -t 1 '! = a' -t 0 '! != -n' -t 0 '! -c /etc/passwd' - -t 1 '! = = =' -t 0 '! = = \)' -t 0 '! "" -o ""' -t 1 '! "x" -o ""' -t 1 '! "" -o "x"' -t 1 '! "x" -o "x"' -t 0 '\( -f /etc/passwd \)' -t 0 '\( ! "" \)' -t 1 '\( ! -e \)' - -t 0 '0 -eq 0 -a -d /' -t 0 '-s = "" -o "" = ""' -t 0 '"" = "" -o -s = ""' -t 1 '-s = "" -o -s = ""' -t 0 '-z x -o x = "#" -o x = x' -t 1 '-z y -o y = "#" -o y = x' -t 0 '0 -ne 0 -o ! -f /' -t 0 '1 -ne 0 -o ! -f /etc/passwd' -t 1 '0 -ne 0 -o ! -f /etc/passwd' - -t 0 '-n =' -t 1 '-z =' -t 1 '! =' -t 0 '-n -eq' -t 1 '-z -eq' -t 1 '! -eq' -t 0 '-n -a' -t 1 '-z -a' -t 1 '! -a' -t 0 '-n -o' -t 1 '-z -o' -t 1 '! -o' -t 1 '! -n =' -t 0 '! -z =' -t 0 '! ! =' -t 1 '! -n -eq' -t 0 '! -z -eq' -t 0 '! ! -eq' -t 1 '! -n -a' -t 0 '! -z -a' -t 0 '! ! -a' -t 1 '! -n -o' -t 0 '! -z -o' -t 0 '! ! -o' -t 0 '\( -n = \)' -t 1 '\( -z = \)' -t 1 '\( ! = \)' -t 0 '\( -n -eq \)' -t 1 '\( -z -eq \)' -t 1 '\( ! -eq \)' -t 0 '\( -n -a \)' -t 1 '\( -z -a \)' -t 1 '\( ! -a \)' -t 0 '\( -n -o \)' -t 1 '\( -z -o \)' -t 1 '\( ! -o \)' diff --git a/tools/regression/bin/test/regress.t b/tools/regression/bin/test/regress.t deleted file mode 100644 index c36d834..0000000 --- a/tools/regression/bin/test/regress.t +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# $FreeBSD$ - -cd `dirname $0` - -sh regress.sh -- cgit v1.1