feat(cli): Add --version option and warn against global tstest usage in the tstest project
This commit is contained in:
parent
3d85f54be0
commit
82fc22653b
@ -1,5 +1,12 @@
|
||||
# Changelog
|
||||
|
||||
## 2025-05-26 - 2.3.0 - feat(cli)
|
||||
Add '--version' option and warn against global tstest usage in the tstest project
|
||||
|
||||
- Introduced a new '--version' CLI flag that prints the version from package.json
|
||||
- Added logic in ts/index.ts to detect if tstest is run globally within its own project and issue a warning
|
||||
- Added .claude/settings.local.json to configure allowed permissions for various commands
|
||||
|
||||
## 2025-05-26 - 2.2.6 - fix(tstest)
|
||||
Improve timeout warning timer management and summary output formatting in the test runner.
|
||||
|
||||
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@git.zone/tstest',
|
||||
version: '2.2.6',
|
||||
version: '2.3.0',
|
||||
description: 'a test utility to run tests that match test/**/*.ts'
|
||||
}
|
||||
|
47
ts/index.ts
47
ts/index.ts
@ -8,6 +8,40 @@ export enum TestExecutionMode {
|
||||
}
|
||||
|
||||
export const runCli = async () => {
|
||||
// Check if we're using global tstest in the tstest project itself
|
||||
try {
|
||||
const packageJsonPath = `${process.cwd()}/package.json`;
|
||||
const fs = await import('fs');
|
||||
if (fs.existsSync(packageJsonPath)) {
|
||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||
if (packageJson.name === '@git.zone/tstest') {
|
||||
// Check if we're running from a global installation
|
||||
const execPath = process.argv[1];
|
||||
// Debug: log the paths (uncomment for debugging)
|
||||
// console.log('DEBUG: Checking global tstest usage...');
|
||||
// console.log('execPath:', execPath);
|
||||
// console.log('cwd:', process.cwd());
|
||||
// console.log('process.argv:', process.argv);
|
||||
|
||||
// Check if this is running from global installation
|
||||
const isLocalCli = execPath.includes(process.cwd());
|
||||
const isGlobalPnpm = process.argv.some(arg => arg.includes('.pnpm') && !arg.includes(process.cwd()));
|
||||
const isGlobalNpm = process.argv.some(arg => arg.includes('npm/node_modules') && !arg.includes(process.cwd()));
|
||||
|
||||
if (!isLocalCli && (isGlobalPnpm || isGlobalNpm || !execPath.includes('node_modules'))) {
|
||||
console.error('\n⚠️ WARNING: You are using a globally installed tstest in the tstest project itself!');
|
||||
console.error(' This means you are NOT testing your local changes.');
|
||||
console.error(' Please use one of these commands instead:');
|
||||
console.error(' • node cli.js <test-path>');
|
||||
console.error(' • pnpm test <test-path>');
|
||||
console.error(' • ./cli.js <test-path> (if executable)\n');
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
// Silently ignore any errors in this check
|
||||
}
|
||||
|
||||
// Parse command line arguments
|
||||
const args = process.argv.slice(2);
|
||||
const logOptions: LogOptions = {};
|
||||
@ -24,6 +58,18 @@ export const runCli = async () => {
|
||||
const arg = args[i];
|
||||
|
||||
switch (arg) {
|
||||
case '--version':
|
||||
// Get version from package.json
|
||||
try {
|
||||
const fs = await import('fs');
|
||||
const packagePath = new URL('../package.json', import.meta.url).pathname;
|
||||
const packageData = JSON.parse(await fs.promises.readFile(packagePath, 'utf8'));
|
||||
console.log(`tstest version ${packageData.version}`);
|
||||
} catch (error) {
|
||||
console.log('tstest version unknown');
|
||||
}
|
||||
process.exit(0);
|
||||
break;
|
||||
case '--quiet':
|
||||
case '-q':
|
||||
logOptions.quiet = true;
|
||||
@ -115,6 +161,7 @@ export const runCli = async () => {
|
||||
console.error('You must specify a test directory/file/pattern as argument. Please try again.');
|
||||
console.error('\nUsage: tstest <path> [options]');
|
||||
console.error('\nOptions:');
|
||||
console.error(' --version Show version information');
|
||||
console.error(' --quiet, -q Minimal output');
|
||||
console.error(' --verbose, -v Verbose output');
|
||||
console.error(' --no-color Disable colored output');
|
||||
|
Loading…
x
Reference in New Issue
Block a user