- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.9k
compiletest: Run revisions as independent tests. #50400
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
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.
        
          
                src/tools/compiletest/src/runtest.rs
              
                Outdated
          
        
      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_idremoved 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)