Aggregate tests into test suites.

This is a big change, but it is conceptually quite simple.  In the old
system, the tests were specified each by multiple files ('.sh', '.exit',
'.stdout', and '.stderr'), and run with the 'test.sh' script.  In the
new system there are multiple tests per file ('.org') and these test
suite files are run with the 'tests/run-test-suite' script.

* tests/00-exit-0.sh,
tests/00-exit-1.exit,
tests/00-exit-1.sh,
tests/00-exit-2.exit,
tests/00-exit-2.sh,
tests/00-exit-error.exit,
tests/00-exit-error.sh,
tests/00-exit-var.exit,
tests/00-exit-var.sh,
tests/00-exit.sh: Delete files, moving their contents...
* tests/exiting.org: ...here.
* tests/01-script-arg-0.sh,
tests/01-script-arg-length.sh,
tests/01-script-arg-length.stdout,
tests/01-script-arg-list.sh,
tests/01-script-arg-list.stdout,
tests/01-script-backslash-space.sh,
tests/01-script-backslash-twice.exit,
tests/01-script-backslash-twice.sh,
tests/01-script-backslash.exit,
tests/01-script-backslash.sh,
tests/01-script-newline.exit,
tests/01-script-newline.sh,
tests/01-script-semi.exit,
tests/01-script-semi.sh,
tests/01-script-shift.sh,
tests/01-script-shift.stdout: Delete files, moving their contents...
* tests/arguments.org: ...here.
* tests/03-echo-brace.sh,
tests/03-echo-brace.stdout,
tests/03-echo-doublequotes.sh,
tests/03-echo-doublequotes.stdout,
tests/03-echo-escaped-doublequotes.sh,
tests/03-echo-escaped-doublequotes.stdout,
tests/03-echo-nesting.sh,
tests/03-echo-nesting.stdout,
tests/03-echo-quoted-doublequotes.sh,
tests/03-echo-quoted-doublequotes.stdout,
tests/03-echo.sh: Delete files, moving their contents...
* tests/words.org: ...here.
* tests/04-echo-equal.sh,
tests/04-echo-equal.stdout,
tests/04-echo-var.sh,
tests/04-echo-word-at-word.sh,
tests/04-echo-word-at-word.stdout,
tests/04-echo-word-at.sh,
tests/04-echo-word-at.stdout: Delete files, moving their contents...
* tests/variable-words.org: ...here.
* tests/05-assignment-backtick.sh,
tests/05-assignment-backtick.stdout,
tests/05-assignment-double-quote.sh,
tests/05-assignment-doublequoted-doublequotes.sh,
tests/05-assignment-doublequoted-doublequotes.stdout,
tests/05-assignment-echo.sh,
tests/05-assignment-echo.stdout,
tests/05-assignment-empty.sh,
tests/05-assignment-empty.stdout,
tests/05-assignment-singlequote.sh,
tests/05-assignment-variable-word.sh,
tests/05-assignment-variable-word.stdout,
tests/05-assignment-word-variable.sh,
tests/05-assignment-word-variable.stdout,
tests/05-assignment.sh: Delete files, moving their contents...
* tests/assignments.org: ...here.
* tests/06-command-compound-word.sh,
tests/06-command-compound-word.stdout,
tests/06-compound-word.sh,
tests/06-compound-word.stdout: Delete files, moving their contents...
* tests/compound-words.org: ...here.
* tests/07-variable-not-or.sh,
tests/07-variable-not-or.stdout,
tests/07-variable-or-doublequote.sh,
tests/07-variable-or-doublequote.stdout,
tests/07-variable-or-empty.sh,
tests/07-variable-or-empty.stdout,
tests/07-variable-or-slash.sh,
tests/07-variable-or-variable.sh,
tests/07-variable-or-variable.stdout,
tests/07-variable-or.sh,
tests/07-variable-or.stdout: Delete files, moving their contents...
* tests/variable-or.org: ...here.
* tests/08-variable-and.sh,
tests/08-variable-and.stdout,
tests/08-variable-not-and.sh,
tests/08-variable-not-and.stdout: Delete files, moving their contents...
* tests/variable-and.org: ...here.
* tests/10-else-multiple.sh,
tests/10-else.multiple.stdout,
tests/10-if-bracket-false.sh,
tests/10-if-bracket.sh,
tests/10-if-elif.sh,
tests/10-if-else.sh,
tests/10-if-false.sh,
tests/10-if-line.sh,
tests/10-if-multiple.sh,
tests/10-if-multiple.stdout,
tests/10-if-redirect.sh,
tests/10-if-test-false.sh,
tests/10-if-test.sh,
tests/10-if-word-variable.sh,
tests/10-if.sh: Delete files, moving their contents...
* tests/conditionals.org: ...here.
* tests/11-for-done-subshell.sh,
tests/11-for-done-subshell.stdout,
tests/11-for-split-sequence.sh,
tests/11-for-split-sequence.stdout,
tests/11-for.sh,
tests/11-for.stdout: Delete files, moving their contents...
* tests/loops.org: ...here.
* tests/20-and.exit,
tests/20-and.sh,
tests/20-exec.sh,
tests/20-or.sh,
tests/20-pipe-exit-0.sh,
tests/20-pipe-exit-1.exit,
tests/20-pipe-exit-1.sh,
tests/20-pipe-sed-cat.sh,
tests/20-pipe-sed-cat.stdout,
tests/20-pipe-sed.sh,
tests/20-pipe-sed.stdout,
tests/20-semi.exit,
tests/20-semi.sh: Delete files, moving their contents...
* tests/pipes-and-booleans.org: ...here.
* tests/30-for-substitution.sh,
tests/30-for-substitution.stdout,
tests/30-substitution-assignment-at.sh,
tests/30-substitution-assignment-at.stdout,
tests/30-substitution-assignment.sh,
tests/30-substitution-assignment.stdout,
tests/30-substitution-backtick.sh,
tests/30-substitution-backtick.stdout,
tests/30-substitution-redirect.sh,
tests/30-substitution-redirect.stdout,
tests/30-substitution-word.sh,
tests/30-substitution-word.stdout,
tests/30-substitution.sh,
tests/30-substitution.stdout: Delete files, moving their contents...
* tests/command-substitution.org: ...here.
* tests/40-assignment-eval-echo.sh,
tests/40-assignment-eval-echo.stdout,
tests/40-eval-echo-variable.sh,
tests/40-eval-echo-variable.stdout,
tests/40-eval.sh,
tests/40-eval.stdout: Delete files, moving their contents...
* tests/eval.org: ...here.
* tests/41-dot.sh,
tests/41-dot.stdout: Delete files, moving their contents...
* tests/dot.org: ...here.
* tests/42-export-new.sh,
tests/42-export-new.stdout,
tests/42-sh-export-new.sh,
tests/42-sh-export-new.stdout,
tests/42-sh-export.sh,
tests/42-sh-export.stdout,
tests/42-sh.sh,
tests/42-sh.stdout: Delete files, moving their contents...
* tests/exporting.org: ...here.
* tests/data/42-export-new.sh: New file (copied from
'tests/42-export-new.sh').
* tests/43-trap-subshell.sh,
tests/43-trap-subshell.stdout: Delete files, moving their contents...
* tests/signals.org: ...here.
* tests/50-iohere-builtin.sh,
tests/50-iohere.sh,
tests/50-iohere.stdout,
tests/50-redirect-append.sh,
tests/50-redirect-append.stdout,
tests/50-redirect-clobber.sh,
tests/50-redirect-clobber.stdout,
tests/50-redirect-in-out.sh,
tests/50-redirect-in-out.stdout,
tests/50-redirect-in.sh,
tests/50-redirect-merge.sh,
tests/50-redirect-merge.stdout,
tests/50-redirect-pipe.sh,
tests/50-redirect-pipe.stdout,
tests/50-redirect-sed.sh,
tests/50-redirect-sed.stdout,
tests/50-redirect-space.sh,
tests/50-redirect-space.stdout,
tests/50-redirect.sh,
tests/50-redirect.stdout: Delete files, moving their contents...
* tests/redirects.org: ...here.
* tests/60-function-at.sh,
tests/60-function-at.stdout,
tests/60-function.sh,
tests/60-function.stdout,
tests/60-subst.sh: Delete files, moving their contents...
* tests/functions.org: ...here.
* tests/70-hash-hash.sh,
tests/70-hash-hash.stdout,
tests/70-hash.sh,
tests/70-hash.stdout,
tests/70-percent-percent.sh,
tests/70-percent-percent.stdout,
tests/70-percent-space.sh,
tests/70-percent-space.stdout,
tests/70-percent.sh,
tests/70-percent.stdout,
tests/70-slash-string-slash.sh,
tests/70-slash-string.sh,
tests/70-slash-string.stdout,
tests/70-slash.sh,
tests/70-slash.stdout: Delete files, moving their contents...
* tests/variable-patterns.org: ...here.
* tests/100-bracket-file.sh,
tests/100-cd-foo.exit,
tests/100-cd-foo.sh,
tests/100-cd.sh,
tests/100-cd.stdout,
tests/100-test-false.sh,
tests/100-test-file.sh,
tests/100-test.sh: Delete files.
* tests/README: Move this...
* tests/data/README: ...here and adapt to the new directory.
* test.sh: Delete file.
* tests/run-test-suite.in: New file.
* configure.ac: Configure it.
* Makefile.am (TEST_EXTENSIONS): Replace '.sh' with '.org'.
(SH_LOG_COMPILER): Delete variable.
(ORG_LOG_COMPILER): New variable.
(FULL_TESTS, XFAIL_TESTS): Replace '.sh' tests with '.org' tests.
(BROKEN_TESTS): Delete variable.
(TEST_DATA_FILES): Remove '.exit' and '.stdout' files; add
tests/data/42-export-new.sh.
(EXTRA_DIST): Add tests/data/README; remove tests/README,
BROKEN_TESTS, and test.sh.
* .gitignore: Adjust accordingly.
This commit is contained in:
Timothy Sample 2019-06-12 17:21:41 -04:00
parent 375752301c
commit 7d2298d15b
218 changed files with 1827 additions and 943 deletions

