gnome-shell/tests/unit/params.js
Florian Müllner 9546860d05 tests/unit: Access shell sources from resource
Unit tests currently load shell sources directly from the
filesystem.

This is currently blocking generated sources - namely config.js - to
ESM, because a relative import from the source dir will fail to
locate the file in the build dir.

Address this by using the same GResource as gnome-shell instead of
direct filesystem access, as the resource will always include all
sources files at the expected location.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2880>
2023-08-10 17:42:23 +00:00

40 lines
954 B
JavaScript

const JsUnit = imports.jsUnit;
import * as Params from 'resource:///org/gnome/shell/misc/params.js';
/**
* Asserts that two "param" objects have the same properties
* with the same values.
*
* @param {object} params the parsed params
* @param {object} expected the expected params
*/
function assertParamsEqual(params, expected) {
for (let p in params) {
JsUnit.assertTrue(p in expected);
JsUnit.assertEquals(params[p], expected[p]);
}
}
let defaults = {
foo: 'This is a test',
bar: null,
baz: 42,
};
assertParamsEqual(
Params.parse(null, defaults),
defaults);
assertParamsEqual(
Params.parse({bar: 23}, defaults),
{foo: 'This is a test', bar: 23, baz: 42});
JsUnit.assertRaises(
() => {
Params.parse({extraArg: 'quz'}, defaults);
});
assertParamsEqual(
Params.parse({extraArg: 'quz'}, defaults, true),
{foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz'});