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

Delta Between Two Patch Sets: test_runner.js

Issue 29373596: Issue 4838 - Use nodeunit framework for integration tests running in browser (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Left Patch Set: Isolate module scopes to avoid naming conflicts Created Jan. 25, 2017, 9:53 a.m.
Right Patch Set: Addressed comments and added additional minor changes Created Feb. 24, 2017, 9:17 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « test/browser/elemHideEmulation.js ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 Eyeo GmbH 3 * Copyright (C) 2006-2016 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 "use strict"; 18 "use strict";
19 19
20 let childProcess = require("child_process"); 20 let childProcess = require("child_process");
21 let fs = require("fs"); 21 let fs = require("fs");
22 let nodeunit = require("nodeunit"); 22 let nodeunit = require("nodeunit");
23 let path = require("path"); 23 let path = require("path");
24 let phantomjs = require("phantomjs2"); 24 let phantomjs = require("phantomjs2");
25 let process = require("process"); 25 let process = require("process");
26 let url = require("url"); 26 let url = require("url");
27 27
28 let nodeunitFiles = []; 28 let unitFiles = [];
Felix Dahlke 2017/01/30 14:37:59 Since the browser tests are using nodeunit as well
Wladimir Palant 2017/02/24 09:18:55 Done.
29 let browserFiles = []; 29 let browserFiles = [];
30 function addTestPaths(testPaths, recurse) 30 function addTestPaths(testPaths, recurse)
31 { 31 {
32 for (let testPath of testPaths) 32 for (let testPath of testPaths)
33 { 33 {
34 let stat = fs.statSync(testPath); 34 let stat = fs.statSync(testPath);
35 if (stat.isDirectory()) 35 if (stat.isDirectory())
36 { 36 {
37 if (recurse) 37 if (recurse)
38 { 38 {
39 addTestPaths(fs.readdirSync(testPath).map( 39 addTestPaths(fs.readdirSync(testPath).map(
40 file => path.join(testPath, file))); 40 file => path.join(testPath, file)));
41 } 41 }
42 continue; 42 continue;
43 } 43 }
44 if (path.basename(testPath).startsWith("_")) 44 if (path.basename(testPath).startsWith("_"))
45 continue; 45 continue;
46 if (path.extname(testPath) == ".js") 46 if (path.extname(testPath) == ".js")
47 { 47 {
48 if (testPath.split(path.sep).includes("browser")) 48 if (testPath.split(path.sep).includes("browser"))
49 browserFiles.push(testPath); 49 browserFiles.push(testPath);
50 else 50 else
51 nodeunitFiles.push(testPath); 51 unitFiles.push(testPath);
52 } 52 }
53 } 53 }
54 } 54 }
55 if (process.argv.length > 2) 55 if (process.argv.length > 2)
56 {
57 addTestPaths(process.argv.slice(2), true); 56 addTestPaths(process.argv.slice(2), true);
58 }
59 else 57 else
60 { 58 {
61 addTestPaths( 59 addTestPaths(
62 [path.join(__dirname, "test"), path.join(__dirname, "test", "browser")], 60 [path.join(__dirname, "test"), path.join(__dirname, "test", "browser")],
63 true 61 true
64 ); 62 );
65 } 63 }
66 64
67 if (browserFiles.length) 65 if (browserFiles.length)
68 { 66 {
69 let nodeunitPath = path.join( 67 let nodeunitPath = path.join(
70 path.dirname(require.resolve("nodeunit")), 68 path.dirname(require.resolve("nodeunit")),
71 "examples", "browser", "nodeunit.js" 69 "examples", "browser", "nodeunit.js"
72 ); 70 );
73 browserFiles.unshift(nodeunitPath); 71 browserFiles.unshift(nodeunitPath);
74 72
75 let urls = browserFiles.map(file => 73 let urls = browserFiles.map(file =>
76 { 74 {
77 return url.format({ 75 return url.format({
78 protocol: "file", 76 protocol: "file",
79 slashes: "true", 77 slashes: "true",
80 pathname: path.resolve(process.cwd, file).split(path.sep).join("/") 78 pathname: path.resolve(process.cwd, file).split(path.sep).join("/")
81 }); 79 });
82 }); 80 });
83 let args = [path.join(__dirname, "browsertests.js")].concat(urls); 81 let args = [path.join(__dirname, "browsertests.js")].concat(urls);
84 childProcess.execFileSync(phantomjs.path, args, {stdio: "inherit"}); 82 childProcess.execFileSync(phantomjs.path, args, {stdio: "inherit"});
85 } 83 }
86 if (nodeunitFiles.length) 84 if (unitFiles.length)
Felix Dahlke 2017/01/30 14:37:59 IMO we should run the unit tests first - should fa
Wladimir Palant 2017/02/24 09:18:55 This is not so easy, unit tests are async and we w
Felix Dahlke 2017/02/24 10:43:39 Acknowledged.
87 nodeunit.reporters.default.run(nodeunitFiles); 85 nodeunit.reporters.default.run(unitFiles);
LEFTRIGHT

Powered by Google App Engine
This is Rietveld