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:
parent
375752301c
commit
7d2298d15b
|
@ -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
|
||||
|
|
244
Makefile.am
244
Makefile.am
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
53
test.sh
|
@ -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
|
|
@ -1 +0,0 @@
|
|||
exit 0
|
|
@ -1 +0,0 @@
|
|||
1
|
|
@ -1 +0,0 @@
|
|||
exit 1
|
|
@ -1 +0,0 @@
|
|||
2
|
|
@ -1 +0,0 @@
|
|||
exit 2
|
|
@ -1 +0,0 @@
|
|||
2
|
|
@ -1,2 +0,0 @@
|
|||
set +e
|
||||
ls /foo
|
|
@ -1 +0,0 @@
|
|||
2
|
|
@ -1,3 +0,0 @@
|
|||
set +e
|
||||
ls /foo
|
||||
exit $?
|
|
@ -1 +0,0 @@
|
|||
exit
|
|
@ -1,2 +0,0 @@
|
|||
echo $0
|
||||
|
|
@ -1 +0,0 @@
|
|||
echo $#
|
|
@ -1 +0,0 @@
|
|||
4
|
|
@ -1 +0,0 @@
|
|||
echo $@
|
|
@ -1 +0,0 @@
|
|||
-s --long file0 file1
|
|
@ -1,4 +0,0 @@
|
|||
echo foo\
|
||||
bar baz\
|
||||
bla
|
||||
echo
|
|
@ -1 +0,0 @@
|
|||
2
|
|
@ -1,3 +0,0 @@
|
|||
exit \
|
||||
\
|
||||
2
|
|
@ -1 +0,0 @@
|
|||
0
|
|
@ -1,2 +0,0 @@
|
|||
exit\
|
||||
0
|
|
@ -1 +0,0 @@
|
|||
2
|
|
@ -1,2 +0,0 @@
|
|||
true
|
||||
exit 2
|
|
@ -1 +0,0 @@
|
|||
2
|
|
@ -1 +0,0 @@
|
|||
true; exit 2
|
|
@ -1,9 +0,0 @@
|
|||
echo $@
|
||||
shift
|
||||
echo $@
|
||||
shift
|
||||
echo $@
|
||||
shift
|
||||
echo $@
|
||||
shift
|
||||
echo $@
|
|
@ -1,5 +0,0 @@
|
|||
-s --long file0 file1
|
||||
--long file0 file1
|
||||
file0 file1
|
||||
file1
|
||||
|
|
@ -1 +0,0 @@
|
|||
echo foo:{bar}
|
|
@ -1 +0,0 @@
|
|||
foo:{bar}
|
|
@ -1 +0,0 @@
|
|||
echo "foo" b"ar"
|
|
@ -1 +0,0 @@
|
|||
foo bar
|
|
@ -1 +0,0 @@
|
|||
echo foo "bar" \"baz\"
|
|
@ -1 +0,0 @@
|
|||
foo bar "baz"
|
|
@ -1 +0,0 @@
|
|||
echo 'foo "bar"'
|
|
@ -1 +0,0 @@
|
|||
foo "bar"
|
|
@ -1 +0,0 @@
|
|||
echo foo "bar" '"baz"'
|
|
@ -1 +0,0 @@
|
|||
foo bar "baz"
|
|
@ -1 +0,0 @@
|
|||
echo
|
|
@ -1 +0,0 @@
|
|||
echo a=$a
|
|
@ -1 +0,0 @@
|
|||
a=
|
|
@ -1 +0,0 @@
|
|||
echo $SHELL
|
|
@ -1 +0,0 @@
|
|||
echo command $@ plus
|
|
@ -1 +0,0 @@
|
|||
command -s --long file0 file1 plus
|
|
@ -1 +0,0 @@
|
|||
echo command $@
|
|
@ -1 +0,0 @@
|
|||
command -s --long file0 file1
|
|
@ -1,3 +0,0 @@
|
|||
obj=ar.o
|
||||
objs="$objs `basename $obj`"
|
||||
echo "objs:>$objs<"
|
|
@ -1 +0,0 @@
|
|||
objs:> ar.o<
|
|
@ -1 +0,0 @@
|
|||
srcdir="."
|
|
@ -1,4 +0,0 @@
|
|||
aliaspath=alias
|
||||
localedir=locale
|
||||
defines="-DALIASPATH=\"${aliaspath}\" -DLOCALEDIR=\"${localedir}\""
|
||||
echo cc $defines
|
|
@ -1 +0,0 @@
|
|||
cc -DALIASPATH="alias" -DLOCALEDIR="locale"
|
|
@ -1,2 +0,0 @@
|
|||
SHELL=/bin/bash
|
||||
echo $SHELL
|
|
@ -1 +0,0 @@
|
|||
/bin/bash
|
|
@ -1,2 +0,0 @@
|
|||
a=
|
||||
echo a:$a
|
|
@ -1 +0,0 @@
|
|||
a:
|
|
@ -1 +0,0 @@
|
|||
srcdir='.'
|
|
@ -1,3 +0,0 @@
|
|||
SHELL=gash
|
||||
bin=${SHELL}/bin
|
||||
echo $bin
|
|
@ -1 +0,0 @@
|
|||
gash/bin
|
|
@ -1,3 +0,0 @@
|
|||
SHELL=gash
|
||||
PATH=bin:${SHELL}
|
||||
echo $PATH
|
|
@ -1 +0,0 @@
|
|||
bin:gash
|
|
@ -1 +0,0 @@
|
|||
SHELL=/bin/bash
|
|
@ -1,4 +0,0 @@
|
|||
CC=echo
|
||||
empty=
|
||||
file=ar.o
|
||||
$CC -I${empty} $file
|
|
@ -1 +0,0 @@
|
|||
-I ar.o
|
|
@ -1,2 +0,0 @@
|
|||
srcdir=.
|
||||
echo cc -c ${srcdir}/$file
|
|
@ -1 +0,0 @@
|
|||
cc -c ./
|
|
@ -1,2 +0,0 @@
|
|||
foo=baz
|
||||
echo ${foo-bar}
|
|
@ -1 +0,0 @@
|
|||
baz
|
|
@ -1,4 +0,0 @@
|
|||
CPPFLAGS=${CPPFLAGS-"
|
||||
-I ${srcdest}src
|
||||
"}
|
||||
echo $CPPFLAGS
|
|
@ -1 +0,0 @@
|
|||
-I src
|
|
@ -1 +0,0 @@
|
|||
echo ${bindir-}
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1 +0,0 @@
|
|||
echo ${foo-bar/}
|
|
@ -1,2 +0,0 @@
|
|||
prefix=/usr
|
||||
echo ${bindir-$prefix/bin}
|
|
@ -1 +0,0 @@
|
|||
/usr/bin
|
|
@ -1 +0,0 @@
|
|||
echo ${foo-bar}
|
|
@ -1 +0,0 @@
|
|||
bar
|
|
@ -1,2 +0,0 @@
|
|||
foo=baz
|
||||
echo ${foo+bar}
|
|
@ -1 +0,0 @@
|
|||
bar
|
|
@ -1 +0,0 @@
|
|||
echo ${foo+bar}
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
if false; then
|
||||
:
|
||||
else
|
||||
echo one
|
||||
echo two
|
||||
fi
|
|
@ -1,2 +0,0 @@
|
|||
one
|
||||
two
|
|
@ -1,4 +0,0 @@
|
|||
if \[ 0 = 1 ]; then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
|
@ -1,4 +0,0 @@
|
|||
if \[ 1 = 1 ]; then
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
|
@ -1,8 +0,0 @@
|
|||
if false; then
|
||||
exit 1
|
||||
elif false; then
|
||||
exit 2
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
|
@ -1,6 +0,0 @@
|
|||
if false; then
|
||||
exit 1
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
|
@ -1,4 +0,0 @@
|
|||
if false; then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
|
@ -1 +0,0 @@
|
|||
if true; then echo yay; fi
|
|
@ -1,4 +0,0 @@
|
|||
if true; then
|
||||
echo one
|
||||
echo two
|
||||
fi
|
|
@ -1,2 +0,0 @@
|
|||
one
|
||||
two
|
|
@ -1,5 +0,0 @@
|
|||
if $SHELL --version | grep foobar 2>/dev/null; then
|
||||
exit 1
|
||||
else
|
||||
exit 0
|
||||
fi
|
|
@ -1,4 +0,0 @@
|
|||
if test 0 = 1; then
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
|
@ -1,4 +0,0 @@
|
|||
if test 1 = 1; then
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
|
@ -1,4 +0,0 @@
|
|||
if \[ x"$y" = x ]; then
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
|
@ -1,4 +0,0 @@
|
|||
if true; then
|
||||
exit 0
|
||||
fi
|
||||
exit 1
|
|
@ -1,4 +0,0 @@
|
|||
if \[ -f foo-bar ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1 +0,0 @@
|
|||
1
|
|
@ -1 +0,0 @@
|
|||
cd /foo
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue