diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-04-20 03:09:25 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-04-24 16:14:29 +0200 |
commit | 82f2b76e25a4a67e01ec67e5ebe39d14ad771ea8 (patch) | |
tree | 965f6eb89b84d65a62b49008fd972c004832ccd1 /testlib/talertest.ts | |
parent | e6e0cbc387c2a77b48e4065c229daa65bf1aa0fa (diff) |
Reorganize module loading.
We now use webpack instead of SystemJS, effectively bundling modules
into one file (plus commons chunks) for every entry point. This results
in a much smaller extension size (almost half). Furthermore we use
yarn/npm even for extension run-time dependencies. This relieves us
from manually vendoring and building dependencies. It's also easier to
understand for new developers familiar with node.
Diffstat (limited to 'testlib/talertest.ts')
-rw-r--r-- | testlib/talertest.ts | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/testlib/talertest.ts b/testlib/talertest.ts deleted file mode 100644 index b28e2036c..000000000 --- a/testlib/talertest.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* - This file is part of TALER - (C) 2016 Inria - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> - */ - -/** - * - * @author Florian Dold - */ - -type TestFn = (t: TestLib) => void | Promise<void>; - -interface Test { - name: string; - testFn: TestFn; -} - -export interface TestLib { - pass(msg?: string): void; - fail(msg?: string): void; - assert(v: any, msg?: string): void; - assertEqualsStrict(v1: any, v2: any, msg?: string): void; -} - -let tests: Test[] = []; -let testRunner: any; - - -/** - * Register a test case. - */ -export function test(name: string, testFn: TestFn) { - tests.push({name, testFn}); -} - - -/** - * Run all registered test case, producing a TAP stream. - */ -export async function run(statusCallback?: (m: string) => void) { - console.log(`1..${tests.length}`); - for (let i in tests) { - let t = tests[i]; - let passed = false; - let lastMsg: string|undefined = undefined; - let p = new Promise((resolve, reject) => { - let pass = (msg?: string) => { - if (passed) { - let e = Error("test passed twice"); - reject(e); - throw e; - } - passed = true; - lastMsg = msg; - resolve(); - }; - let fail = (msg?: string) => { - lastMsg = msg; - let e = Error("test failed"); - reject(e); - throw e; - }; - let assert = (v: any, msg?: string) => { - if (!v) { - lastMsg = msg; - reject(Error("test failed")); - return; - } - }; - let assertEqualsStrict = (v1: any, v2: any, msg?: string) => { - if (v1 !== v2) { - console.log(`# expected: ${v1}`); - console.log(`# actual: ${v2}`); - lastMsg = msg; - let e = Error("test failed"); - reject(e); - throw e; - } - }; - // Test might return a promise. If so, wait for it. - let r = t.testFn({pass,fail, assert, assertEqualsStrict}); - r.then(() => resolve(), (e) => reject(e)); - }); - - console.log(`# ${t.name}`); - statusCallback && statusCallback(`starting test ${t.name}`); - - if (!lastMsg) { - lastMsg = "-"; - } - - try { - await p; - if (!passed) { - throw Error("test did not call 'pass'"); - } - console.log(`ok ${Number(i) + 1} ${lastMsg || "-"}`); - statusCallback && statusCallback(`finished test ${t.name}`); - } catch (e) { - try { - console.error(e.stack); - } catch (e2) { - console.error(e); - } - console.log(`not ok ${Number(i) + 1} ${lastMsg || "-"}`); - statusCallback && statusCallback(`failed test ${t.name}`); - } - } -} |