summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Welsh <contact@evanwelsh.com>2021-07-17 15:33:01 -0700
committerEvan Welsh <contact@evanwelsh.com>2021-07-26 22:44:27 -0700
commitda691f0d6f17aed768bb6d0196f0d3ed0966c6c7 (patch)
tree10b8f4ed0ff79dd8d31d09d4feea51731720da96
parent2386898fdbfe034463caae94c5e00c0a7926d092 (diff)
downloadgjs-da691f0d6f17aed768bb6d0196f0d3ed0966c6c7.tar.gz
Add test for dynamic import resolution
-rw-r--r--installed-tests/meson.build9
-rwxr-xr-xinstalled-tests/scripts/testCommandLineModules.sh66
2 files changed, 74 insertions, 1 deletions
diff --git a/installed-tests/meson.build b/installed-tests/meson.build
index 918b6f82..10ac735a 100644
--- a/installed-tests/meson.build
+++ b/installed-tests/meson.build
@@ -10,21 +10,28 @@ installed_tests_metadir = abs_datadir / 'installed-tests' / meson.project_name()
# Simple shell script tests #
simple_tests = []
+non_thread_safe = ['CommandLineModules']
# The test scripts need to be ported from shell scripts
# for clang-cl builds, which do not use BASH-style shells
if cxx.get_argument_syntax() != 'msvc'
simple_tests += [
'CommandLine',
+ 'CommandLineModules',
'Warnings',
]
endif
foreach test : simple_tests
test_file = files('scripts' / 'test@0@.sh'.format(test))
+ suite = ['Scripts']
+ if test not in non_thread_safe
+ suite += 'thread-safe'
+ endif
test(test, test_file, env: tests_environment, protocol: 'tap',
- suite: ['Scripts', 'thread-safe'])
+ suite: suite)
+
test_description_subst = {
'name': 'test@0@.sh'.format(test),
diff --git a/installed-tests/scripts/testCommandLineModules.sh b/installed-tests/scripts/testCommandLineModules.sh
new file mode 100755
index 00000000..c075b216
--- /dev/null
+++ b/installed-tests/scripts/testCommandLineModules.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
+# SPDX-FileCopyrightText: 2016 Endless Mobile, Inc.
+# SPDX-FileCopyrightText: 2016 Philip Chimento <philip.chimento@gmail.com>
+
+if test "$GJS_USE_UNINSTALLED_FILES" = "1"; then
+ gjs="$TOP_BUILDDIR/gjs-console"
+else
+ gjs="gjs-console"
+fi
+
+total=0
+
+report () {
+ exit_code=$?
+ total=$((total + 1))
+ if test $exit_code -eq 0; then
+ echo "ok $total - $1"
+ else
+ echo "not ok $total - $1"
+ fi
+}
+
+# Avoid interference in the profiler tests from stray environment variable
+unset GJS_ENABLE_PROFILER
+
+# Avoid interference in the warning tests from G_DEBUG=fatal-warnings/criticals
+OLD_G_DEBUG="$G_DEBUG"
+
+cat <<EOF >doubledynamicImportee.js
+export function noop() {}
+EOF
+
+# this JS script should succeed without an error on the second import
+cat <<EOF >doubledynamic.js
+let done = false;
+
+import("./doubledynamicImportee.js")
+ .then(ddi => {
+ ddi.noop();
+ })
+ .finally(() => {
+ if (done)
+ imports.mainloop.quit();
+ done = true;
+ });
+
+import("./doubledynamicImportee.js")
+ .then(ddi => {
+ ddi.noop();
+ })
+ .finally(() => {
+ if (done)
+ imports.mainloop.quit();
+ done = true;
+ });
+
+imports.mainloop.run();
+EOF
+
+$gjs doubledynamic.js
+report "ensure dynamic imports load even if the same import resolves elsewhere first"
+
+rm -f doubledynamic.js doubledynamicImportee.js
+
+echo "1..$total"