← 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');