v0.7.0 — Real-shape STEP integration tests
Real-shape STEP integration tests. The end-to-end pipeline (CADFileLoader.load → InteractiveContext.display → synthetic PickResult → Selection) now runs against actual machined-part geometry, not just OCCT primitives.
New
Tests/OCCTSwiftAISTests/Fixtures/— three small (~16 KB) committed stock STEP files. Wired throughPackage.swiftviaresources: [.copy("Fixtures")]and accessed viaBundle.module.url(forResource:withExtension:subdirectory:).STEPIntegrationTests.swiftadds two suites:- Stock suite (
.serialized,@MainActor): 7 parametrised tests × 3 fixtures = 21 cases covering load, six-face / twelve-edge / eight-vertex topology, non-degenerate bounds, mesh tessellation, edge / vertex pick buffer population, face + vertex pick round-trips, linear dimension across opposite parallel faces matching a bbox extent,remappreserving identical topology. - WIP suite (
.serialized, skip-on-missing): same shape on multi-MB machined-part WIP files intest_files/(gitignored). Silently passes when the files are absent — CI without them stays green; devs with them get extended coverage.
- Stock suite (
.gitignoreexcludestest_files/so the committed fixtures stay small (~48 KB total).
Notes
.serialized is required on both suites — the OCCT NCollection arm64 race triggers SIGSEGV under Swift Testing's intra-process parallelism even with --num-workers 1 (which controls processes, not in-process tasks). Existing AIS test suites that don't touch real STEP geometry don't need it; only suites that go through CADFileLoader do.
Tests
155 across 14 suites, all green. Stock suite is sub-second; WIP suite ~15 s on three multi-MB files (when present locally).
Dependencies
Unchanged from v0.6.3.