mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-22 05:59:31 +08:00
38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
'use strict';
|
|
// The JS-entry spelling of the dyn assert surface — untyped JS's most
|
|
// common assert form: require('assert'), JSON.parse products compared
|
|
// against literals with strictEqual/deepStrictEqual, truthiness through
|
|
// the callable module. Messages must match Node byte for byte.
|
|
const assert = require('assert');
|
|
|
|
function msgOf(fn) {
|
|
try {
|
|
fn();
|
|
return 'PASS';
|
|
} catch (e) {
|
|
return e instanceof Error ? `${e.name}|${JSON.stringify(e.message)}` : 'not an Error';
|
|
}
|
|
}
|
|
|
|
const cfg = JSON.parse('{"port":8080,"host":"localhost","debug":false,"tags":["a","b"]}');
|
|
assert.strictEqual(cfg.port, 8080);
|
|
assert.strictEqual(cfg.host, 'localhost');
|
|
assert.strictEqual(cfg.debug, false);
|
|
assert.deepStrictEqual(cfg.tags, ['a', 'b']);
|
|
assert.notStrictEqual(cfg.port, 8081);
|
|
assert(cfg.port);
|
|
assert.ok(cfg.host, 'host must be set');
|
|
console.log('cjs passes ok');
|
|
|
|
console.log(msgOf(() => assert.strictEqual(cfg.port, 8081)));
|
|
console.log(msgOf(() => assert.strictEqual(cfg.host, 'remote')));
|
|
console.log(msgOf(() => assert.strictEqual(cfg.debug, 'false')));
|
|
console.log(msgOf(() => assert.deepStrictEqual(cfg.tags, ['a', 'c'])));
|
|
console.log(msgOf(() => assert.notStrictEqual(cfg.port, 8080)));
|
|
console.log(msgOf(() => assert.strictEqual(cfg.tags, cfg.port)));
|
|
|
|
const dz = JSON.parse('{"x":1}');
|
|
console.log(msgOf(() => assert.strictEqual(cfg.tags, dz)));
|
|
console.log(msgOf(() => assert.deepStrictEqual(dz, JSON.parse('{"x":1,"y":2}'))));
|
|
console.log('cjs done');
|