Files
Aislo/resources/tester/test_est_native_signature.py
T

23 lines
1.2 KiB
Python

import json
import subprocess
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[2]
def test_estx_rejects_corrupted_last_engine_signature_byte_when_sample_exists():
sample = Path("C:/Dasansoft/Est Plus 2/Data/ProjectData/main.estx")
if not sample.exists():
pytest.skip("installed EST sample unavailable")
script = r"""const fs=require('fs'),m=require('./tools/est-test/import-estx.cjs'),a=require('./tools/est-test/archive.cjs');
const bytes=fs.readFileSync(process.argv[1]),files=m.unzip(bytes),table=files.get('estmaindat.dat');
const valid=m.importEstx(bytes).tables.EstMainDat.length;table[24]^=1;let rejected=false;
try{m.importEstx(a.pack(files))}catch(e){rejected=e.message.includes('DBISAM')}
table[24]^=1;files.get('stuffcdat.dat')[9]^=1;let missingRejected=false;
try{m.importEstx(a.pack(files))}catch(e){missingRejected=e.message.includes('stuffcdat.dat')}
process.stdout.write(JSON.stringify({valid:valid>0,rejected,missingRejected}));"""
result = json.loads(subprocess.check_output(["node", "-e", script, str(sample)], cwd=ROOT))
assert result == {"valid": True, "rejected": True, "missingRejected": True}