| Index: test_runner.js |
| =================================================================== |
| --- a/test_runner.js |
| +++ b/test_runner.js |
| @@ -12,57 +12,76 @@ |
| * 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 nodeunit = require("nodeunit"); |
| let path = require("path"); |
| +let phantomjs = require("phantomjs2"); |
| let process = require("process"); |
| -let nodeunit = require("nodeunit"); |
| -let qunit = require("node-qunit-phantomjs"); |
| +let url = require("url"); |
| let nodeunitFiles = []; |
| -let qunitFiles = []; |
| +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 |
| + nodeunitFiles.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 (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 (nodeunitFiles.length) |
| nodeunit.reporters.default.run(nodeunitFiles); |
| -for (let file of qunitFiles) |
| - qunit(file); |