[tests] Compare state files as well

This commit is contained in:
Mario Zechner 2025-07-25 17:12:51 +02:00
parent 71949ec2a0
commit 3d244f308e

View File

@ -533,17 +533,17 @@ function runTestsForFiles (language: string, skeletonPath: string, atlasPath: st
saveJsonFiles(testArgs, targetParsed, javaParsed, fixFloats); saveJsonFiles(testArgs, targetParsed, javaParsed, fixFloats);
} }
function verifyOutputsMatch (): void { function verifyOutputsMatch (targetLanguage: string): void {
const outputDir = join(SPINE_ROOT, 'tests', 'output'); const outputDir = join(SPINE_ROOT, 'tests', 'output');
const outputFiles = [ const outputFiles = [
'skeleton-data-java-json.json', `skeleton-data-java-json.json`,
'skeleton-data-cpp-json.json', `skeleton-data-${targetLanguage}-json.json`,
'skeleton-state-java-json.json', `skeleton-state-java-json.json`,
'skeleton-state-cpp-json.json', `skeleton-state-${targetLanguage}-json.json`,
'skeleton-data-java-skel.json', `skeleton-data-java-skel.json`,
'skeleton-data-cpp-skel.json', `skeleton-data-${targetLanguage}-skel.json`,
'skeleton-state-java-skel.json', `skeleton-state-java-skel.json`,
'skeleton-state-cpp-skel.json' `skeleton-state-${targetLanguage}-skel.json`
]; ];
// Check if all files exist // Check if all files exist
@ -553,28 +553,29 @@ function verifyOutputsMatch (): void {
return; return;
} }
log_action('Verifying Java and C++ outputs match'); log_action(`Verifying Java and ${targetLanguage} outputs match`);
const comparisons = [ const comparisons = [
['skeleton-data-java-json.json', 'skeleton-data-cpp-json.json'] [`skeleton-data-java-json.json`, `skeleton-data-${targetLanguage}-json.json`],
// TODO: Add binary file comparison once C++ binary parsing is fixed [`skeleton-state-java-json.json`, `skeleton-state-${targetLanguage}-json.json`],
// ['skeleton-data-java-skel.json', 'skeleton-data-cpp-skel.json'] [`skeleton-data-java-skel.json`, `skeleton-data-${targetLanguage}-skel.json`],
[`skeleton-state-java-skel.json`, `skeleton-state-${targetLanguage}-skel.json`]
]; ];
let allMatch = true; let allMatch = true;
for (const [javaFile, cppFile] of comparisons) { for (const [javaFile, targetFile] of comparisons) {
try { try {
const javaContent = execSync(`cat "${join(outputDir, javaFile)}"`, { encoding: 'utf8' }); const javaContent = execSync(`cat "${join(outputDir, javaFile)}"`, { encoding: 'utf8' });
const cppContent = execSync(`cat "${join(outputDir, cppFile)}"`, { encoding: 'utf8' }); const targetContent = execSync(`cat "${join(outputDir, targetFile)}"`, { encoding: 'utf8' });
if (javaContent !== cppContent) { if (javaContent !== targetContent) {
allMatch = false; allMatch = false;
console.error(`\n❌ Files differ: ${javaFile} vs ${cppFile}`); console.error(`\n❌ Files differ: ${javaFile} vs ${targetFile}`);
} }
} catch (error: any) { } catch (error: any) {
allMatch = false; allMatch = false;
console.error(`\n❌ Error comparing ${javaFile} vs ${cppFile}: ${error.message}`); console.error(`\n❌ Error comparing ${javaFile} vs ${targetFile}: ${error.message}`);
} }
} }
@ -582,7 +583,7 @@ function verifyOutputsMatch (): void {
log_ok(); log_ok();
} else { } else {
log_fail(); log_fail();
console.error('\n❌ Java and C++ outputs do not match'); console.error(`\n❌ Java and ${targetLanguage} outputs do not match`);
process.exit(1); process.exit(1);
} }
} }
@ -616,10 +617,8 @@ function main (): void {
log_detail(`JSON files saved to: ${join(SPINE_ROOT, 'tests', 'output')}`); log_detail(`JSON files saved to: ${join(SPINE_ROOT, 'tests', 'output')}`);
} }
// Verify outputs match if we're testing C++ // Verify outputs match
if (args.language === 'cpp') { verifyOutputsMatch(args.language);
verifyOutputsMatch();
}
} }
if (import.meta.url === `file://${process.argv[1]}`) { if (import.meta.url === `file://${process.argv[1]}`) {