aboutsummaryrefslogtreecommitdiff
path: root/src/wrappers/testwrapper.in
diff options
context:
space:
mode:
authorroktas <roktas@788f1e2b-df1e-0410-8736-df70ead52e1b>2006-12-12 07:04:09 +0000
committerroktas <roktas@788f1e2b-df1e-0410-8736-df70ead52e1b>2006-12-12 07:04:09 +0000
commit426cbadfef6c26323faedcab2cd5ea7efa64d1bb (patch)
treee16afb28eec790226a7b0524b8fb325594232e5c /src/wrappers/testwrapper.in
parent6411ea7466f67f94816c541a22abb7249d36c377 (diff)
downloadpandoc-426cbadfef6c26323faedcab2cd5ea7efa64d1bb.tar.gz
Merge changes in branches/wrappers into trunk.
[in trunk] svn merge -r105:HEAD \ https://pandoc.googlecode.com/svn/branches/wrappers git-svn-id: https://pandoc.googlecode.com/svn/trunk@177 788f1e2b-df1e-0410-8736-df70ead52e1b
Diffstat (limited to 'src/wrappers/testwrapper.in')
-rw-r--r--src/wrappers/testwrapper.in141
1 files changed, 141 insertions, 0 deletions
diff --git a/src/wrappers/testwrapper.in b/src/wrappers/testwrapper.in
new file mode 100644
index 000000000..b9e10b450
--- /dev/null
+++ b/src/wrappers/testwrapper.in
@@ -0,0 +1,141 @@
+#!/bin/sh
+
+THIS=$1
+
+ASH="ash -s"
+BASH="bash --posix -s"
+DASH="dash -s"
+KSH="ksh -s"
+POSH="posh -s"
+ZSH="zsh -s"
+
+ERROR=""
+
+wrapper () {
+ $SH -- "$@" <<-'EOF'
+### common.sh
+
+outfile=
+while getopts o: opt; do
+ case $opt in
+ o) outfile="$OPTARG" ;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+
+### postopts.sh
+
+echo "Options passed to wrapper:"
+[ -z "$outfile" ] || echo "|$outfile|"
+
+echo "Arguments passed to wrapper:"
+for arg; do
+ echo "|$arg|"
+done
+
+pandoc () {
+ echo "Arguments passed to wrappee:"
+ for arg; do
+ echo "|$arg|"
+ done
+}
+runpandoc
+EOF
+}
+
+# Portable which(1).
+pathfind () {
+ oldifs="$IFS"; IFS=':'
+ for _p in $PATH; do
+ if [ -x "$_p/$*" ] && [ -f "$_p/$*" ]; then
+ IFS="$oldifs"
+ return 0
+ fi
+ done
+ IFS="$oldifs"
+ return 1
+}
+
+check_results () {
+ if [ "$1" = "$2" ]; then
+ echo >&2 ok
+ return 0
+ else
+ echo >&2 failed
+ sed "s/^/\t/" >&2 <<EOF
+Command line: '$3'
+===> Expected:
+$2
+<=== Got:
+$1
+EOF
+ return 1
+ fi
+}
+
+for SH in "$BASH" "$DASH" "$KSH" "$ZSH"; do
+ CMD=${SH%% *}
+ echo >&2 " Testing with $CMD..."
+ if pathfind "$CMD"; then
+ if [ "$CMD" = "zsh" ]; then
+ # Zsh needs to be called as 'sh' to enable POSIX mode.
+ ln -s $(which zsh) ./sh
+ SH="./sh ${SH#* }"
+ trap 'err=$?; rm -f ./sh; exit $err' 0 1 2 3 13 15
+ fi
+
+ set -e
+
+ # Test 1
+ printf >&2 " test case 1... "
+ actual=$(wrapper -o "output file" "foo bar" -A "quux baz" -B)
+ expected=$(cat <<'EOF'
+Options passed to wrapper:
+|output file|
+Arguments passed to wrapper:
+|foo bar|
+Arguments passed to wrappee:
+|-A|
+|quux baz|
+|-B|
+EOF
+)
+ check_results "$actual" "$expected" \
+ 'wrapper -o "output file" "foo bar" -A "quux baz" -B'
+
+ # Test 2
+ printf >&2 " test case 2... "
+ actual=$(wrapper -- -A "foo bar")
+ expected=$(cat <<'EOF'
+Options passed to wrapper:
+Arguments passed to wrapper:
+Arguments passed to wrappee:
+|-A|
+|foo bar|
+EOF
+)
+ check_results "$actual" "$expected" 'wrapper -- -A "foo bar"'
+
+ # Test 3 (Test 1 with a redundant '--')
+ printf >&2 " test case 4... "
+ actual=$(wrapper -o "output file" "foo bar" -- -A "quux baz" -B)
+ expected=$(cat <<'EOF'
+Options passed to wrapper:
+|output file|
+Arguments passed to wrapper:
+|foo bar|
+Arguments passed to wrappee:
+|-A|
+|quux baz|
+|-B|
+EOF
+)
+ check_results "$actual" "$expected" \
+ 'wrapper -o "output file" "foo bar" -- -A "quux baz" -B'
+ else
+ echo >&2 "Warning: cannot verify correctness with $CMD; shell not available"
+ fi
+done
+
+exit 0