gash/tests/functions.org

93 lines
1.7 KiB
Org Mode
Raw Permalink Normal View History

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.
2019-06-12 22:21:41 +01:00
;;; Gash -- Guile As SHell
;;; Copyright © 2016, 2017, 2018 R.E.W. van Beusekom <rutger.van.beusekom@gmail.com>
;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 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/>.
* function-at
:script:
#+begin_src sh
foo () {
echo $#:$@
echo 0:$0
echo 1:$1
echo 2:$2
}
foo -v $@
#+end_src
:args: ("-s" "--long" "file0" "file1")
:stdout:
#+begin_example
5:-v -s --long file0 file1
0:test
1:-v
2:-s
#+end_example
* function
:script:
#+begin_src sh
foo () {
echo $1
}
echo before
foo bar
foo baz
echo after
#+end_src
:stdout:
#+begin_example
before
bar
baz
after
#+end_example
* subst
:script:
#+begin_src sh
subst () {
sed \
-e s",foo,bar,"\
$1 > $2
}
subst tests/data/foo $TEST_TMP/foo.tmp
cat $TEST_TMP/foo.tmp
rm $TEST_TMP/foo.tmp
#+end_src
* Too many arguments to return
:script:
#+begin_src sh
foo () {
return 1 2 3
}
foo
#+end_src
:status: 1
* Top-level return
:script:
#+begin_src sh
return
#+end_src
:status: 0