mirror of
https://github.com/affaan-m/ECC.git
synced 2026-10-14 20:25:26 +02:00
47 lines
2.3 KiB
JavaScript
47 lines
2.3 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const os = require('node:os');
|
|
const path = require('node:path');
|
|
const { spawnSync } = require('node:child_process');
|
|
const { test } = require('node:test');
|
|
|
|
test('Pi generation stays byte-identical after local Python execution creates caches', t => {
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'ecc-pi-cache-'));
|
|
t.after(() => fs.rmSync(root, { recursive: true, force: true }));
|
|
const write = (relative, content) => {
|
|
const destination = path.join(root, relative);
|
|
fs.mkdirSync(path.dirname(destination), { recursive: true });
|
|
fs.writeFileSync(destination, content);
|
|
};
|
|
write('scripts/build-pi-core.js', fs.readFileSync(path.join(__dirname, '../../scripts/build-pi-core.js')));
|
|
write('VERSION', '2.2.3\n');
|
|
write('LICENSE', 'Fixture license\n');
|
|
fs.mkdirSync(path.join(root, 'commands'));
|
|
write('skills/demo/SKILL.md', '---\nname: demo\ndescription: Review local code.\n---\n\n# Demo\n');
|
|
write('skills/demo/scripts/main.py', 'print("fixture")\n');
|
|
write('manifests/pi-core.json', JSON.stringify({
|
|
profile: { dir: 'pi/core', packageName: 'ecc-pi-core', license: 'MIT', keywords: ['pi-package'] },
|
|
curationRules: { include: ['local'], exclude: [] },
|
|
skills: { include: ['demo'], exclude: {} },
|
|
commands: { include: [], exclude: {} },
|
|
safety: {},
|
|
}));
|
|
const run = (...args) => spawnSync(process.execPath, [path.join(root, 'scripts/build-pi-core.js'), ...args], {
|
|
cwd: root, encoding: 'utf8', timeout: 10000,
|
|
});
|
|
const built = run();
|
|
assert.equal(built.status, 0, built.stderr);
|
|
const profile = path.join(root, 'pi/core/skills/demo');
|
|
const original = fs.readFileSync(path.join(profile, 'scripts/main.py'));
|
|
write('skills/demo/scripts/__pycache__/main.cpython-312.pyc', Buffer.from([0, 255, 1]));
|
|
write('skills/demo/.pytest_cache/README.md', 'Derived test state\n');
|
|
write('skills/demo/scripts/main.pyo', Buffer.from([0, 1]));
|
|
write('skills/demo/scripts/main.pyd', Buffer.from([0, 2]));
|
|
const check = run('--check');
|
|
assert.equal(check.status, 0, check.stderr);
|
|
assert.deepEqual(fs.readFileSync(path.join(profile, 'scripts/main.py')), original);
|
|
assert.deepEqual(fs.readdirSync(path.join(profile, 'scripts')), ['main.py']);
|
|
});
|