From a9aca818f98711c97af2501f681d9a5f4c7cba32 Mon Sep 17 00:00:00 2001 From: Manish Jethani Date: Tue, 17 Aug 2021 19:23:28 +0530 Subject: [PATCH] Add tests for enableWASM() (#3835) --- platform/npm/test.js | 1 + platform/npm/tests/wasm.js | 51 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 platform/npm/tests/wasm.js diff --git a/platform/npm/test.js b/platform/npm/test.js index 10dc462b6..b1db1538d 100644 --- a/platform/npm/test.js +++ b/platform/npm/test.js @@ -33,6 +33,7 @@ import { promisify } from 'util'; async function spawnMocha() { const files = [ + 'tests/wasm.js', 'tests/snfe.js', ]; diff --git a/platform/npm/tests/wasm.js b/platform/npm/tests/wasm.js new file mode 100644 index 000000000..3bd449e99 --- /dev/null +++ b/platform/npm/tests/wasm.js @@ -0,0 +1,51 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2014-present Raymond Hill + + This program 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 of the License, or + (at your option) any later version. + + This program 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 this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +'use strict'; + +/******************************************************************************/ + +import { strict as assert } from 'assert'; + +import { createWorld } from 'esm-world'; + +import './_common.js'; + +describe('WASM', () => { + context('WebAssembly available', () => { + it('should fulfill with true', async () => { + const { enableWASM } = await createWorld('./index.js', { globals: { URL, WebAssembly } }); + + assert.equal(await enableWASM(), true); + }); + }); + + context('WebAssembly not available', () => { + it('should fulfill with false', async () => { + // WebAssembly must be set to undefined explicitly; otherwise + // createWorld() ends up using the global WebAssembly object + // anyway. + const { enableWASM } = await createWorld('./index.js', { globals: { URL, WebAssembly: undefined } }); + + assert.equal(await enableWASM(), false); + }); + }); +});