-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
make revisions in the test harness show up as independent tests #47604
Comments
Tagging as E-mentor. I gave a few pointers in the description above, but of course happy to go into more detail. |
Can I take this one? |
@totorigolo I'd say yes, go ahead. In any case check with @nikomatsakis. This #47605 is a very close attempt to implement the thing. Some tests were failing and I gave up because I didn't have any time. It's probably very close, I couldn't even check what the error is about, hehe. |
Can you explain which tests were failing? I applied your changes and everything seems to be working. |
Run |
I ran
I don't understand why they fail, but they all seem unrelated to this issue. Here is the result of
|
I remember seeing failures in CI, hmmm. Could it be that this PR is actually ok?. |
@spastorino worth a try =) |
@totorigolo did you ever give this a try? |
cc @ehuss -- I think after your changes, we may be able to get this done! Want to give it a try? |
@nikomatsakis yea, although it looks a little tricky. IIUC, incremental revisions are designed to be run in sequence, reusing the same directory. Supporting that is resulting in a lot of special-case code (directory names, |
@nikomatsakis I tried a slightly different approach with just a few special cases for Incremental. It works pretty well, however, I'm running into path-length problems on Windows. I tried sending |
I put the paths on a diet and things seem to pass on Windows (at least on my system). I have a patch here: ehuss@b558fa3 The commit comment should explain generally what I did. Let me know if you like the idea and you'd like me to post it as a PR. I also had a few questions:
|
Sorry for dropping off the face of the earth. Trying to catch up on notifications!
ah true, I forgot about that
👍 seems good
will take a look! |
@ehuss at first glance, that looks good to me. Maybe open the PR and i'll parse it more carefully. |
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)
So @spastorino recently hacked up a test to include two revisions, one of which enables NLL, by adding:
This generates the following output:
at which point the question is -- did both of those revisions really run successfully?
Currently, if a test has N revisions, we run them all as part of its "main line". It'd be more reassuring if we made the revision part of the test name, so that you get output like:
The "early properties" of a test (which are gathered while we are assembling the list of tests) already contains the list of revisions:
rust/src/tools/compiletest/src/header.rs
Line 29 in 5965b79
Therefore, it should be a relatively simple thing to extend the
make_test
function to return not one test, but potentially many tests (one for each revision):rust/src/tools/compiletest/src/main.rs
Line 600 in 5965b79
We would of course have to modify the test description to include which revision to run, and modify the
run
function, since that is the one that currently iterates over the list of revisions:rust/src/tools/compiletest/src/runtest.rs
Lines 165 to 178 in 5965b79
But this shouldn't be a big change, I wouldn't think.
The text was updated successfully, but these errors were encountered: