summaryrefslogtreecommitdiff
path: root/installed-tests/scripts/testCommandLine.sh
diff options
context:
space:
mode:
Diffstat (limited to 'installed-tests/scripts/testCommandLine.sh')
-rwxr-xr-xinstalled-tests/scripts/testCommandLine.sh115
1 files changed, 115 insertions, 0 deletions
diff --git a/installed-tests/scripts/testCommandLine.sh b/installed-tests/scripts/testCommandLine.sh
new file mode 100755
index 00000000..c9299ab6
--- /dev/null
+++ b/installed-tests/scripts/testCommandLine.sh
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+if test $GJS_USE_UNINSTALLED_FILES -eq 1; then
+ gjs="$TOP_BUILDDIR"/gjs-console
+else
+ gjs=gjs-console
+fi
+
+# this JS script fails if either 1) --help is not passed to it, or 2) the string
+# "sentinel" is not in its search path
+cat <<EOF >help.js
+const System = imports.system;
+if (imports.searchPath.indexOf('sentinel') == -1)
+ System.exit(1);
+if (ARGV.indexOf('--help') == -1)
+ System.exit(1);
+System.exit(0);
+EOF
+
+total=0
+
+report () {
+ exit_code=$?
+ total=`expr $total + 1`
+ if test $exit_code -eq 0; then
+ echo "ok $total - $1"
+ else
+ echo "not ok $total - $1"
+ fi
+}
+
+report_xfail () {
+ exit_code=$?
+ total=`expr $total + 1`
+ if test $exit_code -ne 0; then
+ echo "ok $total - $1"
+ else
+ echo "not ok $total - $1"
+ fi
+}
+
+# Test that System.exit() works in gjs-console
+"$gjs" -c 'imports.system.exit(0)' || \
+ fail "System.exit(0) should exit successfully"
+if "gjs" -c 'imports.system.exit(42)' -ne 42; then
+ fail "System.exit(42) should exit with the correct exit code"
+fi
+
+# gjs --help prints GJS help
+"$gjs" --help >/dev/null
+report "--help should succeed"
+test -n "`"$gjs" --help`"
+report "--help should print something"
+
+# print GJS help even if it's not the first argument
+"$gjs" -I . --help >/dev/null
+report "should succeed when --help is not first arg"
+test -n "`"$gjs" -I . --help`"
+report "should print something when --help is not first arg"
+
+# --help before a script file name prints GJS help
+"$gjs" --help help.js >/dev/null
+report "--help should succeed before a script file"
+test -n "`"$gjs" --help help.js`"
+report "--help should print something before a script file"
+
+# --help before a -c argument prints GJS help
+script='imports.system.exit(1)'
+"$gjs" --help -c "$script" >/dev/null
+report "--help should succeed before -c"
+test -n "`"$gjs" --help -c "$script"`"
+report "--help should print something before -c"
+
+# --help after a script file name is passed to the script
+"$gjs" -I sentinel help.js --help
+report "--help after script file should be passed to script"
+test -z "`"$gjs" -I sentinel help.js --help`"
+report "--help after script file should not print anything"
+
+# --help after a -c argument is passed to the script
+script='if(ARGV[0] !== "--help") imports.system.exit(1)'
+"$gjs" -c "$script" --help
+report "--help after -c should be passed to script"
+test -z "`"$gjs" -c "$script" --help`"
+report "--help after -c should not print anything"
+
+# -I after a program is not consumed by GJS
+# Temporary behaviour: still consume the argument, but give a warning
+# "$gjs" help.js --help -I sentinel
+# report_xfail "-I after script file should not be added to search path"
+# fi
+"$gjs" help.js --help -I sentinel 2>&1 | grep -q 'Gjs-WARNING.*--include-path'
+report "-I after script should succeed but give a warning"
+"$gjs" -c 'imports.system.exit(0)' --coverage-prefix=foo --coverage-output=foo 2>&1 | grep -q 'Gjs-WARNING.*--coverage-prefix'
+report "--coverage-prefix after script should succeed but give a warning"
+"$gjs" -c 'imports.system.exit(0)' --coverage-prefix=foo --coverage-output=foo 2>&1 | grep -q 'Gjs-WARNING.*--coverage-output'
+report "--coverage-output after script should succeed but give a warning"
+rm -f foo/coverage.lcov
+
+# --version works
+"$gjs" --version >/dev/null
+report "--version should work"
+test -n "`"$gjs" --version`"
+report "--version should print something"
+
+# --version after a script goes to the script
+script='if(ARGV[0] !== "--version") imports.system.exit(1)'
+"$gjs" -c "$script" --version
+report "--version after -c should be passed to script"
+test -z "`"$gjs" -c "$script" --version`"
+report "--version after -c should not print anything"
+
+rm -f help.js
+
+echo "1..$total"