build: Set up jasmine for unit testing
Jasmine[0] is a popular testing framework for javascript, which gjs itself has used in a heavily customized form for its own unit tests for years. It's far superior to the very rudimentary `jsUnit` module that is still included with gjs, and the jasmine-gjs project provides a general-purpose wrapper for gjs apps. Set up the necessary build infrastructure to run unit tests through jasmine. That allows for existing unit tests to be ported one-by-one. [0] https://jasmine.github.io/index.html Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3164>
This commit is contained in:
parent
1fcdc60ca0
commit
151e2faa0f
@ -201,6 +201,7 @@ build:
|
|||||||
paths:
|
paths:
|
||||||
- mutter
|
- mutter
|
||||||
- build
|
- build
|
||||||
|
- subprojects/jasmine-gjs
|
||||||
|
|
||||||
test:
|
test:
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -293,6 +293,8 @@ if get_option('tests')
|
|||||||
common_test_env.set('GSETTINGS_BACKEND', 'memory')
|
common_test_env.set('GSETTINGS_BACKEND', 'memory')
|
||||||
common_test_env.set('XDG_CURRENT_DESKTOP', '')
|
common_test_env.set('XDG_CURRENT_DESKTOP', '')
|
||||||
|
|
||||||
|
jasmine = find_program('jasmine')
|
||||||
|
|
||||||
add_test_setup('default',
|
add_test_setup('default',
|
||||||
is_default: true,
|
is_default: true,
|
||||||
env: common_test_env,
|
env: common_test_env,
|
||||||
|
7
subprojects/jasmine-gjs.wrap
Normal file
7
subprojects/jasmine-gjs.wrap
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[wrap-git]
|
||||||
|
directory=jasmine-gjs
|
||||||
|
url=https://github.com/ptomato/jasmine-gjs.git
|
||||||
|
revision=c6aa28b3a3b16a3abb53e32825d83f836a2fed42
|
||||||
|
|
||||||
|
[provide]
|
||||||
|
program_names = jasmine
|
@ -20,6 +20,24 @@ unit_testenv.append('GI_TYPELIB_PATH', shell_typelib_path, separator: ':')
|
|||||||
unit_testenv.append('GI_TYPELIB_PATH', st_typelib_path, separator: ':')
|
unit_testenv.append('GI_TYPELIB_PATH', st_typelib_path, separator: ':')
|
||||||
|
|
||||||
unit_tests = [
|
unit_tests = [
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach test : unit_tests
|
||||||
|
test(test, jasmine,
|
||||||
|
args: [
|
||||||
|
'--module',
|
||||||
|
'--tap',
|
||||||
|
'--no-config',
|
||||||
|
'--interpreter', run_test,
|
||||||
|
'unit/@0@.js'.format(test),
|
||||||
|
],
|
||||||
|
suite: 'unit',
|
||||||
|
env: unit_testenv,
|
||||||
|
protocol: 'tap',
|
||||||
|
workdir: meson.current_source_dir())
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
legacy_tests = [
|
||||||
'highlighter',
|
'highlighter',
|
||||||
'injectionManager',
|
'injectionManager',
|
||||||
'insertSorted',
|
'insertSorted',
|
||||||
@ -31,7 +49,7 @@ unit_tests = [
|
|||||||
'versionCompare',
|
'versionCompare',
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach test : unit_tests
|
foreach test : legacy_tests
|
||||||
test(test, run_test,
|
test(test, run_test,
|
||||||
args: 'unit/@0@.js'.format(test),
|
args: 'unit/@0@.js'.format(test),
|
||||||
suite: 'unit',
|
suite: 'unit',
|
||||||
|
26
tests/unit/.eslintrc.yml
Normal file
26
tests/unit/.eslintrc.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
# SPDX-License-Identifier: MIT OR LGPL-2.0-or-later
|
||||||
|
# SPDX-FileCopyrightText: 2024 Florian Müllner <fmuellner@gnome.org>
|
||||||
|
rules:
|
||||||
|
jsdoc/require-jsdoc: 'off'
|
||||||
|
globals:
|
||||||
|
jasmine: readonly
|
||||||
|
afterAll: readonly
|
||||||
|
afterEach: readonly
|
||||||
|
beforeAll: readonly
|
||||||
|
beforeEach: readonly
|
||||||
|
describe: readonly
|
||||||
|
expect: readonly
|
||||||
|
expectAsync: readonly
|
||||||
|
fail: readonly
|
||||||
|
fdescribe: readonly
|
||||||
|
fit: readonly
|
||||||
|
it: readonly
|
||||||
|
pending: readonly
|
||||||
|
setSpecProperty: readonly
|
||||||
|
setSuiteProperty: readonly
|
||||||
|
spyOn: readonly
|
||||||
|
spyOnAllFunctions: readonly
|
||||||
|
spyOnProperty: readonly
|
||||||
|
xdescribe: readonly
|
||||||
|
xit: readonly
|
Loading…
x
Reference in New Issue
Block a user