Files
playbook/antigravity-awesome-skills/tools/scripts/tests/glossary_validation.test.js
T
2026-07-10 16:04:20 +00:00

35 lines
1.3 KiB
JavaScript

const assert = require('assert');
const fs = require('fs');
const os = require('os');
const path = require('path');
const { spawnSync } = require('child_process');
const root = path.resolve(__dirname, '..', '..', '..');
const script = path.join(root, 'scripts', 'validate-glossary.sh');
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'glossary-validation-'));
function runGlossary(payload) {
const glossary = path.join(tempDir, 'glossary.json');
const report = path.join(tempDir, 'report.txt');
fs.writeFileSync(glossary, JSON.stringify(payload), 'utf8');
return spawnSync('bash', [script], {
cwd: root,
encoding: 'utf8',
env: { ...process.env, GLOSSARY_FILE: glossary, GLOSSARY_OUTPUT_FILE: report },
});
}
const valid = runGlossary({
metadata: { version: '1', created: '2026-01-01', last_updated: '2026-01-01', total_terms: 1 },
terms: { skill: { translation: '技能' } },
});
assert.strictEqual(valid.status, 0, valid.stderr || valid.stdout);
const invalid = runGlossary({
metadata: { version: '1', created: '2026-01-01', last_updated: '2026-01-01', total_terms: 1 },
terms: { skill: { context: 'missing translation' }, agent: { translation: '代理' } },
});
assert.strictEqual(invalid.status, 1, invalid.stderr || invalid.stdout);
fs.rmSync(tempDir, { recursive: true, force: true });