tests: Add Params.parse() unit tests

Commit 46874eed0 accidentally changed the behavior of the function in
an incompatible way. Before addressing the actual issue, add a reproducer
to the unit tests to hopefully prevent future breakage.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/615
This commit is contained in:
Florian Müllner 2019-07-05 17:52:37 +02:00
parent 0d035a4e53
commit 1778adae0d
2 changed files with 33 additions and 1 deletions

View File

@ -10,7 +10,7 @@ run_test = configure_file(
testenv = environment()
testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
foreach test : ['insertSorted', 'jsParse', 'markup', 'url']
foreach test : ['insertSorted', 'jsParse', 'markup', 'params', 'url']
test(test, run_test,
args: 'unit/@0@.js'.format(test),
env: testenv,

32
tests/unit/params.js Normal file
View File

@ -0,0 +1,32 @@
const JsUnit = imports.jsUnit;
const Params = imports.misc.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' });