mirror of
https://github.com/osnr/TabFS.git
synced 2024-05-03 06:13:25 +02:00
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)
This commit is contained in:
parent
00caad5228
commit
11cf48259a
|
@ -82,7 +82,6 @@ async function detachDebugger(tabId) {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
const TabManager = (function() {
|
const TabManager = (function() {
|
||||||
if (TESTING) return;
|
|
||||||
if (chrome.debugger) chrome.debugger.onEvent.addListener((source, method, params) => {
|
if (chrome.debugger) chrome.debugger.onEvent.addListener((source, method, params) => {
|
||||||
console.log(source, method, params);
|
console.log(source, method, params);
|
||||||
if (method === "Page.frameStartedLoading") {
|
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
|
// so you could patch more routes in at runtime, but I need to think
|
||||||
// a bit about how to make that work with wildcards.
|
// 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
|
// fill in default implementations of fs ops
|
||||||
for (let key in router) {
|
for (let key in router) {
|
||||||
|
@ -773,6 +761,12 @@ function tryConnect() {
|
||||||
port.onDisconnect.addListener(p => {console.log('disconnect', p)});
|
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();
|
tryConnect();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
run-test: test
|
run-test: test
|
||||||
|
node test.js
|
||||||
./test
|
./test
|
||||||
|
|
||||||
test: test.c
|
test: test.c
|
||||||
|
|
12
test/README.md
Normal file
12
test/README.md
Normal file
|
@ -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.
|
|
@ -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/title.txt", "Title of Test Page"));
|
||||||
assert(file_contents_equal("../fs/mnt/tabs/last-focused/text.txt", "Body Text 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);
|
assert(system("echo \"document.getElementById('ta').value\" > ../fs/mnt/tabs/last-focused/evals/ta.js") == 0);
|
||||||
|
|
||||||
|
|
21
test/test.js
Normal file
21
test/test.js
Normal file
|
@ -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']);
|
||||||
|
})();
|
Loading…
Reference in a new issue