Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
3c535a8a77 | |||
0954265095 | |||
e1d90589bc | |||
33f705d961 |
15
changelog.md
15
changelog.md
@ -1,5 +1,20 @@
|
||||
# Changelog
|
||||
|
||||
## 2025-05-24 - 1.11.4 - fix(logging)
|
||||
Improve warning logging and add permission settings file
|
||||
|
||||
- Replace multiple logger.error calls with logger.warning for tests running over 1 minute
|
||||
- Add warning method in tstest logger to display warning messages consistently
|
||||
- Introduce .claude/settings.local.json to configure allowed permissions
|
||||
|
||||
## 2025-05-24 - 1.11.3 - fix(tstest)
|
||||
Add timeout warning for long-running tests and introduce local settings configuration
|
||||
|
||||
- Add .claude/settings.local.json with permission configuration for local development
|
||||
- Implement a timeout warning timer that notifies when tests run longer than 1 minute without an explicit timeout
|
||||
- Clear the timeout warning timer upon test completion
|
||||
- Remove unused import of logPrefixes in tstest.classes.tstest.ts
|
||||
|
||||
## 2025-05-24 - 1.11.2 - fix(tstest)
|
||||
Improve timeout and error handling in test execution along with TAP parser timeout logic improvements.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@git.zone/tstest",
|
||||
"version": "1.11.2",
|
||||
"version": "1.11.4",
|
||||
"private": false,
|
||||
"description": "a test utility to run tests that match test/**/*.ts",
|
||||
"exports": {
|
||||
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@git.zone/tstest',
|
||||
version: '1.11.2',
|
||||
version: '1.11.4',
|
||||
description: 'a test utility to run tests that match test/**/*.ts'
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
import * as plugins from './tstest.plugins.js';
|
||||
import * as paths from './tstest.paths.js';
|
||||
import * as logPrefixes from './tstest.logprefixes.js';
|
||||
|
||||
import { coloredString as cs } from '@push.rocks/consolecolor';
|
||||
|
||||
@ -19,6 +18,7 @@ export class TsTest {
|
||||
public startFromFile: number | null;
|
||||
public stopAtFile: number | null;
|
||||
public timeoutSeconds: number | null;
|
||||
private timeoutWarningTimer: NodeJS.Timeout | null = null;
|
||||
|
||||
public smartshellInstance = new plugins.smartshell.Smartshell({
|
||||
executor: 'bash',
|
||||
@ -45,6 +45,15 @@ export class TsTest {
|
||||
await this.movePreviousLogFiles();
|
||||
}
|
||||
|
||||
// Start timeout warning timer if no timeout was specified
|
||||
if (this.timeoutSeconds === null) {
|
||||
this.timeoutWarningTimer = setTimeout(() => {
|
||||
this.logger.warning('Test is running for more than 1 minute.');
|
||||
this.logger.warning('Consider using --timeout option to set a timeout for test files.');
|
||||
this.logger.warning('Example: tstest test --timeout=300 (for 5 minutes)');
|
||||
}, 60000); // 1 minute
|
||||
}
|
||||
|
||||
const testGroups = await this.testDir.getTestFileGroups();
|
||||
const allFiles = [...testGroups.serial, ...Object.values(testGroups.parallelGroups).flat()];
|
||||
|
||||
@ -83,6 +92,12 @@ export class TsTest {
|
||||
}
|
||||
}
|
||||
|
||||
// Clear the timeout warning timer if it was set
|
||||
if (this.timeoutWarningTimer) {
|
||||
clearTimeout(this.timeoutWarningTimer);
|
||||
this.timeoutWarningTimer = null;
|
||||
}
|
||||
|
||||
tapCombinator.evaluate();
|
||||
}
|
||||
|
||||
@ -303,7 +318,6 @@ export class TsTest {
|
||||
);
|
||||
|
||||
// Handle timeout if specified
|
||||
let hasTimedOut = false;
|
||||
if (this.timeoutSeconds !== null) {
|
||||
const timeoutMs = this.timeoutSeconds * 1000;
|
||||
let timeoutId: NodeJS.Timeout;
|
||||
@ -323,7 +337,6 @@ export class TsTest {
|
||||
clearTimeout(timeoutId);
|
||||
} catch (error) {
|
||||
// Handle timeout error
|
||||
hasTimedOut = true;
|
||||
tapParser.handleTimeout(this.timeoutSeconds);
|
||||
}
|
||||
} else {
|
||||
|
@ -443,6 +443,20 @@ export class TsTestLogger {
|
||||
this.log(this.format(`\n${status}`, statusColor));
|
||||
}
|
||||
|
||||
// Warning display
|
||||
warning(message: string) {
|
||||
if (this.options.json) {
|
||||
this.logJson({ event: 'warning', message });
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.options.quiet) {
|
||||
console.log(`WARNING: ${message}`);
|
||||
} else {
|
||||
this.log(this.format(` ⚠️ ${message}`, 'orange'));
|
||||
}
|
||||
}
|
||||
|
||||
// Error display
|
||||
error(message: string, file?: string, stack?: string) {
|
||||
if (this.options.json) {
|
||||
|
Reference in New Issue
Block a user