85 lines
2.6 KiB
TypeScript
85 lines
2.6 KiB
TypeScript
import { tap, expect } from '../../ts_tapbundle/index.js';
|
|
|
|
// Test skip functionality
|
|
tap.test('should skip a test with skip()', async (toolsArg) => {
|
|
toolsArg.skip('This test is skipped');
|
|
// This code should not run
|
|
expect(false).toBeTrue();
|
|
});
|
|
|
|
tap.test('should conditionally skip with skipIf()', async (toolsArg) => {
|
|
const shouldSkip = true;
|
|
toolsArg.skipIf(shouldSkip, 'Condition met, skipping');
|
|
// This code should not run
|
|
expect(false).toBeTrue();
|
|
});
|
|
|
|
tap.test('should not skip when skipIf condition is false', async (toolsArg) => {
|
|
const shouldSkip = false;
|
|
toolsArg.skipIf(shouldSkip, 'Should not skip');
|
|
// This code should run
|
|
expect(true).toBeTrue();
|
|
});
|
|
|
|
// Test todo functionality
|
|
tap.test('should mark test as todo', async (toolsArg) => {
|
|
toolsArg.todo('Not implemented yet');
|
|
// Test code that would be implemented later
|
|
expect(true).toBeTrue();
|
|
});
|
|
|
|
// Test timeout functionality
|
|
tap.test('should set custom timeout', async (toolsArg) => {
|
|
toolsArg.timeout(5000);
|
|
// Simulate a task that takes 100ms
|
|
await toolsArg.delayFor(100);
|
|
expect(true).toBeTrue();
|
|
});
|
|
|
|
// This test is expected to fail due to timeout
|
|
tap.test('should timeout when exceeding limit', async (toolsArg) => {
|
|
toolsArg.timeout(100);
|
|
// This test will timeout and be marked as failed by the test runner
|
|
await toolsArg.delayFor(2000);
|
|
// This line should not be reached due to timeout
|
|
});
|
|
|
|
tap.test('timeout should work properly', async (toolsArg) => {
|
|
toolsArg.timeout(200);
|
|
// This test should complete successfully within the timeout
|
|
await toolsArg.delayFor(50);
|
|
expect(true).toBeTrue();
|
|
});
|
|
|
|
// Test retry functionality
|
|
tap.retry(3)
|
|
.test('should retry on failure', async (toolsArg) => {
|
|
// Use retry count to determine success
|
|
const currentRetry = toolsArg.retryCount;
|
|
|
|
// Fail on first two attempts (0 and 1), succeed on third (2)
|
|
if (currentRetry < 2) {
|
|
throw new Error(`Attempt ${currentRetry + 1} failed`);
|
|
}
|
|
|
|
expect(currentRetry).toEqual(2);
|
|
});
|
|
|
|
tap.test('should expose retry count', async (toolsArg) => {
|
|
toolsArg.retry(2);
|
|
|
|
// The retry count should be available
|
|
expect(toolsArg.retryCount).toBeLessThanOrEqual(2);
|
|
expect(true).toBeTrue();
|
|
});
|
|
|
|
// Test allowFailure
|
|
tap.test('should allow failure', async (toolsArg) => {
|
|
// Just verify that allowFailure() can be called without throwing
|
|
toolsArg.allowFailure();
|
|
expect(true).toBeTrue();
|
|
// Note: In a real implementation, we would see "please note: failure allowed!"
|
|
// in the output when this test fails, but the test itself will still be marked as failed
|
|
});
|
|
|
|
tap.start(); |