| Index: test/browser/snippets.js |
| =================================================================== |
| --- a/test/browser/snippets.js |
| +++ b/test/browser/snippets.js |
| @@ -12,117 +12,118 @@ |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| "use strict"; |
| +/* global assert */ |
| + |
| const library = require("../../lib/content/snippets.js"); |
| -// We need this stub for the injector. |
| -window.browser = |
| -{ |
| - runtime: |
| - { |
| - getURL: () => "" |
| - } |
| -}; |
| - |
| -let testDocument = null; |
| - |
| -exports.setUp = function(callback) |
| -{ |
| - let iframe = document.createElement("iframe"); |
| - document.body.appendChild(iframe); |
| - testDocument = iframe.contentDocument; |
| - |
| - callback(); |
| -}; |
| - |
| -exports.tearDown = function(callback) |
| +describe("Snippets", () => |
| { |
| - let iframe = testDocument.defaultView.frameElement; |
| - iframe.parentNode.removeChild(iframe); |
| - testDocument = null; |
| + before(() => |
| + { |
| + // We need this stub for the injector. |
| + window.browser = |
| + { |
| + runtime: |
| + { |
| + getURL: () => "" |
| + } |
| + }; |
| + }); |
| - callback(); |
| -}; |
| + let testDocument = null; |
| -function timeout(delay) |
| -{ |
| - return new Promise((resolve, reject) => |
| + beforeEach(() => |
| { |
| - window.setTimeout(resolve, delay); |
| + let iframe = document.createElement("iframe"); |
| + document.body.appendChild(iframe); |
| + testDocument = iframe.contentDocument; |
| }); |
| -} |
| -async function runSnippet(test, snippetName, ...args) |
| -{ |
| - let snippet = library[snippetName]; |
| - |
| - test.ok(snippet); |
| + afterEach(() => |
| + { |
| + let iframe = testDocument.defaultView.frameElement; |
| + iframe.parentNode.removeChild(iframe); |
| + testDocument = null; |
| + }); |
| - snippet(...args); |
| - await timeout(100); |
| -} |
| + function timeout(delay) |
| + { |
| + return new Promise((resolve, reject) => |
| + { |
| + window.setTimeout(resolve, delay); |
| + }); |
| + } |
| -exports.testAbortPropertyReadSnippet = async function(test) |
| -{ |
| - window.abpTest = "foo"; |
| + async function runSnippet(snippetName, ...args) |
| + { |
| + let snippet = library[snippetName]; |
| + |
| + assert.ok(snippet); |
| + |
| + snippet(...args); |
| + await timeout(100); |
| + } |
| async function testProperty(property, result = true) |
| { |
| let properties = property.split("."); |
| - test.ok(properties.length >= 1); |
| + assert.ok(properties.length >= 1); |
| let exceptionCaught = false; |
| let value = 1; |
| try |
| { |
| let obj = window; |
| while (properties.length > 1) |
| obj = obj[properties.shift()]; |
| value = obj[properties.shift()]; |
| } |
| catch (e) |
| { |
| if (properties.length == 0) |
| exceptionCaught = true; |
| } |
| - test.equal(exceptionCaught, result, `The property "${property}" didn't trigger and exception.`); |
| - test.equal(value, result ? 1 : undefined, `The value for "${property}" shouldn't have been read.`); |
| + assert.equal(exceptionCaught, result, `The property "${property}" didn't trigger and exception.`); |
| + assert.equal(value, result ? 1 : undefined, `The value for "${property}" shouldn't have been read.`); |
| } |
| - await runSnippet(test, "abort-on-property-read", "abpTest"); |
| - await testProperty("abpTest"); |
| + it("Test abort property read", async() => |
| + { |
| + window.abpTest = "foo"; |
| - window.abpTest2 = {prop1: "foo"}; |
| - |
| - await runSnippet(test, "abort-on-property-read", "abpTest2.prop1"); |
| - await testProperty("abpTest2.prop1"); |
| + await runSnippet("abort-on-property-read", "abpTest"); |
| + await testProperty("abpTest"); |
| - // Test that we try to catch a property that don't exist yet. |
| - await runSnippet(test, "abort-on-property-read", "abpTest3.prop1"); |
| - window.abpTest3 = {prop1: "foo"}; |
| - await testProperty("abpTest3.prop1"); |
| + window.abpTest2 = {prop1: "foo"}; |
| + |
| + await runSnippet("abort-on-property-read", "abpTest2.prop1"); |
| + await testProperty("abpTest2.prop1"); |
| - // Test that other properties don't trigger. |
| - await testProperty("abpTest3.prop2", false); |
| + // Test that we try to catch a property that don't exist yet. |
| + await runSnippet("abort-on-property-read", "abpTest3.prop1"); |
| + window.abpTest3 = {prop1: "foo"}; |
| + await testProperty("abpTest3.prop1"); |
| - // Test overwriting the object with another object |
| - window.foo = {bar: {}}; |
| - await runSnippet(test, "abort-on-property-read", "foo.bar.lambda"); |
| - await testProperty("foo.bar.lambda"); |
| - window.foo.bar = {}; |
| - await testProperty("foo.bar.lambda"); |
| + // Test that other properties don't trigger. |
| + await testProperty("abpTest3.prop2", false); |
| - // Test if we start with a non-object |
| - window.foo2 = 5; |
| - await runSnippet(test, "abort-on-property-read", "foo2.bar2.lambda"); |
| - await testProperty("foo2.bar2.lambda"); |
| - window.foo2 = {}; |
| - await testProperty("foo2.bar2.lambda"); |
| + // Test overwriting the object with another object |
| + window.foo = {bar: {}}; |
| + await runSnippet("abort-on-property-read", "foo.bar.lambda"); |
| + await testProperty("foo.bar.lambda"); |
| + window.foo.bar = {}; |
| + await testProperty("foo.bar.lambda"); |
| - test.done(); |
| -}; |
| - |
| + // Test if we start with a non-object |
| + window.foo2 = 5; |
| + await runSnippet("abort-on-property-read", "foo2.bar2.lambda"); |
| + await testProperty("foo2.bar2.lambda"); |
| + window.foo2 = {}; |
| + await testProperty("foo2.bar2.lambda"); |
| + }); |
| +}); |