athena-framework / athena

An ecosystem of reusable, independent components
https://athenaframework.org
MIT License
211 stars 17 forks source link

Breakout compile error testing to its own job #368

Closed Blacksmoke16 closed 6 months ago

Blacksmoke16 commented 6 months ago

Various athena components make use of compile time errors for the DX. The vast majority of these are also tested to ensure they are working as expected. However due to them being compile time errors, many different test programs needs to be compiled in order to test all the scenarios.

This process, for the framework component, can take anywhere from ~2min on Ubuntu CI to ~4min on Windows CI, to ~7min on Windows nightly CI. This ultimately really reduces the possible velocity when merging various PRs one after another.

Not running these specs is a non-starter, so unfortunately we are kind of bound by CI and compiler performance. One possible thing we could do is split out the compile time specs into their own job that can run on the more performant Ubuntu hardware. This assumes that the compile errors being tested are not platform dependent, which is probably true?

We can leverage https://crystal-lang.org/reference/1.11/guides/testing.html#tagging-specs to make this pretty trivial. A lot of specs already make use of this pattern, but this should be audited to ensure we didn't miss any.

(I tried GH merge queue, but https://github.com/orgs/community/discussions/15925 is kinda a blocker for me).