diff options
author | Evan Welsh <contact@evanwelsh.com> | 2021-07-17 15:33:01 -0700 |
---|---|---|
committer | Evan Welsh <contact@evanwelsh.com> | 2021-07-26 22:44:27 -0700 |
commit | da691f0d6f17aed768bb6d0196f0d3ed0966c6c7 (patch) | |
tree | 10b8f4ed0ff79dd8d31d09d4feea51731720da96 | |
parent | 2386898fdbfe034463caae94c5e00c0a7926d092 (diff) | |
download | gjs-da691f0d6f17aed768bb6d0196f0d3ed0966c6c7.tar.gz |
Add test for dynamic import resolution
-rw-r--r-- | installed-tests/meson.build | 9 | ||||
-rwxr-xr-x | installed-tests/scripts/testCommandLineModules.sh | 66 |
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" |