← back to Sample Followup Sweep
test/sendable-callsite-coverage.test.js
38 lines
'use strict';
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const root = path.join(__dirname, '..');
const allowedTransport = path.join(root, 'lib', 'george-transport.js');
const files = [];
function walk(dir) {
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
if (['.git', 'node_modules', 'out', 'verification'].includes(entry.name)) continue;
const full = path.join(dir, entry.name);
if (entry.isDirectory()) walk(full);
else if (/\.(?:js|mjs|cjs)$/.test(entry.name) && !full.startsWith(path.join(root, 'test'))) files.push(full);
}
}
walk(root);
const directGeorgeCalls = [];
for (const file of files) {
if (file === allowedTransport) continue;
const source = fs.readFileSync(file, 'utf8');
if (/http\.request\([\s\S]{0,500}?path\s*:\s*['"]\/api\/(?:send|drafts)['"]/.test(source)) directGeorgeCalls.push(path.relative(root, file));
}
assert.deepEqual(directGeorgeCalls, [], `sendable George calls must route through lib/george-transport.js: ${directGeorgeCalls.join(', ')}`);
const artifactWriters = files.filter((file) => {
const source = fs.readFileSync(file, 'utf8');
const names = ["'all-drafts.json'", '"all-drafts.json"', "'send-queue.json'", '"send-queue.json"', '`${slug}.draft.json`'];
return [...source.matchAll(/writeFileSync\(([\s\S]{0,300})/g)].some((match) => names.some((name) => match[1].includes(name)));
});
for (const file of artifactWriters) {
assert.match(fs.readFileSync(file, 'utf8'), /createGmailDraftArtifact\s*\(/, `${path.relative(root, file)} must gate sendable draft artifacts`);
}
assert.ok(artifactWriters.length > 0, 'coverage test must find at least one sendable artifact writer');
console.log('repository sendable call-site coverage: PASS');