Files
SnapOtter/tests/unit/infra/image-decoder-dependencies.test.ts
T
SnapOtterandGitHub 991c981529 fix: make OCR portable and reliable across AMD64 and ARM64 (#519)
* fix: make OCR portable and reliable

* fix: harden OCR installation portability

* fix: pin OCR partials across downloads

* fix: make OCR execution reliably asynchronous

* fix: harden OCR portability and docs routes

* fix: preserve decoder and docs safeguards
2026-07-15 03:34:24 +08:00

38 lines
1.5 KiB
TypeScript

import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { describe, expect, it } from "vitest";
const root = process.cwd();
function read(path: string): string {
return readFileSync(resolve(root, path), "utf8");
}
function workflowJob(workflow: string, name: string, nextName: string): string {
const start = workflow.indexOf(` ${name}:\n`);
const end = workflow.indexOf(` ${nextName}:\n`, start + name.length + 3);
expect(start, `${name} should exist in ci.yml`).toBeGreaterThanOrEqual(0);
expect(end, `${nextName} should follow ${name} in ci.yml`).toBeGreaterThan(start);
return workflow.slice(start, end);
}
function expectImageMagickExtraCoders(source: string): void {
expect(source).toContain("libmagickcore-6.q16-7-extra");
expect(source).toContain("libmagickcore-6.q16-6-extra");
expect(source).toContain("No supported ImageMagick EXR coder package found");
expect(source).toContain("convert -list format");
}
describe("cross-platform image decoder dependencies", () => {
it("installs EXR-capable ImageMagick coders in unit and integration CI", () => {
const workflow = read(".github/workflows/ci.yml");
expectImageMagickExtraCoders(workflowJob(workflow, "test-unit", "test-integration"));
expectImageMagickExtraCoders(workflowJob(workflow, "test-integration", "test-e2e-smoke"));
});
it("installs the same coders in production and test containers", () => {
expectImageMagickExtraCoders(read("docker/Dockerfile"));
expectImageMagickExtraCoders(read("docker/Dockerfile.test"));
});
});