-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
Stricter need_dev_deps behaviour #5186
Changes from 5 commits
3e07a3e
89d2748
89d5161
0bf8e54
ce26ddf
0bc1155
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5336,6 +5336,55 @@ fn build_filter_infer_profile() { | |
); | ||
} | ||
|
||
#[test] | ||
fn all_targets_with_and_without() { | ||
let p = project("foo") | ||
.file( | ||
"Cargo.toml", | ||
r#" | ||
[package] | ||
name = "foo" | ||
version = "0.1.0" | ||
authors = [] | ||
"#, | ||
) | ||
.file("src/main.rs", "fn main() {}") | ||
.build(); | ||
assert_that( | ||
p.cargo("build").arg("-v").arg("--all-targets"), | ||
execs().with_status(0) | ||
// bin | ||
.with_stderr_contains("\ | ||
[RUNNING] `rustc --crate-name foo src[/]main.rs --crate-type bin \ | ||
--emit=dep-info,link[..]") | ||
// bench | ||
.with_stderr_contains("\ | ||
[RUNNING] `rustc --crate-name foo src[/]main.rs --emit=dep-info,link \ | ||
-C opt-level=3 --test [..]") | ||
// unit test | ||
.with_stderr_contains("\ | ||
[RUNNING] `rustc --crate-name foo src[/]main.rs --emit=dep-info,link \ | ||
-C debuginfo=2 --test [..]"), | ||
); | ||
assert_that(p.cargo("clean"), execs().with_status(0)); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unfortunately we've had pretty bad luck with commands like this which delete the target directory (intermittent failures on windows due to presumed mspdbsrv.exe instances), in light of that could these tests be extracted to individual tests? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
assert_that( | ||
p.cargo("build").arg("-v"), | ||
execs().with_status(0) | ||
// bin | ||
.with_stderr_contains("\ | ||
[RUNNING] `rustc --crate-name foo src[/]main.rs --crate-type bin \ | ||
--emit=dep-info,link[..]") | ||
// bench | ||
.with_stderr_does_not_contain("\ | ||
[RUNNING] `rustc --crate-name foo src[/]main.rs --emit=dep-info,link \ | ||
-C opt-level=3 --test [..]") | ||
// unit test | ||
.with_stderr_does_not_contain("\ | ||
[RUNNING] `rustc --crate-name foo src[/]main.rs --emit=dep-info,link \ | ||
-C debuginfo=2 --test [..]"), | ||
); | ||
} | ||
|
||
#[test] | ||
fn all_targets_no_lib() { | ||
let p = project("foo") | ||
|
@@ -5426,11 +5475,9 @@ fn avoid_dev_deps() { | |
.file("src/main.rs", "fn main() {}") | ||
.build(); | ||
|
||
// --bins is needed because of #5134 | ||
assert_that(p.cargo("build").arg("--bins"), execs().with_status(101)); | ||
assert_that(p.cargo("build"), execs().with_status(101)); | ||
assert_that( | ||
p.cargo("build") | ||
.arg("--bins") | ||
.masquerade_as_nightly_cargo() | ||
.arg("-Zavoid-dev-deps"), | ||
execs().with_status(0), | ||
|
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.
Was this change needed for the correctness of the patch? I think it changes the behavior of
cargo rustc
by default (erroring today whereas after this patch it succeeds and builds multiple crates)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.
Yes, this is needed for e.g.
cargo rustc
with no args to work in the first place.Assuming "package" and "crate" are the same thing, the behaviour you're describing is tested for by
fail_with_multiple_packages
which still passes. There is also afails_when_trying_to_build_main_and_lib_with_args
test for failing when multiple targets are selected, and it is still passing as well.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.
Sorry, this is not correct. The hunk here is needed for
cargo rustc --all-targets
with no further args to work, which is documented as part of its CLI. Furthermore it's also needed when passing cargo args like-v
, as opposed to binary-target args that go after--
which is whatfails_when_trying_to_build_main_and_lib_with_args
tests for and this is still passing.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.
Hm I think the documentation is wrong then? The
cargo rustc
command was only ever intended to work with only one targetThere 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.
Ok but my commit here doesn't affect this (i.e. it was broken before and it's broken afterwards), it only fixes the
--
related behaviour that was broken by #5152. If you runcargo rustc
using cargo 0.25.0 (the current stable) then it will still work with a multi-target crate, e.g.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.
Ah I see... odd! Well in any case it looks like nothing's changing so seems good to land!