Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run tests on all of our crate dependencies #23

Open
1 task
repi opened this issue Apr 13, 2019 · 2 comments
Open
1 task

Run tests on all of our crate dependencies #23

repi opened this issue Apr 13, 2019 · 2 comments

Comments

@repi
Copy link
Contributor

repi commented Apr 13, 2019

It would be useful and good to be able to ourselves run unit tests for all the crates that we are using (currently 478 crates!) and verify they pass on all platforms we are targeting.

This becomes extra important as we bring up new platforms (related: #18) and environments where 3rd party crates have never run and most likely don't have access to run on (consoles).

This is likely a fairly large undertaking to make robust, fast, and fully useful in practice across a wider set of platforms. So is unlikely a task for 2019 but something that we would like to eventually have in some capacity.

Requirements

One would want this to work transitively so the crate dependencies of our crate dependencies get tested as well. And that the exact versions we are using are tested (including if using multiple versions of the same crate). Easiest here is likely to simple test all crates that are in the Cargo.lock file for our repos, the metadata section does include a flat list of exact versions:

[metadata]
"checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f"
"checksum RustyXML 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9222d58bccd9e6e3b82098a2ec142ad34e5d433de986d46cec03ad3a2b5fd529"
"checksum abomonation 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6b72851223d8747938515812ef24e3f678452a4e5201d61e1954ab378ad8601"
"checksum abomonation_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0847ef820f2699bfaa7ceef120588946823806112974fb7a46eca946180049f7"
"checksum actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6c616db5fa4b0c40702fb75201c2af7f8aa8f3a2e2c1dda3b0655772aa949666"
...

It would be excellent to run crate dependency tests on our ordinary CI on commits where Cargo.lock has been changed. It would be ok for such commits to be verified a bit slower than ordinary commits, but can't block it for hours.

Challenges

Lots!

  • Quite a few crates do not contain tests in the published version on crates.io.
    • An example of this is hyper who's tests/ folder is not included
    • This makes sense in general as there is no built in mechanism to run tests on downloaded crates so no expectation on it
    • An alternative would be to pull down the repo from its git repository tag and build that, but another challenge with that approach is to figure out which revision to pull and build.

Related

@Relrin
Copy link
Member

Relrin commented Jul 16, 2020

Oh, probably I have something. Give a try to this small tool that I've done for myself a long time ago. Perhaps it will cover somehow your needs (or at least part of it)

@repi
Copy link
Contributor Author

repi commented Jul 16, 2020

@Relrin thanks! we should try it out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants