By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Rename fixtures to test_resources, one directory per spec Each directory under hopinion-gen/test_resources now belongs to exactly one spec and is named after it, and nothing may sit there unread: - TestResourcesSpec asserts every directory names a spec that exists, so both a directory nobody reads and one whose spec was deleted fail. - CommentSpec runs off scenarioDir, so every file gets a test, and a golden whose module was deleted fails with it. - RuleSpec compares the directory listing against the rule enum, in both directions. - AnnotationSpec, ProjectSpec and ExampleSpec each assert their own listing. The cross-consumer coupling is gone with it. The split property moves from SplitSpec into RuleSpec, where it runs per project-level rule over that rule's own resources rather than over a hand-kept list of projects, so a rule added later is covered without anyone remembering. absent-module moves to a new ProjectSpec. annotate gets its own repository, Annotation/to-annotate, instead of building one at test time by copying a module out of the rule resources and rewriting a cabal file. The awkward input is now a file: Latin1.hs holds a byte no UTF-8 decoder can read and ends without a newline. nix/e2e.nix drives Example/clean and Example/dirty, owned by a new ExampleSpec that asserts in one process every property those Nix checks rest on: which packages the dirty repository holds, that it fails at all three levels, and that the finding the path check greps for is where the grep looks.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 0s | 2s | 2s | 2s | 0s |
| Eval | 1s | 15s | 15s | 17s | 0s |
| Build | 7s | 1m26s | 30s | 38s | 0s |
| Suite | 0s | 1m44s | 37s | 38s | 0s |