3
.gitignore vendored
View File

@ -22,8 +22,7 @@
/lcov.info
/pre-inst-env
/scripts/gash
/tests/*.1
/tests/*.2
/tests/run-test-suite
/tests/spec/oil
/tests/spec/oil-link
/tests/unit/config.scm

View File

@ -28,7 +28,7 @@ EXTRA_DIST += \
build-aux/gitlab-ci.yml \
build-aux/gitlog-to-changelog \
guix.scm \
tests/README
tests/data/README
# Modules and scripts
#####################
@ -103,10 +103,11 @@ EXTRA_DIST += \
# Tests
#######
TEST_EXTENSIONS = .scm .sh
TEST_EXTENSIONS = .scm .org
SCM_LOG_COMPILER = $(top_builddir)/pre-inst-env $(GUILE)
AM_SCM_LOG_FLAGS = --no-auto-compile
SH_LOG_COMPILER = $(top_builddir)/pre-inst-env $(top_srcdir)/test.sh
ORG_LOG_COMPILER = $(top_builddir)/pre-inst-env \
$(top_builddir)/tests/run-test-suite
.PHONY: check-spec
check-spec:
@ -128,234 +129,47 @@ UNIT_TESTS = \
tests/unit/word.scm
FULL_TESTS = \
tests/00-exit.sh \
tests/00-exit-0.sh \
tests/00-exit-1.sh \
tests/00-exit-2.sh \
tests/00-exit-error.sh \
tests/00-exit-var.sh \
tests/01-script-newline.sh \
tests/01-script-semi.sh \
tests/01-script-backslash.sh \
tests/01-script-backslash-space.sh \
tests/01-script-backslash-twice.sh \
tests/01-script-arg-0.sh \
tests/01-script-arg-length.sh \
tests/01-script-arg-list.sh \
tests/01-script-shift.sh \
tests/03-echo.sh \
tests/03-echo-doublequotes.sh \
tests/03-echo-nesting.sh \
tests/03-echo-escaped-doublequotes.sh \
tests/03-echo-quoted-doublequotes.sh \
tests/03-echo-brace.sh \
tests/04-echo-var.sh \
tests/04-echo-equal.sh \
tests/04-echo-word-at.sh \
tests/04-echo-word-at-word.sh \
tests/05-assignment.sh \
tests/05-assignment-backtick.sh \
tests/05-assignment-echo.sh \
tests/05-assignment-empty.sh \
tests/05-assignment-singlequote.sh \
tests/05-assignment-double-quote.sh \
tests/05-assignment-variable-word.sh \
tests/05-assignment-word-variable.sh \
tests/05-assignment-doublequoted-doublequotes.sh \
tests/06-compound-word.sh \
tests/06-command-compound-word.sh \
tests/07-variable-or.sh \
tests/07-variable-not-or.sh \
tests/07-variable-or-slash.sh \
tests/07-variable-or-variable.sh \
tests/07-variable-or-doublequote.sh \
tests/07-variable-or-empty.sh \
tests/08-variable-and.sh \
tests/08-variable-not-and.sh \
tests/10-if.sh \
tests/10-if-false.sh \
tests/10-if-word-variable.sh \
tests/10-if-line.sh \
tests/10-if-multiple.sh \
tests/10-if-else.sh \
tests/10-else-multiple.sh \
tests/10-if-elif.sh \
tests/10-if-redirect.sh \
tests/10-if-test.sh \
tests/10-if-test-false.sh \
tests/10-if-bracket.sh \
tests/10-if-bracket-false.sh \
tests/11-for.sh \
tests/11-for-split-sequence.sh \
tests/11-for-done-subshell.sh \
tests/20-semi.sh \
tests/20-or.sh \
tests/20-and.sh \
tests/20-pipe-exit-0.sh \
tests/20-pipe-exit-1.sh \
tests/20-pipe-sed.sh \
tests/20-pipe-sed-cat.sh \
tests/20-exec.sh \
tests/30-substitution.sh \
tests/30-substitution-word.sh \
tests/30-substitution-backtick.sh \
tests/30-substitution-assignment.sh \
tests/30-for-substitution.sh \
tests/30-substitution-assignment.sh \
tests/30-substitution-assignment-at.sh \
tests/30-substitution-redirect.sh \
tests/40-eval.sh \
tests/40-eval-echo-variable.sh \
tests/40-assignment-eval-echo.sh \
tests/41-dot.sh \
tests/42-sh.sh \
tests/42-sh-export.sh \
tests/42-export-new.sh \
tests/42-sh-export-new.sh \
tests/43-trap-subshell.sh \
tests/50-iohere.sh \
tests/50-iohere-builtin.sh \
tests/50-redirect.sh \
tests/50-redirect-in.sh \
tests/50-redirect-append.sh \
tests/50-redirect-pipe.sh \
tests/50-redirect-sed.sh \
tests/50-redirect-space.sh \
tests/50-redirect-in-out.sh \
tests/50-redirect-clobber.sh \
tests/60-function.sh \
tests/60-function-at.sh \
tests/60-subst.sh \
tests/70-hash.sh \
tests/70-hash-hash.sh \
tests/70-percent.sh \
tests/70-percent-percent.sh \
tests/70-percent-space.sh \
tests/70-slash.sh \
tests/70-slash-string.sh \
tests/70-slash-string-slash.sh \
tests/100-cd.sh \
tests/100-cd-foo.sh \
tests/100-test.sh \
tests/100-test-false.sh \
tests/100-test-file.sh \
tests/100-bracket-file.sh
tests/arguments.org \
tests/assignments.org \
tests/command-substitution.org \
tests/compound-words.org \
tests/conditionals.org \
tests/dot.org \
tests/eval.org \
tests/exiting.org \
tests/exporting.org \
tests/functions.org \
tests/loops.org \
tests/pipes-and-booleans.org \
tests/redirects.org \
tests/signals.org \
tests/variable-and.org \
tests/variable-or.org \
tests/variable-patterns.org \
tests/variable-words.org \
tests/words.org
TESTS = $(UNIT_TESTS) $(FULL_TESTS)
XFAIL_TESTS = \
tests/70-hash.sh \
tests/70-hash-hash.sh \
tests/70-percent.sh \
tests/70-percent-percent.sh \
tests/70-percent-space.sh \
tests/70-slash.sh \
tests/70-slash-string.sh \
tests/70-slash-string-slash.sh
# These tests will not be run. Put tests here
# that pass or fail based on environmental
# factors.
BROKEN_TESTS = \
tests/50-redirect-merge.sh
tests/variable-patterns.org
TEST_DATA_FILES = \
tests/00-exit-1.exit \
tests/00-exit-2.exit \
tests/00-exit-error.exit \
tests/00-exit-var.exit \
tests/01-script-arg-length.stdout \
tests/01-script-arg-list.stdout \
tests/01-script-backslash-twice.exit \
tests/01-script-backslash.exit \
tests/01-script-newline.exit \
tests/01-script-semi.exit \
tests/01-script-shift.stdout \
tests/03-echo-brace.stdout \
tests/03-echo-doublequotes.stdout \
tests/03-echo-escaped-doublequotes.stdout \
tests/03-echo-nesting.stdout \
tests/03-echo-quoted-doublequotes.stdout \
tests/04-echo-equal.stdout \
tests/04-echo-word-at-word.stdout \
tests/04-echo-word-at.stdout \
tests/05-assignment-backtick.stdout \
tests/05-assignment-doublequoted-doublequotes.stdout \
tests/05-assignment-echo.stdout \
tests/05-assignment-empty.stdout \
tests/05-assignment-variable-word.stdout \
tests/05-assignment-word-variable.stdout \
tests/06-command-compound-word.stdout \
tests/06-compound-word.stdout \
tests/07-variable-not-or.stdout \
tests/07-variable-or-doublequote.stdout \
tests/07-variable-or-empty.stdout \
tests/07-variable-or-variable.stdout \
tests/07-variable-or.stdout \
tests/08-variable-and.stdout \
tests/08-variable-not-and.stdout \
tests/10-else.multiple.stdout \
tests/10-if-multiple.stdout \
tests/11-for-done-subshell.stdout \
tests/11-for-split-sequence.stdout \
tests/11-for.stdout \
tests/20-and.exit \
tests/20-pipe-exit-1.exit \
tests/20-pipe-sed-cat.stdout \
tests/20-pipe-sed.stdout \
tests/20-semi.exit \
tests/30-for-substitution.stdout \
tests/30-substitution-assignment-at.stdout \
tests/30-substitution-assignment.stdout \
tests/30-substitution-backtick.stdout \
tests/30-substitution-redirect.stdout \
tests/30-substitution-word.stdout \
tests/30-substitution.stdout \
tests/40-assignment-eval-echo.stdout \
tests/40-eval-echo-variable.stdout \
tests/40-eval.stdout \
tests/41-dot.stdout \
tests/42-export-new.stdout \
tests/42-sh-export-new.stdout \
tests/42-sh-export.stdout \
tests/42-sh.stdout \
tests/43-trap-subshell.stdout \
tests/50-iohere.stdout \
tests/50-redirect-append.stdout \
tests/50-redirect-clobber.stdout \
tests/50-redirect-in-out.stdout \
tests/50-redirect-merge.stdout \
tests/50-redirect-pipe.stdout \
tests/50-redirect-sed.stdout \
tests/50-redirect-space.stdout \
tests/50-redirect.stdout \
tests/60-function-at.stdout \
tests/60-function.stdout \
tests/70-hash-hash.stdout \
tests/70-hash.stdout \
tests/70-percent-percent.stdout \
tests/70-percent-space.stdout \
tests/70-percent.stdout \
tests/70-slash-string.stdout \
tests/70-slash.stdout \
tests/100-cd-foo.exit \
tests/100-cd.stdout \
tests/data/star/2 \
tests/data/star/3 \
tests/data/star/0 \
tests/data/star/1 \
tests/data/foo \
tests/data/diff.scm \
tests/data/script.sh
tests/data/script.sh \
tests/data/42-export-new.sh
.PHONY: test-list
test-list: ; @echo $(TESTS)
EXTRA_DIST += \
$(TESTS) \
$(BROKEN_TESTS) \
$(TEST_DATA_FILES) \
test.sh \
tests/unit/automake.scm \
tests/spec/check-spec \
tests/spec/Makefile.am \
@ -413,10 +227,8 @@ distcheck-hook:
CLEANFILES += \
$(bin_SCRIPTS) \
$(FULL_TESTS:tests/%.sh=tests/%.log) \
$(FULL_TESTS:tests/%.sh=tests/%.trs) \
$(FULL_TESTS:tests/%.sh=tests/%.1) \
$(FULL_TESTS:tests/%.sh=tests/%.2) \
$(FULL_TESTS:tests/%.org=tests/%.log) \
$(FULL_TESTS:tests/%.org=tests/%.trs) \
$(UNIT_TESTS:tests/%.scm=tests/%.log) \
$(UNIT_TESTS:tests/%.scm=tests/%.trs)

View File

@ -41,6 +41,7 @@ AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([gash/config.scm])
AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in],
[chmod +x pre-inst-env])
AC_CONFIG_FILES([tests/run-test-suite], [chmod +x tests/run-test-suite])
AC_CONFIG_FILES([tests/unit/config.scm])
AC_CONFIG_FILES([tests/spec/Makefile])
AC_CONFIG_FILES([tools/coverage], [chmod +x tools/coverage])

53
test.sh
View File

@ -1,53 +0,0 @@
# Gash --- Guile As SHell
# Copyright © 2016, 2017 R.E.W. van Beusekom <rutger.van.beusekom@gmail.com>
# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
#
# This file is part of Gash.
#
# Gash is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# Gash is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Gash. If not, see <http://www.gnu.org/licenses/>.
set -e
if [ -n "$V" ]; then
set -x
fi
DIFF=${DIFF-diff}
TEST_SHELL=${TEST_SHELL-gash}
t="$1"
s=tests/$(basename "$t" .sh)
# This is a hack to make sure we can build from an external directory.
# We move into the source directory, and then send all of our output
# back to the build directory.
export TEST_TMP=$(pwd)
b=$(pwd)/$s
cd $(dirname "$t")/..
set +e
timeout 10 $TEST_SHELL -e "$s".sh -s --long file0 file1 > "$b".1 2> "$b".2
r=$?
set -e
if [ -f "$s".exit ]; then
e=$(cat "$s".exit)
else
e=0
fi
[ $r = $e ] || exit 1
if [ -f "$s".stdout ]; then
$DIFF -u "$s".stdout "$b".1
fi
if [ -f "$s".stderr ]; then
$DIFF -u "$s".stderr "$b".2
fi

View File

@ -1 +0,0 @@
exit 0

View File

@ -1 +0,0 @@
1

View File

@ -1 +0,0 @@
exit 1

View File

@ -1 +0,0 @@
2

View File

@ -1 +0,0 @@
exit 2

View File

@ -1 +0,0 @@
2

View File

@ -1,2 +0,0 @@
set +e
ls /foo

View File

@ -1 +0,0 @@
2

View File

@ -1,3 +0,0 @@
set +e
ls /foo
exit $?

View File

@ -1 +0,0 @@
exit

View File

@ -1,2 +0,0 @@
echo $0

View File

@ -1 +0,0 @@
echo $#

View File

@ -1 +0,0 @@
4

View File

@ -1 +0,0 @@
echo $@

View File

@ -1 +0,0 @@
-s --long file0 file1

View File

@ -1,4 +0,0 @@
echo foo\
bar baz\
bla
echo

View File

@ -1 +0,0 @@
2

View File

@ -1,3 +0,0 @@
exit \
\
2

View File

@ -1 +0,0 @@
0

View File

@ -1,2 +0,0 @@
exit\
0

View File

@ -1 +0,0 @@
2

View File

@ -1,2 +0,0 @@
true
exit 2

View File

@ -1 +0,0 @@
2

View File

@ -1 +0,0 @@
true; exit 2

View File

@ -1,9 +0,0 @@
echo $@
shift
echo $@
shift
echo $@
shift
echo $@
shift
echo $@

View File

@ -1,5 +0,0 @@
-s --long file0 file1
--long file0 file1
file0 file1
file1

View File

@ -1 +0,0 @@
echo foo:{bar}

View File

@ -1 +0,0 @@
foo:{bar}

View File

@ -1 +0,0 @@
echo "foo" b"ar"

View File

@ -1 +0,0 @@
foo bar

View File

@ -1 +0,0 @@
echo foo "bar" \"baz\"

View File

@ -1 +0,0 @@
foo bar "baz"

View File

@ -1 +0,0 @@
echo 'foo "bar"'

View File

@ -1 +0,0 @@
foo "bar"

View File

@ -1 +0,0 @@
echo foo "bar" '"baz"'

View File

@ -1 +0,0 @@
foo bar "baz"

View File

@ -1 +0,0 @@
echo

View File

@ -1 +0,0 @@
echo a=$a

View File

@ -1 +0,0 @@
a=

View File

@ -1 +0,0 @@
echo $SHELL

View File

@ -1 +0,0 @@
echo command $@ plus

View File

@ -1 +0,0 @@
command -s --long file0 file1 plus

View File

@ -1 +0,0 @@
echo command $@

View File

@ -1 +0,0 @@
command -s --long file0 file1

View File

@ -1,3 +0,0 @@
obj=ar.o
objs="$objs `basename $obj`"
echo "objs:>$objs<"

View File

@ -1 +0,0 @@
objs:> ar.o<

View File

@ -1 +0,0 @@
srcdir="."

View File

@ -1,4 +0,0 @@
aliaspath=alias
localedir=locale
defines="-DALIASPATH=\"${aliaspath}\" -DLOCALEDIR=\"${localedir}\""
echo cc $defines

View File

@ -1 +0,0 @@
cc -DALIASPATH="alias" -DLOCALEDIR="locale"

View File

@ -1,2 +0,0 @@
SHELL=/bin/bash
echo $SHELL

View File

@ -1 +0,0 @@
/bin/bash

View File

@ -1,2 +0,0 @@
a=
echo a:$a

View File

@ -1 +0,0 @@
a:

View File

@ -1 +0,0 @@
srcdir='.'

View File

@ -1,3 +0,0 @@
SHELL=gash
bin=${SHELL}/bin
echo $bin

View File

@ -1 +0,0 @@
gash/bin

View File

@ -1,3 +0,0 @@
SHELL=gash
PATH=bin:${SHELL}
echo $PATH

View File

@ -1 +0,0 @@
bin:gash

View File

@ -1 +0,0 @@
SHELL=/bin/bash

View File

@ -1,4 +0,0 @@
CC=echo
empty=
file=ar.o
$CC -I${empty} $file

View File

@ -1 +0,0 @@
-I ar.o

View File

@ -1,2 +0,0 @@
srcdir=.
echo cc -c ${srcdir}/$file

View File

@ -1 +0,0 @@
cc -c ./

View File

@ -1,2 +0,0 @@
foo=baz
echo ${foo-bar}

View File

@ -1 +0,0 @@
baz

View File

@ -1,4 +0,0 @@
CPPFLAGS=${CPPFLAGS-"
-I ${srcdest}src
"}
echo $CPPFLAGS

View File

@ -1 +0,0 @@
-I src

View File

@ -1 +0,0 @@
echo ${bindir-}

View File

@ -1 +0,0 @@

View File

@ -1 +0,0 @@
echo ${foo-bar/}

View File

@ -1,2 +0,0 @@
prefix=/usr
echo ${bindir-$prefix/bin}

View File

@ -1 +0,0 @@
/usr/bin

View File

@ -1 +0,0 @@
echo ${foo-bar}

View File

@ -1 +0,0 @@
bar

View File

@ -1,2 +0,0 @@
foo=baz
echo ${foo+bar}

View File

@ -1 +0,0 @@
bar

View File

@ -1 +0,0 @@
echo ${foo+bar}

View File

@ -1 +0,0 @@

View File

@ -1,6 +0,0 @@
if false; then
:
else
echo one
echo two
fi

View File

@ -1,2 +0,0 @@
one
two

View File

@ -1,4 +0,0 @@
if \[ 0 = 1 ]; then
exit 1
fi
exit 0

View File

@ -1,4 +0,0 @@
if \[ 1 = 1 ]; then
exit 0
fi
exit 1

View File

@ -1,8 +0,0 @@
if false; then
exit 1
elif false; then
exit 2
else
exit 0
fi
exit 1

View File

@ -1,6 +0,0 @@
if false; then
exit 1
else
exit 0
fi
exit 1

View File

@ -1,4 +0,0 @@
if false; then
exit 1
fi
exit 0

View File

@ -1 +0,0 @@
if true; then echo yay; fi

View File

@ -1,4 +0,0 @@
if true; then
echo one
echo two
fi

View File

@ -1,2 +0,0 @@
one
two

View File

@ -1,5 +0,0 @@
if $SHELL --version | grep foobar 2>/dev/null; then
exit 1
else
exit 0
fi

View File

@ -1,4 +0,0 @@
if test 0 = 1; then
exit 1
fi
exit 0

View File

@ -1,4 +0,0 @@
if test 1 = 1; then
exit 0
fi
exit 1

View File

@ -1,4 +0,0 @@
if \[ x"$y" = x ]; then
exit 0
fi
exit 1

View File

@ -1,4 +0,0 @@
if true; then
exit 0
fi
exit 1

View File

@ -1,4 +0,0 @@
if \[ -f foo-bar ]; then
exit 1
fi

View File

@ -1 +0,0 @@
1

View File

@ -1 +0,0 @@
cd /foo

Some files were not shown because too many files have changed in this diff Show More