Extracts require() from Acme Commander, to complement the CommonJS runtime in development and testing of GLib-heavy apps. Goal differs from Cgjs, not to replicate Node APIs, but to gather code coverage with Gjs built-in feature and, outside tests, give you the convenient module.hot.accept.
Inspired by ava:
-
Runs tests concurrently
-
No implicit globals
-
Promise support
Having tests run concurrently forces you to write atomic tests, meaning tests don't depend on global state or the state of other tests, which is a great thing!
const { test } = require("gunit");
test("passes after awaiting promise", async t => {
await Promise.resolve();
t.pass();
});
test("compares values", t => {
t.is(1 + 1, 2);
});Make sure you have all dependencies, including GNOME JavaScript v1.52 or newer, and lcov:
# Ubuntu 17.10
sudo apt update && sudo apt install bash coreutils gir1.2-gtk-3.0 gjs lcov npmThen install with npm:
npm install --save-dev gunitAdd a script to your package.json:
{
"name": "awesome-package",
"scripts": {
"test": "gunit"
},
"devDependencies": {
"gunit": "^1.0.1"
}
}
Run it:
npm testWill find and load *.test.js in your app directory.
$ gunit --help
Usage: gunit [OPTION]... [LAST_DIRNAME_WHITELIST]...
Find **/*.test.js and run with GNOME JavaScript.
-s, --serial disable concurrency
-h, --help display this help and exit
MIT