Current File : /home/tradevaly/www/node_modules/qunit/src/cli/utils.js |
"use strict";
const fs = require( "fs" );
const path = require( "path" );
const glob = require( "tiny-glob/sync" );
function existsStat() {
try {
return fs.statSync.apply( fs, arguments );
} catch ( e ) {
return null;
}
}
function getIgnoreList( baseDir ) {
const gitFilePath = path.join( baseDir, ".gitignore" );
if ( fs.existsSync( gitFilePath ) ) {
const gitIgnore = fs.readFileSync( gitFilePath, "utf8" );
return gitIgnore.trim().split( "\n" );
}
return [];
}
function getFilesFromArgs( args ) {
const patterns = args.slice();
// Default to files in the test directory
if ( !patterns.length ) {
// TODO: In QUnit 3.0, change the default to {js,mjs}
patterns.push( "test/**/*.js" );
}
const files = new Set();
// For each of the potential globs, we check if it is a directory path and
// update it so that it matches the JS files in that directory.
patterns.forEach( pattern => {
const stat = existsStat( pattern );
if ( stat && stat.isFile() ) {
// Optimisation:
// For non-glob simple files, skip (slow) directory-wide scanning.
// https://github.com/qunitjs/qunit/pull/1385
files.add( pattern );
} else {
if ( stat && stat.isDirectory() ) {
// TODO: In QUnit 3.0, change the default to {js,mjs}
pattern = `${pattern}/**/*.js`;
}
const results = glob( pattern, {
cwd: process.cwd(),
filesOnly: true,
flush: true
} );
for ( const result of results ) {
files.add( result );
}
}
} );
if ( !files.size ) {
error( "No files were found matching: " + args.join( ", " ) );
}
return Array.from( files ).sort();
}
function error( message ) {
console.error( message );
process.exit( 1 );
}
function capitalize( string ) {
return string.charAt( 0 ).toUpperCase() + string.slice( 1 );
}
module.exports = {
capitalize,
error,
getFilesFromArgs,
getIgnoreList
};