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

Unified Diff: test_runner.js

Issue 29373596: Issue 4838 - Use nodeunit framework for integration tests running in browser (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Patch Set: Addressed comments and added additional minor changes Created Feb. 24, 2017, 9:17 a.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') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test_runner.js
===================================================================
--- a/test_runner.js
+++ b/test_runner.js
@@ -12,57 +12,74 @@
* 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";
+let childProcess = require("child_process");
let fs = require("fs");
-let path = require("path");
-let process = require("process");
let nodeunit = require("nodeunit");
-let qunit = require("node-qunit-phantomjs");
+let path = require("path");
+let phantomjs = require("phantomjs2");
+let process = require("process");
+let url = require("url");
-let nodeunitFiles = [];
-let qunitFiles = [];
+let unitFiles = [];
+let browserFiles = [];
function addTestPaths(testPaths, recurse)
{
for (let testPath of testPaths)
{
let stat = fs.statSync(testPath);
if (stat.isDirectory())
{
if (recurse)
{
addTestPaths(fs.readdirSync(testPath).map(
file => path.join(testPath, file)));
}
continue;
}
if (path.basename(testPath).startsWith("_"))
continue;
- if (testPath.split(path.sep).includes("browser"))
+ if (path.extname(testPath) == ".js")
{
- if (path.extname(testPath) == ".html")
- qunitFiles.push(testPath);
+ if (testPath.split(path.sep).includes("browser"))
+ browserFiles.push(testPath);
+ else
+ unitFiles.push(testPath);
}
- else if (path.extname(testPath) == ".js")
- nodeunitFiles.push(testPath);
}
}
if (process.argv.length > 2)
-{
addTestPaths(process.argv.slice(2), true);
-}
else
{
addTestPaths(
[path.join(__dirname, "test"), path.join(__dirname, "test", "browser")],
true
);
}
-if (nodeunitFiles.length)
- nodeunit.reporters.default.run(nodeunitFiles);
-for (let file of qunitFiles)
- qunit(file);
+if (browserFiles.length)
+{
+ let nodeunitPath = path.join(
+ path.dirname(require.resolve("nodeunit")),
+ "examples", "browser", "nodeunit.js"
+ );
+ browserFiles.unshift(nodeunitPath);
+
+ let urls = browserFiles.map(file =>
+ {
+ return url.format({
+ protocol: "file",
+ slashes: "true",
+ pathname: path.resolve(process.cwd, file).split(path.sep).join("/")
+ });
+ });
+ let args = [path.join(__dirname, "browsertests.js")].concat(urls);
+ childProcess.execFileSync(phantomjs.path, args, {stdio: "inherit"});
+}
+if (unitFiles.length)
+ nodeunit.reporters.default.run(unitFiles);
« no previous file with comments | « test/browser/elemHideEmulation.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld