| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import assert from 'assert';
- import fs from 'fs';
- import os from 'os';
- import path from 'path';
- import { buildWorkspaceFingerprint } from './src/tools/autotest-pipeline.js';
- const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'vlcode-fingerprint-'));
- const workDir = path.join(tmpRoot, 'Project');
- fs.mkdirSync(path.join(workDir, 'Apps'), { recursive: true });
- fs.mkdirSync(path.join(workDir, '.vl-code'), { recursive: true });
- const appFile = path.join(workDir, 'Apps', 'AppMain.vl');
- const metaFile = path.join(workDir, '.vl-code', 'ProjectMeta.json');
- const runFile = path.join(workDir, '.vl-code', 'autotest-results.json');
- fs.writeFileSync(appFile, 'App AppMain {}');
- fs.writeFileSync(metaFile, '{"apps":["AppMain"]}');
- fs.writeFileSync(runFile, '{"runResults":[]}');
- const projectContext = {
- getAllFiles() {
- return [
- { path: 'Apps/AppMain.vl', fullPath: appFile, isVL: true },
- { path: '.vl-code/ProjectMeta.json', fullPath: metaFile, isVL: false },
- { path: '.vl-code/autotest-results.json', fullPath: runFile, isVL: false },
- ];
- },
- };
- const before = buildWorkspaceFingerprint(projectContext);
- fs.writeFileSync(runFile, '{"runResults":[{"id":"case-1"}]}');
- const afterVolatile = buildWorkspaceFingerprint(projectContext);
- assert.strictEqual(afterVolatile, before, 'volatile autotest outputs should not affect fingerprint');
- fs.writeFileSync(appFile, 'App AppMain { Text "changed" }');
- const afterSourceChange = buildWorkspaceFingerprint(projectContext);
- assert.notStrictEqual(afterSourceChange, before, 'source changes must affect fingerprint');
- console.log('PASS test-autotest-workspace-fingerprint');
|