From 11cf48259a987ab2d48355f14b3f11d897d6c8fa Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Sun, 14 Mar 2021 21:33:23 -0700 Subject: test: separate tests from background.js, clean up and document a bit also makes the test more lenient (subset instead of equality for tab entries) --- extension/background.js | 20 +++++++------------- test/Makefile | 1 + test/README.md | 12 ++++++++++++ test/test-page.html | 11 ----------- test/test-resources/test-page.html | 11 +++++++++++ test/test-resources/test-script.js | 1 + test/test-resources/test-textarea.html | 10 ++++++++++ test/test-script.js | 1 - test/test-textarea.html | 10 ---------- test/test.c | 4 ++-- test/test.js | 21 +++++++++++++++++++++ 11 files changed, 65 insertions(+), 37 deletions(-) create mode 100644 test/README.md delete mode 100644 test/test-page.html create mode 100644 test/test-resources/test-page.html create mode 100644 test/test-resources/test-script.js create mode 100644 test/test-resources/test-textarea.html delete mode 100644 test/test-script.js delete mode 100644 test/test-textarea.html create mode 100644 test/test.js diff --git a/extension/background.js b/extension/background.js index b0f937d..4caaaf0 100644 --- a/extension/background.js +++ b/extension/background.js @@ -82,7 +82,6 @@ async function detachDebugger(tabId) { })); } const TabManager = (function() { - if (TESTING) return; if (chrome.debugger) chrome.debugger.onEvent.addListener((source, method, params) => { console.log(source, method, params); if (method === "Page.frameStartedLoading") { @@ -614,17 +613,6 @@ for (let i = 10; i >= 0; i--) { // so you could patch more routes in at runtime, but I need to think // a bit about how to make that work with wildcards. } -if (TESTING) { // I wish I could color this section with... a pink background, or something. - const assert = require('assert'); - (async () => { - assert.deepEqual(await router['/tabs/by-id/*'].readdir(), { entries: ['.', '..', 'url.txt', 'title.txt', 'text.txt', 'window', 'control', 'debugger'] }); - assert.deepEqual(await router['/'].readdir(), { entries: ['.', '..', 'windows', 'extensions', 'tabs', 'runtime'] }); - assert.deepEqual(await router['/tabs'].readdir(), { entries: ['.', '..', 'create', 'by-id', 'by-title', 'last-focused'] }); - - assert.deepEqual(findRoute('/tabs/by-id/TABID/url.txt'), router['/tabs/by-id/*/url.txt']); - })() -} - // fill in default implementations of fs ops for (let key in router) { @@ -773,6 +761,12 @@ function tryConnect() { port.onDisconnect.addListener(p => {console.log('disconnect', p)}); } -if (!TESTING) { + +if (typeof process === 'object') { + // we're running in node (as part of a test) + // return everything they might want to test + module.exports = {router, findRoute}; + +} else { tryConnect(); } diff --git a/test/Makefile b/test/Makefile index 060a265..9659a23 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,4 +1,5 @@ run-test: test + node test.js ./test test: test.c diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..31460f9 --- /dev/null +++ b/test/README.md @@ -0,0 +1,12 @@ +# test + +Two separate test 'suites': one in `test.js` that uses node, and one +in `test.c` that is an integration test that actually tests against +the extension in browser. + +Right now, you need to have Chrome open (I haven't tried Firefox or +Safari), and you'll want to make sure a window other than the +extension console is focused (the console is non-debuggable, so it +breaks the test). + +Run `make` in this folder. diff --git a/test/test-page.html b/test/test-page.html deleted file mode 100644 index 5ae2887..0000000 --- a/test/test-page.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Title of Test Page - - - - Body Text of Test Page - - diff --git a/test/test-resources/test-page.html b/test/test-resources/test-page.html new file mode 100644 index 0000000..5ae2887 --- /dev/null +++ b/test/test-resources/test-page.html @@ -0,0 +1,11 @@ + + + + + Title of Test Page + + + + Body Text of Test Page + + diff --git a/test/test-resources/test-script.js b/test/test-resources/test-script.js new file mode 100644 index 0000000..a23567e --- /dev/null +++ b/test/test-resources/test-script.js @@ -0,0 +1 @@ +console.log('hello from test script!'); diff --git a/test/test-resources/test-textarea.html b/test/test-resources/test-textarea.html new file mode 100644 index 0000000..9c460fa --- /dev/null +++ b/test/test-resources/test-textarea.html @@ -0,0 +1,10 @@ + + + + + Textarea Test Page + + + + + diff --git a/test/test-script.js b/test/test-script.js deleted file mode 100644 index a23567e..0000000 --- a/test/test-script.js +++ /dev/null @@ -1 +0,0 @@ -console.log('hello from test script!'); diff --git a/test/test-textarea.html b/test/test-textarea.html deleted file mode 100644 index 9c460fa..0000000 --- a/test/test-textarea.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Textarea Test Page - - - - - diff --git a/test/test.c b/test/test.c index e18197c..4ad3dd3 100644 --- a/test/test.c +++ b/test/test.c @@ -55,7 +55,7 @@ int main() { } { - assert(system("echo file://$(pwd)/test-page.html > ../fs/mnt/tabs/create") == 0); + assert(system("echo file://$(pwd)/test-resources/test-page.html > ../fs/mnt/tabs/create") == 0); assert(file_contents_equal("../fs/mnt/tabs/last-focused/title.txt", "Title of Test Page")); assert(file_contents_equal("../fs/mnt/tabs/last-focused/text.txt", "Body Text of Test Page")); @@ -87,7 +87,7 @@ int main() { } { - assert(system("echo file://$(pwd)/test-textarea.html > ../fs/mnt/tabs/create") == 0); + assert(system("echo file://$(pwd)/test-resources/test-textarea.html > ../fs/mnt/tabs/create") == 0); { assert(system("echo \"document.getElementById('ta').value\" > ../fs/mnt/tabs/last-focused/evals/ta.js") == 0); diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..1288bf4 --- /dev/null +++ b/test/test.js @@ -0,0 +1,21 @@ +const assert = require('assert'); + +// mock chrome namespace +global.chrome = {}; +// run background.js +const {router, findRoute} = require('../extension/background'); + +(async () => { + const tabRoute = await router['/tabs/by-id/*'].readdir(); + assert(['.', '..', 'url.txt', 'title.txt', 'text.txt'] + .every(file => tabRoute.entries.includes(file))); + + assert.deepEqual(await router['/'].readdir(), + { entries: ['.', '..', 'windows', 'extensions', 'tabs', 'runtime'] }); + assert.deepEqual(await router['/tabs'].readdir(), + { entries: ['.', '..', 'create', + 'by-id', 'by-title', 'last-focused'] }); + + assert.deepEqual(findRoute('/tabs/by-id/TABID/url.txt'), + router['/tabs/by-id/*/url.txt']); +})(); -- cgit v1.2.3