-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
compiletest: Run revisions as independent tests. #50400
Conversation
(rust_highfive has picked a reviewer for you, use r? to override) |
Note: It might be easier to review if you look at the diff for the commit after the Concerns:
|
☔ The latest upstream changes (presumably #49870) made this pull request unmergeable. Please resolve the merge conflicts. |
2566edb
to
5b9bee8
Compare
☔ The latest upstream changes (presumably #50084) made this pull request unmergeable. Please resolve the merge conflicts. |
5b9bee8
to
eb6d575
Compare
☔ The latest upstream changes (presumably #50000) made this pull request unmergeable. Please resolve the merge conflicts. |
eb6d575
to
e0a6acd
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks really nice! It feels like the path handling is much cleaner than before, even if it's still a bit messy.
fn output_base_name(&self) -> PathBuf { | ||
let dir = self.config.build_base.join(&self.testpaths.relative_dir); | ||
/// The revision, ignored for Incremental since it wants all revisions in | ||
/// the same directory. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All these special cases definitely make me think that separating out the incremental phases from revisions would be a good idea -- but maybe in a follow-up PR.
Don't think so. @alexcrichton couldn't think of any either. Maybe someone from @rust-lang/infra has thoughts though.
I don't really know about this.
I don't know this either. There may not be a reason? Maybe check the
What is hasher used for exactly?
OK -- how it is still seems more centralized than before. I like the "one directory per test" etc.
Maybe, but I don't think it matters. |
I'd be happy to land this as is -- does anyone from @rust-lang/infra want to take a look too? |
It was @alexcrichton in #39431 (c8e0d04). Hmm, just noticed #40578 which changed the stamp name for ecryptfs which says it has a 145 character limit. We're way over that now, so maybe that isn't something that can be realistically handled now?
Right now it just hashes the stage ID (instead of placing it in a filename). If you run tests for a different stage, it will invalidate the cached results and re-run the tests. It can be used to fingerprint anything else we want in the future. |
Oh as long as we're within limits on Windows I think we're good, and it looks like this is already taking that into account and optimizing for it! |
@bors r+ -- let's do this! |
📌 Commit e0a6acd has been approved by |
@nikomatsakis Just a warning, this conflicts with #50447. If this can get through the queue in a reasonable amount of time, I suggest just closing #50447. |
@kennytm Ah, I'll just rebase as soon as it passes. Thanks! |
☔ The latest upstream changes (presumably #50611) made this pull request unmergeable. Please resolve the merge conflicts. |
e0a6acd
to
2d7096f
Compare
Rebased. |
@bors: r=nikomatsakis |
📌 Commit 2d7096f has been approved by |
I've been running various docker images locally, and haven't found any more issues, yet. I figured out how to get the wasm target going, too, and it seems ok. |
@bors: r+ |
📌 Commit 598cc07 has been approved by |
☔ The latest upstream changes (presumably #50807) made this pull request unmergeable. Please resolve the merge conflicts. |
- The output of each test is now in its own directory. - "auxiliary" output is now under the respective test directory. - `stage_id` removed from filenames, and instead placed in the stamp file as a hash. This helps keep path lengths down for Windows. In brief, the new layout looks like this: ``` <build_base>/<relative_dir>/<testname>.<revision>.<mode>/ stamp <testname>.err <testname>.out a (binary) auxiliary/lib<auxname>.dylib auxiliary/<auxname>/<auxname>.err auxiliary/<auxname>/<auxname>.out ``` (revision and mode are optional)
The aux dir, which previously had the `stage_id` embedded in it, was picking up remnants from previous runs.
598cc07
to
b8473de
Compare
rebased |
@bors r=alexcrichton |
📌 Commit b8473de has been approved by |
compiletest: Run revisions as independent tests. Fixes #47604. - The output of each test is now in its own directory. - "auxiliary" output is now under the respective test directory. - `stage_id` removed from filenames, and instead placed in the stamp file as a hash. This helps keep path lengths down for Windows. In brief, the new layout looks like this: ``` <build_base>/<relative_dir>/<testname>.<revision>.<mode>/ stamp <testname>.err <testname>.out a (binary) auxiliary/lib<auxname>.dylib auxiliary/<auxname>/<auxname>.err auxiliary/<auxname>/<auxname>.out ``` (revision and mode are optional)
☀️ Test successful - status-appveyor, status-travis |
Fixes #47604.
stage_id
removed from filenames, and instead placed in the stamp file as a hash. This helps keep path lengths down for Windows.In brief, the new layout looks like this:
(revision and mode are optional)