Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: test/browser/snippets.js

Issue 30025555: Issue 6820 - Move tests to mocha (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Rebased. Created April 5, 2019, 4:16 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/browser/elemHideEmulation.js ('k') | test/caching.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/browser/snippets.js
===================================================================
--- a/test/browser/snippets.js
+++ b/test/browser/snippets.js
@@ -12,150 +12,156 @@
* 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");
const {timeout} = require("./_utils");
-// We need this stub for the injector.
-window.browser = {
- runtime: {
- getURL: () => ""
- }
-};
-
-async function runSnippet(test, snippetName, ...args)
+describe("Snippets", () =>
{
- let snippet = library[snippetName];
+ before(() =>
+ {
+ // We need this stub for the injector.
+ window.browser = {
+ runtime: {
+ getURL: () => ""
+ }
+ };
+ });
- test.ok(snippet);
+ async function runSnippet(snippetName, ...args)
+ {
+ let snippet = library[snippetName];
- snippet(...args);
+ assert.ok(snippet);
- // For snippets that run in the context of the document via a <script>
- // element (i.e. snippets that use makeInjector()), we need to wait for
- // execution to be complete.
- await timeout(100);
-}
+ snippet(...args);
-exports.testAbortOnPropertyReadSnippet = async function(test)
-{
+ // For snippets that run in the context of the document via a <script>
+ // element (i.e. snippets that use makeInjector()), we need to wait for
+ // execution to be complete.
+ await timeout(100);
+ }
+
function testProperty(property, result = true, errorName = "ReferenceError")
{
let path = property.split(".");
let exceptionCaught = false;
let value = 1;
try
{
let obj = window;
while (path.length > 1)
obj = obj[path.shift()];
value = obj[path.shift()];
}
catch (e)
{
- test.equal(e.name, errorName);
+ assert.equal(e.name, errorName);
exceptionCaught = true;
}
- test.equal(
+ assert.equal(
exceptionCaught,
result,
`The property "${property}" ${result ? "should" : "shouldn't"} trigger an exception.`
);
- test.equal(
+ assert.equal(
value,
result ? 1 : undefined,
`The value for "${property}" ${result ? "shouldn't" : "should"} have been read.`
);
}
- window.abpTest = "fortytwo";
- await runSnippet(test, "abort-on-property-read", "abpTest");
- testProperty("abpTest");
-
- window.abpTest2 = {prop1: "fortytwo"};
- await runSnippet(test, "abort-on-property-read", "abpTest2.prop1");
- testProperty("abpTest2.prop1");
+ it("Test abort property read", async() =>
+ {
+ window.abpTest = "fortytwo";
+ await runSnippet("abort-on-property-read", "abpTest");
+ testProperty("abpTest");
- // Test that we try to catch a property that doesn't exist yet.
- await runSnippet(test, "abort-on-property-read", "abpTest3.prop1");
- window.abpTest3 = {prop1: "fortytwo"};
- testProperty("abpTest3.prop1");
+ window.abpTest2 = {prop1: "fortytwo"};
+ await runSnippet("abort-on-property-read", "abpTest2.prop1");
+ testProperty("abpTest2.prop1");
- // Test that other properties don't trigger.
- testProperty("abpTest3.prop2", false);
+ // Test that we try to catch a property that doesn't exist yet.
+ await runSnippet("abort-on-property-read", "abpTest3.prop1");
+ window.abpTest3 = {prop1: "fortytwo"};
+ testProperty("abpTest3.prop1");
+
+ // Test that other properties don't trigger.
+ testProperty("abpTest3.prop2", false);
- // Test overwriting the object with another object.
- window.abpTest4 = {prop3: {}};
- await runSnippet(test, "abort-on-property-read", "abpTest4.prop3.foo");
- testProperty("abpTest4.prop3.foo");
- window.abpTest4.prop3 = {};
- testProperty("abpTest4.prop3.foo");
+ // Test overwriting the object with another object.
+ window.abpTest4 = {prop3: {}};
+ await runSnippet("abort-on-property-read", "abpTest4.prop3.foo");
+ testProperty("abpTest4.prop3.foo");
+ window.abpTest4.prop3 = {};
+ testProperty("abpTest4.prop3.foo");
- // Test if we start with a non-object.
- window.abpTest5 = 42;
- await runSnippet(test, "abort-on-property-read", "abpTest5.prop4.bar");
+ // Test if we start with a non-object.
+ window.abpTest5 = 42;
+ await runSnippet("abort-on-property-read", "abpTest5.prop4.bar");
- testProperty("abpTest5.prop4.bar", true, "TypeError");
+ testProperty("abpTest5.prop4.bar", true, "TypeError");
- window.abpTest5 = {prop4: 42};
- testProperty("abpTest5.prop4.bar", false);
- window.abpTest5 = {prop4: {}};
- testProperty("abpTest5.prop4.bar");
+ window.abpTest5 = {prop4: 42};
+ testProperty("abpTest5.prop4.bar", false);
+ window.abpTest5 = {prop4: {}};
+ testProperty("abpTest5.prop4.bar");
- // Check that it works on properties that are functions.
- // https://issues.adblockplus.org/ticket/7419
+ // Check that it works on properties that are functions.
+ // https://issues.adblockplus.org/ticket/7419
- // Existing function (from the API).
- await runSnippet(test, "abort-on-property-read", "Object.keys");
- testProperty("Object.keys");
+ // Existing function (from the API).
+ await runSnippet("abort-on-property-read", "Object.keys");
+ testProperty("Object.keys");
- // Function properties.
- window.abpTest6 = function() {};
- window.abpTest6.prop1 = function() {};
- await runSnippet(test, "abort-on-property-read", "abpTest6.prop1");
- testProperty("abpTest6.prop1");
+ // Function properties.
+ window.abpTest6 = function() {};
+ window.abpTest6.prop1 = function() {};
+ await runSnippet("abort-on-property-read", "abpTest6.prop1");
+ testProperty("abpTest6.prop1");
- // Function properties, with sub-property set afterwards.
- window.abpTest7 = function() {};
- await runSnippet(test, "abort-on-property-read", "abpTest7.prop1");
- window.abpTest7.prop1 = function() {};
- testProperty("abpTest7.prop1");
+ // Function properties, with sub-property set afterwards.
+ window.abpTest7 = function() {};
+ await runSnippet("abort-on-property-read", "abpTest7.prop1");
+ window.abpTest7.prop1 = function() {};
+ testProperty("abpTest7.prop1");
- // Function properties, with base property as function set afterwards.
- await runSnippet(test, "abort-on-property-read", "abpTest8.prop1");
- window.abpTest8 = function() {};
- window.abpTest8.prop1 = function() {};
- testProperty("abpTest8.prop1");
+ // Function properties, with base property as function set afterwards.
+ await runSnippet("abort-on-property-read", "abpTest8.prop1");
+ window.abpTest8 = function() {};
+ window.abpTest8.prop1 = function() {};
+ testProperty("abpTest8.prop1");
- // Arrow function properties.
- window.abpTest9 = () => {};
- await runSnippet(test, "abort-on-property-read", "abpTest9");
- testProperty("abpTest9");
+ // Arrow function properties.
+ window.abpTest9 = () => {};
+ await runSnippet("abort-on-property-read", "abpTest9");
+ testProperty("abpTest9");
- // Class function properties.
- window.abpTest10 = class {};
- await runSnippet(test, "abort-on-property-read", "abpTest10");
- testProperty("abpTest10");
+ // Class function properties.
+ window.abpTest10 = class {};
+ await runSnippet("abort-on-property-read", "abpTest10");
+ testProperty("abpTest10");
- // Class function properties with prototype function properties.
- window.abpTest11 = class {};
- window.abpTest11.prototype.prop1 = function() {};
- await runSnippet(test, "abort-on-property-read", "abpTest11.prototype.prop1");
- testProperty("abpTest11.prototype.prop1");
+ // Class function properties with prototype function properties.
+ window.abpTest11 = class {};
+ window.abpTest11.prototype.prop1 = function() {};
+ await runSnippet("abort-on-property-read", "abpTest11.prototype.prop1");
+ testProperty("abpTest11.prototype.prop1");
- // Class function properties with prototype function properties, with
- // prototype property set afterwards.
- window.abpTest12 = class {};
- await runSnippet(test, "abort-on-property-read", "abpTest12.prototype.prop1");
- window.abpTest12.prototype.prop1 = function() {};
- testProperty("abpTest12.prototype.prop1");
-
- test.done();
-};
+ // Class function properties with prototype function properties, with
+ // prototype property set afterwards.
+ window.abpTest12 = class {};
+ await runSnippet("abort-on-property-read", "abpTest12.prototype.prop1");
+ window.abpTest12.prototype.prop1 = function() {};
+ testProperty("abpTest12.prototype.prop1");
+ });
+});
« no previous file with comments | « test/browser/elemHideEmulation.js ('k') | test/caching.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld