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
};