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:
|
||||
- mutter
|
||||
- build
|
||||
- subprojects/jasmine-gjs
|
||||
|
||||
test:
|
||||
stage: test
|
||||
|
@ -293,6 +293,8 @@ if get_option('tests')
|
||||
common_test_env.set('GSETTINGS_BACKEND', 'memory')
|
||||
common_test_env.set('XDG_CURRENT_DESKTOP', '')
|
||||
|
||||
jasmine = find_program('jasmine')
|
||||
|
||||
add_test_setup('default',
|
||||
is_default: true,
|
||||
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_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',
|
||||
'injectionManager',
|
||||
'insertSorted',
|
||||
@ -31,7 +49,7 @@ unit_tests = [
|
||||
'versionCompare',
|
||||
]
|
||||
|
||||
foreach test : unit_tests
|
||||
foreach test : legacy_tests
|
||||
test(test, run_test,
|
||||
args: 'unit/@0@.js'.format(test),
|
||||
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