You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As zerocopy-derive gets more powerful, it becomes harder to test every edge case just through compile-success and compile-fail tests. One way we could test at a higher fidelity would be to assert the exact token stream output as a result of deriving traits on various types. This would be in some ways easier to verify for a human reviewer, and would be more stable than compiler error messages (a problem that plagues our existing trybuild tests, and requires us to keep three separate copies of the .stderr files - one for each toolchain we use in CI).
I'm currently leaning towards test_derive!, as it seems to do exactly what we want.
Mentoring
Steps:
Add synstructure dev-dependency to zerocopy-derive
Add a basic test and confirm that it works (this and the previous step could be their own PR)
Come up with as many test cases as you can think of! Consider using our existing tests (zerocopy-derive/tests/*.rs) and trybuild tests (zerocopy-derive/tests/ui-*.rs) to help give you ideas.
The text was updated successfully, but these errors were encountered:
I've had a bit of a go at this (with synstructure) but I can't manage to make test_derive! work with zerocopy-derive's derives. I don't have much experience with macros, so I don't feel confident calling it definitively but I think test_derive! can only really be used with macros built using synstructure.
As zerocopy-derive gets more powerful, it becomes harder to test every edge case just through compile-success and compile-fail tests. One way we could test at a higher fidelity would be to assert the exact token stream output as a result of deriving traits on various types. This would be in some ways easier to verify for a human reviewer, and would be more stable than compiler error messages (a problem that plagues our existing trybuild tests, and requires us to keep three separate copies of the .stderr files - one for each toolchain we use in CI).
A few ways we could do this:
cargo expand
I'm currently leaning towards
test_derive!
, as it seems to do exactly what we want.Mentoring
Steps:
synstructure
dev-dependency to zerocopy-derivezerocopy-derive/tests/*.rs
) and trybuild tests (zerocopy-derive/tests/ui-*.rs
) to help give you ideas.The text was updated successfully, but these errors were encountered: