ammend tests

This commit is contained in:
2025-06-06 09:22:56 -05:00
parent 29aa25e866
commit d0138a6c23
7 changed files with 25 additions and 116 deletions

View File

@@ -1,114 +1,29 @@
// Test runner - runs test suites in parallel and reports results
var parseq = use("parseq");
var time = use("time");
var def = arg
// Get test names from command line arguments
var tests = arg || [];
if (arg.length === 0)
arg = [
'send',
'stop',
'blob',
'clock',
'couple',
'disrupt',
'empty', // this one should be an error
'text',
'http',
'use',
'parseq'
]
// Track overall results
var totalPassed = 0;
var totalFailed = 0;
var totalTests = 0;
var allFailures = [];
var startTime = time.number();
// Create a requestor for each test
function run_test_requestor(testName) {
return function (cb, val) {
// Start the test actor
$_.start(function (greet) {
log.console('senging start to ' + json.encode(greet))
// Send run_tests message
send(greet.actor, {
type: 'run_tests',
test_name: testName
}, function (result) {
// Handle test results
if (result && result.type === 'test_results') {
cb(result);
} else {
cb(null, "Test " + testName + " did not return valid results");
}
});
}, "tests/" + testName, $_);
};
}
// Build array of requestors
var requestors = tests.map(function (t) {
return run_test_requestor(t);
});
// Run tests in parallel
if (requestors.length === 0) {
log.error("No tests specified. Usage: cell test <test1> <test2> ...");
quit(1);
}
var concurrency = 5;
var all_tests_job = parseq.par_all(requestors, undefined, concurrency);
// Handle results
all_tests_job(function (results, reason) {
if (!results) {
log.error("\n❌ Test suite failed:", reason);
quit(1);
return;
}
// Aggregate results
log.console("\n" + "=".repeat(60));
log.console("TEST RESULTS");
log.console("=".repeat(60));
for (var i = 0; i < tests.length; i++) {
var result = results[i];
var testName = tests[i];
for (var test of def)
$_.start(e => {
if (result && result.type === 'test_results') {
totalPassed += result.passed;
totalFailed += result.failed;
totalTests += result.total;
var status = result.failed === 0 ? "✅ PASSED" : "❌ FAILED";
log.console("\n" + testName + ": " + status);
log.console(" Passed: " + result.passed + "/" + result.total);
if (result.failures && result.failures.length > 0) {
log.console(" Failures:");
for (var j = 0; j < result.failures.length; j++) {
var failure = result.failures[j];
allFailures.push({test: testName, failure: failure});
log.console(" - " + failure.name);
if (failure.error) {
log.console(" " + failure.error.split("\n").join("\n "));
}
}
}
if (result.duration) {
log.console(" Duration: " + result.duration + "ms");
}
}
}
}, 'tests/' + test, $_)
// Summary
var elapsed = time.now() - startTime;
log.console("\n" + "=".repeat(60));
log.console("SUMMARY");
log.console("=".repeat(60));
log.console("Total: " + totalPassed + "/" + totalTests + " tests passed");
log.console("Failed: " + totalFailed + " tests");
log.console("Time: " + elapsed + "ms");
log.console("=".repeat(60) + "\n");
// Exit with appropriate code
quit(totalFailed === 0 ? 0 : 1);
});
$_.delay($_.stop, 1)
// Timeout protection
$_.delay(function() {
log.error("\n⏰ TEST TIMEOUT: Tests did not complete within 30 seconds");
quit(1);
}, 30);
$_.receiver(e => {
log.console(json.encode(e))
})

View File

@@ -1,3 +0,0 @@
log.console(arg)
$_.stop()

View File

@@ -6,6 +6,8 @@ try {
log.console(b2.length)
var text2 = text(b2)
log.console(text(b2))
$_.stop()
send(arg[0], {test:'http', result:'pass'})
} catch (e) {
log.console("dictionary error:", e)
}

View File

@@ -1,2 +0,0 @@
this.spawn()
log.console("SPAWNED")

View File

@@ -1 +0,0 @@
log.console("im alive")

View File

@@ -1,2 +0,0 @@
for (var i = 0; i < 10; i++)
$_.start(_ => {}, "spawnee")

View File

@@ -1,2 +1,2 @@
$_.delay($_.stop, 0.1)
log.console(`About to stop.`)
$_.stop()