@@ -271,7 +271,7 @@ python3 tools/amifuse_matrix.py \
271271
272272Then compare the results with:
273273
274- [ PERFORMANCE.md] ( /Users/stepan/git/AmiFuse-codex/ PERFORMANCE.md)
274+ [ PERFORMANCE.md] ( PERFORMANCE.md )
275275
276276Important interpretation rules:
277277
@@ -293,7 +293,7 @@ the matrix is the main current performance harness.
293293
294294The ` amitools ` submodule has its own test tree and README:
295295
296- [ amitools/test/README.md] ( /Users/stepan/git/AmiFuse-codex/ amitools/test/README.md)
296+ [ amitools/test/README.md] ( amitools/test/README.md )
297297
298298The important buckets there are:
299299
@@ -341,6 +341,85 @@ In practice:
341341- ` readme smoke ` catches CLI and docs drift
342342- ` amitools ` tests catch lower-level runtime semantics
343343
344+ ## Pytest Test Suite
345+
346+ The repo has a structured pytest test suite alongside the legacy tools/
347+ scripts. Tests are organized into two layers:
348+
349+ | Layer | Location | Marker | Requires |
350+ | -------| ----------| --------| ----------|
351+ | Unit | ` tests/unit/ ` | _ (none)_ | Python + amifuse installed |
352+ | Integration | ` tests/integration/ ` | ` integration ` | machine68k + external fixtures |
353+
354+ ### Quick Start
355+
356+ ``` sh
357+ # Unit tests (all platforms, no external dependencies)
358+ pytest tests/unit/ -v --timeout=30
359+
360+ # Integration tests (Linux/macOS, needs fixtures)
361+ pytest tests/integration/ -v --timeout=60
362+
363+ # All tests
364+ pytest tests/ -v --timeout=60
365+ ```
366+
367+ ### Fixture Resolution
368+
369+ Integration tests need handler binaries and disk images. They resolve
370+ the fixture directory through a cascade:
371+
372+ 1 . ` AMIFUSE_FIXTURE_ROOT ` env var — point this at any directory containing
373+ ` drivers/ ` (handler binaries) and ` fixtures/readonly/ ` (disk images)
374+ 2 . ` ../AmiFUSE-testing ` sibling directory (relative to repo root)
375+ 3 . ` ~/AmigaOS/AmiFuse ` (default local path)
376+ 4 . ` None ` → tests skip gracefully with a clear message
377+
378+ The fixture directory must contain at minimum:
379+
380+ ```
381+ <fixture-root>/
382+ ├── drivers/
383+ │ ├── pfs3aio # PFS3 handler binary
384+ │ └── FastFileSystem # FFS/OFS handler binary
385+ └── fixtures/
386+ └── readonly/
387+ ├── pfs.hdf # PFS3 hard drive image
388+ └── ofs.adf # OFS floppy image
389+ ```
390+
391+ Set the env var to point at your fixture directory:
392+
393+ ``` sh
394+ export AMIFUSE_FIXTURE_ROOT=/path/to/your/fixtures
395+ pytest tests/integration/ -v
396+ ```
397+
398+ ### Markers
399+
400+ | Marker | Meaning |
401+ | --------| ---------|
402+ | ` slow ` | Slow tests (deselect with ` -m "not slow" ` ) |
403+ | ` fuse ` | Requires FUSE/WinFSP kernel driver |
404+ | ` integration ` | Requires external fixtures and machine68k |
405+ | ` windows ` / ` macos ` / ` linux ` | Platform-specific tests |
406+
407+ ### CI (GitHub Actions)
408+
409+ The CI workflow (` .github/workflows/ci.yml ` ) runs three jobs:
410+
411+ | Job | Platforms | Python | What |
412+ | -----| -----------| --------| ------|
413+ | ` unit-tests ` | Linux, macOS, Windows | 3.11, 3.12, 3.13 | ` pytest tests/unit/ ` |
414+ | ` integration-tests ` | Linux, macOS | 3.13 | ` pytest tests/integration/ ` with external fixtures |
415+ | ` tools-smoke ` | Linux, macOS | 3.13 | ` amifuse_matrix.py ` + ` image_format_smoke.py ` |
416+
417+ Windows is excluded from integration and tools-smoke because machine68k
418+ segfaults on Windows due to opcode table over-read
419+ ([ cnvogelg/machine68k #8 ] ( https://github.com/cnvogelg/machine68k/issues/8 ) )
420+ and JMP/CAS collision
421+ ([ cnvogelg/machine68k #9 ] ( https://github.com/cnvogelg/machine68k/issues/9 ) ).
422+
344423## Current Gaps
345424
346425The following are still planned, not fully documented as standalone test
@@ -349,4 +428,8 @@ entry points yet:
349428- far-end file I/O coverage inside a filesystem that spans a partition
350429 larger than ` 4GiB `
351430- fuller long-run generated benchmark recipes
352- - fixture-layout cleanup for ` ~/AmigaOS/AmiFuse/ `
431+ - ~~ fixture-layout cleanup for ` ~/AmigaOS/AmiFuse/ ` ~~ (resolved:
432+ ` AMIFUSE_FIXTURE_ROOT ` env var + fixture cascade in ` tests/fixtures/paths.py ` )
433+ - Windows integration tests pending machine68k upstream fixes
434+ ([ cnvogelg/machine68k #8 ] ( https://github.com/cnvogelg/machine68k/issues/8 ) ,
435+ [ cnvogelg/machine68k #9 ] ( https://github.com/cnvogelg/machine68k/issues/9 ) )
0 commit comments