mirror of
https://github.com/gorhill/uBlock.git
synced 2024-10-06 09:37:12 +02:00
Run SNFE tests with Wasm off and on (#3833)
This commit is contained in:
parent
9ceef65f9a
commit
0bf19cc683
@ -70,6 +70,10 @@ describe('Request data', () => {
|
|||||||
before(async () => {
|
before(async () => {
|
||||||
const { StaticNetFilteringEngine, enableWASM } = await createWorld('./index.js', { globals: global });
|
const { StaticNetFilteringEngine, enableWASM } = await createWorld('./index.js', { globals: global });
|
||||||
|
|
||||||
|
if ( wasm ) {
|
||||||
|
assert(await enableWASM());
|
||||||
|
}
|
||||||
|
|
||||||
engine = await StaticNetFilteringEngine.create();
|
engine = await StaticNetFilteringEngine.create();
|
||||||
|
|
||||||
await engine.useLists([
|
await engine.useLists([
|
||||||
@ -96,10 +100,6 @@ describe('Request data', () => {
|
|||||||
read('./data/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt')
|
read('./data/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt')
|
||||||
.then(raw => ({ name: 'urlhaus', raw })),
|
.then(raw => ({ name: 'urlhaus', raw })),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ( wasm ) {
|
|
||||||
assert(await enableWASM());
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
for ( let i = 0; i < requests.length; i++ ) {
|
for ( let i = 0; i < requests.length; i++ ) {
|
||||||
|
@ -29,199 +29,197 @@ import { createWorld } from 'esm-world';
|
|||||||
|
|
||||||
import './_common.js';
|
import './_common.js';
|
||||||
|
|
||||||
let engine = null;
|
|
||||||
|
|
||||||
describe('SNFE', () => {
|
describe('SNFE', () => {
|
||||||
describe('Initialization', () => {
|
for ( let wasm of [ false, true ] ) {
|
||||||
let StaticNetFilteringEngine = null;
|
context(`${wasm ? 'Wasm on' : 'Wasm off'}`, () => {
|
||||||
|
let module = null;
|
||||||
|
let engine = null;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
const module = await createWorld('./index.js', { globals: { URL } });
|
module = await createWorld('./index.js', { globals: global });
|
||||||
|
|
||||||
StaticNetFilteringEngine = module.StaticNetFilteringEngine;
|
if ( wasm ) {
|
||||||
|
assert(await module.enableWASM());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
engine = null;
|
||||||
|
module = null;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Initialization', () => {
|
||||||
|
it('should not reject on first attempt', async () => {
|
||||||
|
await module.StaticNetFilteringEngine.create();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should reject on second attempt', async () => {
|
||||||
|
await module.StaticNetFilteringEngine.create();
|
||||||
|
await assert.rejects(module.StaticNetFilteringEngine.create());
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should reject on third attempt', async () => {
|
||||||
|
await module.StaticNetFilteringEngine.create();
|
||||||
|
|
||||||
|
try {
|
||||||
|
await module.StaticNetFilteringEngine.create();
|
||||||
|
} catch (error) {
|
||||||
|
}
|
||||||
|
|
||||||
|
await assert.rejects(module.StaticNetFilteringEngine.create());
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Filter loading', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
engine = await module.StaticNetFilteringEngine.create();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject on no lists', async () => {
|
||||||
|
await engine.useLists([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject on one empty list', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '' },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject on one list containing one filter', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^' },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject on one list containing multiple filters', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject on multiple lists containing multiple filters', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
||||||
|
{ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject on promised-based lists', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
Promise.resolve({ name: 'easylist', raw: '/foo^\n||example.com^' }),
|
||||||
|
Promise.resolve({ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' }),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should reject on promised-based lists in which a promise is rejected', async () => {
|
||||||
|
await assert.rejects(engine.useLists([
|
||||||
|
Promise.reject({ name: 'easylist', raw: '/foo^\n||example.com^' }),
|
||||||
|
Promise.resolve({ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' }),
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should reject on promised-based lists in which all promises are rejected', async () => {
|
||||||
|
await assert.rejects(engine.useLists([
|
||||||
|
Promise.reject({ name: 'easylist', raw: '/foo^\n||example.com^' }),
|
||||||
|
Promise.reject({ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' }),
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Serialization', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
engine = await module.StaticNetFilteringEngine.create();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with no lists', async () => {
|
||||||
|
await engine.useLists([]);
|
||||||
|
|
||||||
|
await engine.serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with one empty list', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
await engine.serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with one list containing one filter', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
await engine.serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with one list containing multiple filters', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
await engine.serialize();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with multiple lists containing multiple filters', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
||||||
|
{ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
await engine.serialize();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Deserialization', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
engine = await module.StaticNetFilteringEngine.create();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with no lists', async () => {
|
||||||
|
await engine.useLists([]);
|
||||||
|
|
||||||
|
const serialized = await engine.serialize();
|
||||||
|
await engine.deserialize(serialized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with one empty list', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const serialized = await engine.serialize();
|
||||||
|
await engine.deserialize(serialized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with one list containing one filter', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const serialized = await engine.serialize();
|
||||||
|
await engine.deserialize(serialized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with one list containing multiple filters', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const serialized = await engine.serialize();
|
||||||
|
await engine.deserialize(serialized);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not reject with multiple lists containing multiple filters', async () => {
|
||||||
|
await engine.useLists([
|
||||||
|
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
||||||
|
{ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const serialized = await engine.serialize();
|
||||||
|
await engine.deserialize(serialized);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
it('should not reject on first attempt', async () => {
|
|
||||||
await StaticNetFilteringEngine.create();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should reject on second attempt', async () => {
|
|
||||||
await StaticNetFilteringEngine.create();
|
|
||||||
await assert.rejects(StaticNetFilteringEngine.create());
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should reject on third attempt', async () => {
|
|
||||||
await StaticNetFilteringEngine.create();
|
|
||||||
|
|
||||||
try {
|
|
||||||
await StaticNetFilteringEngine.create();
|
|
||||||
} catch (error) {
|
|
||||||
}
|
|
||||||
|
|
||||||
await assert.rejects(StaticNetFilteringEngine.create());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Filter loading', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
const globals = { URL, setTimeout, clearTimeout };
|
|
||||||
|
|
||||||
const { StaticNetFilteringEngine } = await createWorld('./index.js', { globals });
|
|
||||||
|
|
||||||
engine = await StaticNetFilteringEngine.create();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject on no lists', async () => {
|
|
||||||
await engine.useLists([]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject on one empty list', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '' },
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject on one list containing one filter', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^' },
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject on one list containing multiple filters', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject on multiple lists containing multiple filters', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
|
||||||
{ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' },
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject on promised-based lists', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
Promise.resolve({ name: 'easylist', raw: '/foo^\n||example.com^' }),
|
|
||||||
Promise.resolve({ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' }),
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should reject on promised-based lists in which a promise is rejected', async () => {
|
|
||||||
await assert.rejects(engine.useLists([
|
|
||||||
Promise.reject({ name: 'easylist', raw: '/foo^\n||example.com^' }),
|
|
||||||
Promise.resolve({ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' }),
|
|
||||||
]));
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should reject on promised-based lists in which all promises are rejected', async () => {
|
|
||||||
await assert.rejects(engine.useLists([
|
|
||||||
Promise.reject({ name: 'easylist', raw: '/foo^\n||example.com^' }),
|
|
||||||
Promise.reject({ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' }),
|
|
||||||
]));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Serialization', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
const globals = { URL, setTimeout, clearTimeout };
|
|
||||||
|
|
||||||
const { StaticNetFilteringEngine } = await createWorld('./index.js', { globals });
|
|
||||||
|
|
||||||
engine = await StaticNetFilteringEngine.create();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with no lists', async () => {
|
|
||||||
await engine.useLists([]);
|
|
||||||
|
|
||||||
await engine.serialize();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with one empty list', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
await engine.serialize();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with one list containing one filter', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
await engine.serialize();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with one list containing multiple filters', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
await engine.serialize();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with multiple lists containing multiple filters', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
|
||||||
{ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
await engine.serialize();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Deserialization', () => {
|
|
||||||
beforeEach(async () => {
|
|
||||||
const globals = { URL, setTimeout, clearTimeout };
|
|
||||||
|
|
||||||
const { StaticNetFilteringEngine } = await createWorld('./index.js', { globals });
|
|
||||||
|
|
||||||
engine = await StaticNetFilteringEngine.create();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with no lists', async () => {
|
|
||||||
await engine.useLists([]);
|
|
||||||
|
|
||||||
const serialized = await engine.serialize();
|
|
||||||
await engine.deserialize(serialized);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with one empty list', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const serialized = await engine.serialize();
|
|
||||||
await engine.deserialize(serialized);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with one list containing one filter', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const serialized = await engine.serialize();
|
|
||||||
await engine.deserialize(serialized);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with one list containing multiple filters', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const serialized = await engine.serialize();
|
|
||||||
await engine.deserialize(serialized);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not reject with multiple lists containing multiple filters', async () => {
|
|
||||||
await engine.useLists([
|
|
||||||
{ name: 'easylist', raw: '/foo^\n||example.com^' },
|
|
||||||
{ name: 'easyprivacy', raw: '||example.net/bar/\n^bar.js?' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const serialized = await engine.serialize();
|
|
||||||
await engine.deserialize(serialized);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user