mocha-list-tests
Advanced tools
Comparing version 1.0.3 to 1.0.4
@@ -84,3 +84,5 @@ // ----------------------------------------------------------------------------- | ||
let testRoute = []; | ||
const directoryPrefix = new RegExp(`^${process.cwd()}/`); | ||
const directoryPrefix = process.cwd() + path.sep; | ||
// ----------------------------------------------------------------------------- | ||
@@ -93,9 +95,20 @@ // addTestRouteToTree | ||
function addTestRouteToTree (testRoute, name) { | ||
const stackTrace = { name: 'Stacktrace' }; | ||
Error.captureStackTrace(stackTrace, addTestRouteToTree); | ||
const frames = stackTrace.stack.split('\n'); | ||
const line = frames[2]; | ||
const matches = line.match(/^(?:.*\((.*):\d+\)|.* at (\/.*?):\d+)$/); | ||
const filenameAndLine = (matches[1] || matches[2]).replace(directoryPrefix, ''); | ||
let fileNameAndLine = 'unknown:0'; | ||
try { | ||
const stackTrace = { name: 'Stacktrace' }; | ||
Error.captureStackTrace(stackTrace, addTestRouteToTree); | ||
const frames = stackTrace.stack.split('\n'); | ||
const line = frames[2].replace('file://', ''); | ||
// at Object.<anonymous> (file:///home/whatever/github/mocha-list-tests/test/example.mjs:56:12) | ||
// at file:///home/whatever/github/mocha-list-tests/test/example.mjs:51:1 | ||
const matches = line.match(/^(?:.*\((.*):\d+\)|.*\s+at\s+(\/.*?):\d+)$/); | ||
if (matches) | ||
fileNameAndLine = (matches[1] || matches[2]).replace(directoryPrefix, ''); | ||
} | ||
catch(e) { | ||
// ignore unknown errors | ||
} | ||
let newTestRoute = testRoute.slice(0); // clone | ||
@@ -112,3 +125,3 @@ newTestRoute.push (name); | ||
if ((i + 1) == newTestRoute.length) | ||
root[current] = filenameAndLine; | ||
root[current] = fileNameAndLine; | ||
else | ||
@@ -184,3 +197,3 @@ root[current] = {}; | ||
// ----------------------------------------------------------------------------- | ||
function findSuitesAndTests (testFolder, extensions) { | ||
async function findSuitesAndTests (testFolder, extensions) { | ||
if (typeof (extensions) === "string") | ||
@@ -207,8 +220,12 @@ extensions = [extensions]; | ||
for (let i = 0; i < allTestFiles.length; i++) { | ||
const file = allTestFiles[i]; | ||
let file = allTestFiles[i]; | ||
if (path.isAbsolute (file)) | ||
if (!path.isAbsolute (file)) | ||
file = './' + path.relative (__dirname, file); | ||
// load ES6 modules with import and everything else with require | ||
if (/\.mjs$/i.test(file)) | ||
await import(file); | ||
else | ||
require (file); | ||
else | ||
require ('./' + path.relative (__dirname, file)); | ||
} | ||
@@ -228,3 +245,3 @@ | ||
// ----------------------------------------------------------------------------- | ||
function main () { | ||
async function main () { | ||
if ( | ||
@@ -242,3 +259,3 @@ (process.argv.length <= 2) | ||
const result = findSuitesAndTests (testFolder, 'js'); | ||
const result = await findSuitesAndTests (testFolder, 'js'); | ||
console.log (JSON.stringify (result, null, ' ')); | ||
@@ -253,10 +270,11 @@ | ||
if (require.main === module) { | ||
try { | ||
process.exit (main()); | ||
} | ||
catch (e) { | ||
main() | ||
.then(function(result) { | ||
process.exit (result); | ||
}) | ||
.catch(function(e) { | ||
console.error ("Fatal Error (try --help for help):"); | ||
console.error (e); | ||
process.exit (-1); | ||
} | ||
}); | ||
} | ||
@@ -263,0 +281,0 @@ |
{ | ||
"name": "mocha-list-tests", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "List mocha suites and tests without running anything", | ||
@@ -19,3 +19,6 @@ "main": "mocha-list-tests.js", | ||
"author": "Pau Sanchez", | ||
"license": "MIT" | ||
"license": "MIT", | ||
"engines" : { | ||
"node" : ">=7.6" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
15253
7
343
3