| OLD | NEW | 
|   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 fs = require("fs"); |  21 let fs = require("fs"); | 
 |  22 let nodeunit = require("nodeunit"); | 
|  21 let path = require("path"); |  23 let path = require("path"); | 
 |  24 let phantomjs = require("phantomjs2"); | 
|  22 let process = require("process"); |  25 let process = require("process"); | 
|  23 let nodeunit = require("nodeunit"); |  26 let url = require("url"); | 
|  24 let qunit = require("node-qunit-phantomjs"); |  | 
|  25  |  27  | 
|  26 let nodeunitFiles = []; |  28 let unitFiles = []; | 
|  27 let qunitFiles = []; |  29 let browserFiles = []; | 
|  28 function addTestPaths(testPaths, recurse) |  30 function addTestPaths(testPaths, recurse) | 
|  29 { |  31 { | 
|  30   for (let testPath of testPaths) |  32   for (let testPath of testPaths) | 
|  31   { |  33   { | 
|  32     let stat = fs.statSync(testPath); |  34     let stat = fs.statSync(testPath); | 
|  33     if (stat.isDirectory()) |  35     if (stat.isDirectory()) | 
|  34     { |  36     { | 
|  35       if (recurse) |  37       if (recurse) | 
|  36       { |  38       { | 
|  37         addTestPaths(fs.readdirSync(testPath).map( |  39         addTestPaths(fs.readdirSync(testPath).map( | 
|  38           file => path.join(testPath, file))); |  40           file => path.join(testPath, file))); | 
|  39       } |  41       } | 
|  40       continue; |  42       continue; | 
|  41     } |  43     } | 
|  42     if (path.basename(testPath).startsWith("_")) |  44     if (path.basename(testPath).startsWith("_")) | 
|  43       continue; |  45       continue; | 
|  44     if (testPath.split(path.sep).includes("browser")) |  46     if (path.extname(testPath) == ".js") | 
|  45     { |  47     { | 
|  46       if (path.extname(testPath) == ".html") |  48       if (testPath.split(path.sep).includes("browser")) | 
|  47         qunitFiles.push(testPath); |  49         browserFiles.push(testPath); | 
 |  50       else | 
 |  51         unitFiles.push(testPath); | 
|  48     } |  52     } | 
|  49     else if (path.extname(testPath) == ".js") |  | 
|  50       nodeunitFiles.push(testPath); |  | 
|  51   } |  53   } | 
|  52 } |  54 } | 
|  53 if (process.argv.length > 2) |  55 if (process.argv.length > 2) | 
|  54 { |  | 
|  55   addTestPaths(process.argv.slice(2), true); |  56   addTestPaths(process.argv.slice(2), true); | 
|  56 } |  | 
|  57 else |  57 else | 
|  58 { |  58 { | 
|  59   addTestPaths( |  59   addTestPaths( | 
|  60     [path.join(__dirname, "test"), path.join(__dirname, "test", "browser")], |  60     [path.join(__dirname, "test"), path.join(__dirname, "test", "browser")], | 
|  61     true |  61     true | 
|  62   ); |  62   ); | 
|  63 } |  63 } | 
|  64  |  64  | 
|  65 if (nodeunitFiles.length) |  65 if (browserFiles.length) | 
|  66   nodeunit.reporters.default.run(nodeunitFiles); |  66 { | 
|  67 for (let file of qunitFiles) |  67   let nodeunitPath = path.join( | 
|  68   qunit(file); |  68     path.dirname(require.resolve("nodeunit")), | 
 |  69     "examples", "browser", "nodeunit.js" | 
 |  70   ); | 
 |  71   browserFiles.unshift(nodeunitPath); | 
 |  72  | 
 |  73   let urls = browserFiles.map(file => | 
 |  74   { | 
 |  75     return url.format({ | 
 |  76       protocol: "file", | 
 |  77       slashes: "true", | 
 |  78       pathname: path.resolve(process.cwd, file).split(path.sep).join("/") | 
 |  79     }); | 
 |  80   }); | 
 |  81   let args = [path.join(__dirname, "browsertests.js")].concat(urls); | 
 |  82   childProcess.execFileSync(phantomjs.path, args, {stdio: "inherit"}); | 
 |  83 } | 
 |  84 if (unitFiles.length) | 
 |  85   nodeunit.reporters.default.run(unitFiles); | 
| OLD | NEW |