From 35d143ce4e9b80770c076c0ec67e8a8312716475 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 3 Aug 2026 08:51:28 -0500 Subject: [PATCH 1/4] test: Adjust bin case --- tests/testsuite/build.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index 4f6ad78d869..71bf0d09bc2 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -645,7 +645,7 @@ fn cargo_compile_with_bin_and_crate_type() { edition = "2015" [[bin]] - name = "the_foo_bin" + name = "the-foo-bin" path = "src/foo.rs" crate-type = ["cdylib", "rlib"] "#, @@ -656,7 +656,7 @@ fn cargo_compile_with_bin_and_crate_type() { p.cargo("build") .with_status(101) .with_stderr_data(str![[r#" -[ERROR] Cargo.toml: the target `the_foo_bin` is a binary and can't have any crate-types set (currently "cdylib, rlib") +[ERROR] Cargo.toml: the target `the-foo-bin` is a binary and can't have any crate-types set (currently "cdylib, rlib") [ERROR] could not parse `foo` (manifest) due to 1 previous error "#]]) @@ -731,7 +731,7 @@ fn cargo_compile_with_bin_and_proc() { edition = "2015" [[bin]] - name = "the_foo_bin" + name = "the-foo-bin" path = "src/foo.rs" proc-macro = true "#, @@ -742,7 +742,7 @@ fn cargo_compile_with_bin_and_proc() { p.cargo("build") .with_status(101) .with_stderr_data(str![[r#" -[ERROR] Cargo.toml: the target `the_foo_bin` is a binary and can't have `proc-macro` set `true` +[ERROR] Cargo.toml: the target `the-foo-bin` is a binary and can't have `proc-macro` set `true` [ERROR] could not parse `foo` (manifest) due to 1 previous error "#]]) From 074936a01de39657c6fcca8efabdc9450a38ee66 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Mon, 3 Aug 2026 15:47:57 -0500 Subject: [PATCH 2/4] test: Be more resilient against diagnostic messages --- tests/build-std/main.rs | 4 +-- tests/testsuite/cache_messages.rs | 49 ------------------------------- 2 files changed, 2 insertions(+), 51 deletions(-) diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index 77984e6f0dd..158cded5247 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -445,7 +445,7 @@ fn build_std_does_not_warn_about_implicit_std_deps() { "Cargo.toml", r#" [package] - name = "buildstd_test" + name = "buildstd-test" version = "0.1.0" edition = "2021" @@ -473,7 +473,7 @@ fn build_std_does_not_warn_about_implicit_std_deps() { .with_stderr_data( str![[r#" [WARNING] extern crate `bar` is unused in crate `buildstd_test` -[WARNING] `buildstd_test` (bin "buildstd_test") generated 1 warning +[WARNING] `buildstd-test` (bin "buildstd-test") generated 1 warning ... "#]] .unordered(), diff --git a/tests/testsuite/cache_messages.rs b/tests/testsuite/cache_messages.rs index 94963102912..e16c1ca0787 100644 --- a/tests/testsuite/cache_messages.rs +++ b/tests/testsuite/cache_messages.rs @@ -163,10 +163,6 @@ fn clears_cache_after_fix() { "#]]) .run(); - assert_eq!( - p.glob("target/debug/.fingerprint/foo-*/output-*").count(), - 0 - ); // And again, check the cache is correct. p.cargo("check") @@ -275,51 +271,6 @@ fn very_verbose() { .run(); } -#[cargo_test] -fn doesnt_create_extra_files() { - // Ensure it doesn't create `output` files when not needed. - Package::new("dep", "1.0.0") - .file("src/lib.rs", "fn unused() {}") - .publish(); - - let p = project() - .file( - "Cargo.toml", - r#" - [package] - name = "foo" - version = "0.1.0" - edition = "2015" - - [dependencies] - dep = "1.0" - "#, - ) - .file("src/lib.rs", "") - .file("src/main.rs", "fn main() {}") - .build(); - - p.cargo("check").run(); - - assert_eq!( - p.glob("target/debug/.fingerprint/foo-*/output-*").count(), - 0 - ); - assert_eq!( - p.glob("target/debug/.fingerprint/dep-*/output-*").count(), - 0 - ); - if is_coarse_mtime() { - sleep_ms(1000); - } - p.change_file("src/lib.rs", "fn unused() {}"); - p.cargo("check").run(); - assert_eq!( - p.glob("target/debug/.fingerprint/foo-*/output-*").count(), - 1 - ); -} - #[cargo_test] fn replay_non_json() { // Handles non-json output. From 3941fc1301ff59ca530ccee22057216cbc6f1133 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 4 Aug 2026 10:43:16 -0500 Subject: [PATCH 3/4] test(build-std): Be more resilienbt against out changes This test is trying to assert for presence and absence but can't use exhaustive output because it is dependent on the users build environment. This makes it so we can check exactly what we are looking for. --- tests/build-std/main.rs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index 158cded5247..21e6448360e 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -25,6 +25,7 @@ use cargo_test_support::basic_manifest; use cargo_test_support::paths; use cargo_test_support::project; use cargo_test_support::rustc_host; +use cargo_test_support::snapbox::assert_data_eq; use cargo_test_support::str; use cargo_test_support::target_spec_json; use cargo_test_support::{Project, prelude::*}; @@ -466,19 +467,24 @@ fn build_std_does_not_warn_about_implicit_std_deps() { .file("bar/src/lib.rs", "") .build(); - p.cargo("build") + let output = p + .cargo("build") .build_std() .target_host() .env("RUSTFLAGS", "-W unused-crate-dependencies") - .with_stderr_data( - str![[r#" -[WARNING] extern crate `bar` is unused in crate `buildstd_test` -[WARNING] `buildstd-test` (bin "buildstd-test") generated 1 warning -... -"#]] - .unordered(), - ) .run(); + let stderr = String::from_utf8(output.stderr).unwrap(); + println!("{stderr}"); + let mut unused_warnings = stderr + .lines() + .filter(|l| l.contains("is unused in crate")) + .collect::>(); + unused_warnings.sort(); + let unused_warnings = unused_warnings.join("\n"); + assert_data_eq!( + unused_warnings, + str!["warning: extern crate `bar` is unused in crate `buildstd_test`"] + ); } #[cargo_test(build_std_real)] From a4919458870f86cf2499bce90e95f520ea3a1c2c Mon Sep 17 00:00:00 2001 From: Ed Page Date: Sat, 1 Aug 2026 15:44:47 -0500 Subject: [PATCH 4/4] feat(diag): Stabilize cargo-lints Fixes #12235 --- crates/xtask-lint-docs/src/main.rs | 6 +- doc/book/src/guide/build-performance.md | 13 +- doc/book/src/reference/lints.md | 4 - doc/book/src/reference/unstable.md | 28 +--- src/compiler/job_queue/mod.rs | 16 +-- src/compiler/mod.rs | 15 +-- src/diagnostics/passes.rs | 110 ++++++++-------- src/workspace/features.rs | 5 +- src/workspace/parser/mod.rs | 42 +----- tests/build-std/main.rs | 14 +- tests/testsuite/alt_registry.rs | 42 ++++++ tests/testsuite/artifact_dep.rs | 48 +++++++ tests/testsuite/bad_config.rs | 39 ++++++ tests/testsuite/build.rs | 35 ++++- tests/testsuite/build_dir.rs | 30 ++++- .../testsuite/build_dir_fine_grain_locking.rs | 25 ++++ tests/testsuite/build_dir_legacy.rs | 24 ++++ tests/testsuite/build_script.rs | 105 +++++++++++++-- .../testsuite/build_script_extra_link_arg.rs | 3 + tests/testsuite/cache_messages.rs | 3 + tests/testsuite/cargo/z_help/stdout.term.svg | 86 ++++++------- tests/testsuite/cargo_features.rs | 6 + tests/testsuite/cfg.rs | 18 +++ tests/testsuite/check.rs | 12 ++ tests/testsuite/clean.rs | 6 + tests/testsuite/clean_legacy_layout.rs | 6 + tests/testsuite/collisions.rs | 6 + tests/testsuite/credential_process.rs | 6 + tests/testsuite/cross_compile.rs | 2 +- tests/testsuite/dep_info.rs | 12 ++ tests/testsuite/directory.rs | 9 ++ tests/testsuite/doc.rs | 6 + tests/testsuite/feature_unification.rs | 36 ++++++ tests/testsuite/features.rs | 24 ++++ tests/testsuite/features2.rs | 39 ++++++ tests/testsuite/features_namespaced.rs | 15 +++ tests/testsuite/fix.rs | 51 ++++++++ tests/testsuite/freshness.rs | 90 +++++++++++++ tests/testsuite/freshness_checksum.rs | 81 ++++++++++++ tests/testsuite/future_incompat_report.rs | 9 ++ tests/testsuite/git.rs | 108 ++++++++++++++++ tests/testsuite/global_cache_tracker.rs | 9 ++ tests/testsuite/hints.rs | 30 +++++ .../testsuite/inheritable_workspace_fields.rs | 63 +++++++++ tests/testsuite/install.rs | 11 +- .../lints/blanket_hint_mostly_unused.rs | 25 ++-- tests/testsuite/lints/error/mod.rs | 3 +- tests/testsuite/lints/inherited/mod.rs | 2 - tests/testsuite/lints/manual_readme.rs | 31 +---- .../lints/missing_lints_inheritance.rs | 18 +-- tests/testsuite/lints/mod.rs | 36 +++--- tests/testsuite/lints/non_kebab_case_bins.rs | 13 +- .../lints/non_kebab_case_features.rs | 8 +- .../lints/non_kebab_case_packages.rs | 8 +- .../lints/non_snake_case_features.rs | 8 +- .../lints/non_snake_case_packages.rs | 8 +- tests/testsuite/lints/redundant_homepage.rs | 9 +- .../lints/text_direction_codepoint.rs | 12 +- tests/testsuite/lints/unknown_lints.rs | 9 +- tests/testsuite/lints/unused_dependencies.rs | 105 +++++---------- .../lints/unused_workspace_dependencies.rs | 3 +- .../lints/unused_workspace_package_fields.rs | 3 +- tests/testsuite/lints/warning/mod.rs | 3 +- tests/testsuite/lints_table.rs | 52 ++------ tests/testsuite/local_registry.rs | 3 + tests/testsuite/lockfile_compat.rs | 6 + tests/testsuite/lto.rs | 6 + tests/testsuite/message_format.rs | 2 +- tests/testsuite/metabuild.rs | 3 + tests/testsuite/min_publish_age.rs | 3 + tests/testsuite/offline.rs | 6 + tests/testsuite/package.rs | 84 ++++++++++++ tests/testsuite/package_features.rs | 3 + tests/testsuite/patch.rs | 120 ++++++++++++++++++ tests/testsuite/path.rs | 15 +++ tests/testsuite/paths.rs | 27 ++++ tests/testsuite/pgo.rs | 2 +- tests/testsuite/proc_macro.rs | 9 ++ tests/testsuite/profile_config.rs | 3 + tests/testsuite/profile_custom.rs | 3 + tests/testsuite/profile_overrides.rs | 6 + tests/testsuite/profile_settings.rs | 24 +++- tests/testsuite/pub_priv.rs | 3 + tests/testsuite/publish.rs | 45 +++++++ tests/testsuite/publish_lockfile.rs | 9 ++ tests/testsuite/registry.rs | 108 ++++++++++++++++ tests/testsuite/registry_auth.rs | 3 + tests/testsuite/registry_overlay.rs | 12 ++ tests/testsuite/rename_deps.rs | 3 + tests/testsuite/replace.rs | 27 ++++ tests/testsuite/required_features.rs | 6 + tests/testsuite/run.rs | 8 +- tests/testsuite/rustc.rs | 6 +- tests/testsuite/rustdocflags.rs | 2 +- tests/testsuite/rustflags.rs | 47 +++---- tests/testsuite/script/cargo.rs | 7 + tests/testsuite/source_replacement.rs | 6 + tests/testsuite/test.rs | 3 + tests/testsuite/vendor.rs | 18 +++ tests/testsuite/warn_on_failure.rs | 6 + tests/testsuite/warning_override.rs | 33 +++-- tests/testsuite/weak_dep_features.rs | 12 ++ tests/testsuite/workspaces.rs | 21 +++ 103 files changed, 1884 insertions(+), 530 deletions(-) diff --git a/crates/xtask-lint-docs/src/main.rs b/crates/xtask-lint-docs/src/main.rs index b2265a24a49..a7ce7daf853 100644 --- a/crates/xtask-lint-docs/src/main.rs +++ b/crates/xtask-lint-docs/src/main.rs @@ -45,11 +45,7 @@ fn main() -> anyhow::Result<()> { > > See [the lints section in the Manifest Format > chapter](manifest.md#the-lints-section) to configure lint levels for tools -> such as `rustc` or `clippy`. - -> [!WARNING] -> [Cargo's linting system is unstable](unstable.md#lintscargo) and can only be used on nightly -> toolchains." +> such as `rustc` or `clippy`." )?; writeln!(buf)?; diff --git a/doc/book/src/guide/build-performance.md b/doc/book/src/guide/build-performance.md index 1b4f322d493..e314bcc01d6 100644 --- a/doc/book/src/guide/build-performance.md +++ b/doc/book/src/guide/build-performance.md @@ -151,16 +151,11 @@ Trade-offs: ### Removing unused dependencies -Recommendation: periodically review unused dependencies for removal using: -```console -$ cargo +nightly check -Zcargo-lints --workspace --all-targets -``` -This may have false positives from: -- when a dependency's use is dynamically controlled by a `build.rs` or `RUSTFLAGS` +The [`cargo::unused_dependencies`](../reference/lints.md#unused_dependencies) will identify most unused dependencies with few false positives. -Also, periodically review hidden [`cargo::unused_dependencies`] results: +For everything else, periodically review hidden [`cargo::unused_dependencies`] results: ```console -$ CARGO_LOG=cargo::diagnostics::rules::unused_dependencies=debug cargo +nightly check -Zcargo-lints --workspace --all-targets +$ CARGO_LOG=cargo::diagnostics::rules::unused_dependencies=debug cargo check --workspace --all-targets ``` This will show potential unused dependencies for - registry and git dependencies @@ -174,10 +169,8 @@ it can be easy to miss that a dependency is no longer used and can be removed. Trade-offs: - ✅ Faster full build and link times -- ❌ **Requires using nightly Rust and an [unstable Cargo feature][cargo-lints] when reviewing unused dependencies** - ❌ It takes effort to identify unused dependencies from among the false positives -[cargo-lints]: ../reference/unstable.md#lintscargo [`cargo::unused_dependencies`]: ../reference/lints.md#unused_dependencies [`package.rust-version`]: ../reference/rust-version.md diff --git a/doc/book/src/reference/lints.md b/doc/book/src/reference/lints.md index 6ad0b93813d..103db3b76a4 100644 --- a/doc/book/src/reference/lints.md +++ b/doc/book/src/reference/lints.md @@ -7,10 +7,6 @@ > chapter](manifest.md#the-lints-section) to configure lint levels for tools > such as `rustc` or `clippy`. -> [!WARNING] -> [Cargo's linting system is unstable](unstable.md#lintscargo) and can only be used on nightly -> toolchains. - | Group | Description | Default level | diff --git a/doc/book/src/reference/unstable.md b/doc/book/src/reference/unstable.md index 522b7d6dce0..d451e04e335 100644 --- a/doc/book/src/reference/unstable.md +++ b/doc/book/src/reference/unstable.md @@ -115,7 +115,6 @@ Each new feature described below should explain how to use it. * [per-package-target](#per-package-target) --- Sets the `--target` to use for each individual package. * [artifact dependencies](#artifact-dependencies) --- Allow build artifacts to be included into other build artifacts and build them for different targets. * [Profile `trim-paths` option](#profile-trim-paths-option) --- Control the sanitization of file paths in build outputs. - * [`[lints.cargo]`](#lintscargo) --- Allows configuring lints for Cargo. * [path bases](#path-bases) --- Named base directories for path dependencies. * [`unstable-editions`](#unstable-editions) --- Allows use of editions that are not yet stable. * Information and metadata @@ -1737,27 +1736,6 @@ Use fine grain locking instead of locking the entire build cache. Note: Fine grain locking implicitly enables [build-dir-new-layout](#build-dir-new-layout) as fine grain locking builds on that directory reoganization. -## `[lints.cargo]` - -* Tracking Issue: [#12235](https://github.com/rust-lang/cargo/issues/12235) - -A new `lints` tool table for `cargo` that can be used to configure lints emitted -by `cargo` itself when `-Zcargo-lints` is used -```toml -[lints.cargo] -implicit-features = "warn" -``` - -This will work with -[RFC 2906 `workspace-deduplicate`](https://rust-lang.github.io/rfcs/2906-cargo-workspace-deduplicate.html): -```toml -[workspace.lints.cargo] -implicit-features = "warn" - -[lints] -workspace = true -``` - ## Path Bases * Tracking Issue: [#14355](https://github.com/rust-lang/cargo/issues/14355) @@ -2465,3 +2443,9 @@ The `build.warnings` config field has been stabilized in Rust 1.97. The `cargo update -Zunstable-options --breaking` flag has been removed in 1.99-nightly. See fopr the reason for its removal. + +## `[lints.cargo]` + +Cargo's linting system and the `[lints.cargo]` table have been stabilized in Rust 1.100. +See the [lints chapter](lints.md) and [the lints section](manifest.md#the-lints-section) +for information about configuring Cargo lints. diff --git a/src/compiler/job_queue/mod.rs b/src/compiler/job_queue/mod.rs index 24560da4739..93feb98fe28 100644 --- a/src/compiler/job_queue/mod.rs +++ b/src/compiler/job_queue/mod.rs @@ -841,15 +841,13 @@ impl<'gctx> DrainState<'gctx> { } self.progress.clear(); - if build_runner.bcx.gctx.cli_unstable().cargo_lints { - let mut global_stats = GlobalDiagnosticStats::new(); - drop(unused_dependencies::lint_build_results( - build_runner, - &mut global_stats, - )); - errors.count += global_stats.error_count(); - build_runner.compilation.lint_warning_count += global_stats.lint_warning_count(); - } + let mut global_stats = GlobalDiagnosticStats::new(); + drop(unused_dependencies::lint_build_results( + build_runner, + &mut global_stats, + )); + errors.count += global_stats.error_count(); + build_runner.compilation.lint_warning_count += global_stats.lint_warning_count(); let profile_name = build_runner.bcx.build_config.requested_profile; // NOTE: this may be a bit inaccurate, since this may not display the diff --git a/src/compiler/mod.rs b/src/compiler/mod.rs index d7fa56e1c46..1dbc61398f6 100644 --- a/src/compiler/mod.rs +++ b/src/compiler/mod.rs @@ -852,11 +852,9 @@ fn prepare_rustc(build_runner: &BuildRunner<'_, '_>, unit: &Unit) -> CargoResult base.env("CARGO_TARGET_TMPDIR", tmp.display().to_string()); } - if build_runner.bcx.gctx.cli_unstable().cargo_lints { - // Added last to reduce the risk of RUSTFLAGS or `[lints]` from interfering with - // `unused_dependencies` tracking - base.arg("--force-warn=unused_crate_dependencies"); - } + // Added last to reduce the risk of RUSTFLAGS or `[lints]` from interfering with + // `unused_dependencies` tracking + base.arg("--force-warn=unused_crate_dependencies"); Ok(base) } @@ -1233,10 +1231,9 @@ fn add_error_format_and_color(build_runner: &BuildRunner<'_, '_>, cmd: &mut Proc cmd.arg("--error-format=json"); - let mut json = String::from("--json=diagnostic-rendered-ansi,artifacts,future-incompat"); - if build_runner.bcx.gctx.cli_unstable().cargo_lints { - json.push_str(",unused-externs-silent"); - } + let mut json = String::from( + "--json=diagnostic-rendered-ansi,artifacts,future-incompat,unused-externs-silent", + ); if let MessageFormat::Short | MessageFormat::Json { short: true, .. } = build_runner.bcx.build_config.message_format { diff --git a/src/diagnostics/passes.rs b/src/diagnostics/passes.rs index 11fadc3ad35..696cf41748d 100644 --- a/src/diagnostics/passes.rs +++ b/src/diagnostics/passes.rs @@ -153,19 +153,17 @@ fn emit_parse_pkg_diagnostics( rule(workspace, manifest, &path, &mut pkg_stats, workspace.gctx())?; } ParsePassRule::LintManifest { rule, lint } => { - if workspace.gctx().cli_unstable().cargo_lints { - let manifest: ManifestFor<'_> = pkg.into(); - let level = manifest.lint_level(&cargo_lints, lint, workspace.gctx()); - if level.level != LintLevel::Allow { - rule( - workspace, - manifest, - &path, - level, - &mut pkg_stats, - workspace.gctx(), - )?; - } + let manifest: ManifestFor<'_> = pkg.into(); + let level = manifest.lint_level(&cargo_lints, lint, workspace.gctx()); + if level.level != LintLevel::Allow { + rule( + workspace, + manifest, + &path, + level, + &mut pkg_stats, + workspace.gctx(), + )?; } } ParsePassRule::DiagnosticWorkspace { .. } | ParsePassRule::LintWorkspace { .. } => {} @@ -173,24 +171,22 @@ fn emit_parse_pkg_diagnostics( rule(workspace, pkg, &path, &mut pkg_stats, workspace.gctx())?; } ParsePassRule::LintPackage { rule, lint } => { - if workspace.gctx().cli_unstable().cargo_lints { - let level = lint.level( - &cargo_lints, - pkg.rust_version(), - pkg.manifest().unstable_features(), - workspace.gctx(), - ); + let level = lint.level( + &cargo_lints, + pkg.rust_version(), + pkg.manifest().unstable_features(), + workspace.gctx(), + ); - if level.level != LintLevel::Allow { - rule( - workspace, - pkg, - &path, - level, - &mut pkg_stats, - workspace.gctx(), - )?; - } + if level.level != LintLevel::Allow { + rule( + workspace, + pkg, + &path, + level, + &mut pkg_stats, + workspace.gctx(), + )?; } } } @@ -242,19 +238,17 @@ fn emit_parse_ws_diagnostics( )?; } ParsePassRule::LintManifest { rule, lint } => { - if workspace.gctx().cli_unstable().cargo_lints { - let manifest: ManifestFor<'_> = (workspace, workspace.root_maybe()).into(); - let level = manifest.lint_level(&cargo_lints, lint, workspace.gctx()); - if level.level != LintLevel::Allow { - rule( - workspace, - manifest, - workspace.root_manifest(), - level, - &mut pkg_stats, - workspace.gctx(), - )?; - } + let manifest: ManifestFor<'_> = (workspace, workspace.root_maybe()).into(); + let level = manifest.lint_level(&cargo_lints, lint, workspace.gctx()); + if level.level != LintLevel::Allow { + rule( + workspace, + manifest, + workspace.root_manifest(), + level, + &mut pkg_stats, + workspace.gctx(), + )?; } } ParsePassRule::DiagnosticWorkspace { rule } => { @@ -267,23 +261,21 @@ fn emit_parse_ws_diagnostics( )?; } ParsePassRule::LintWorkspace { rule, lint } => { - if workspace.gctx().cli_unstable().cargo_lints { - let level = lint.level( - &cargo_lints, - workspace.lowest_rust_version(), - workspace.root_maybe().unstable_features(), + let level = lint.level( + &cargo_lints, + workspace.lowest_rust_version(), + workspace.root_maybe().unstable_features(), + workspace.gctx(), + ); + if level.level != LintLevel::Allow { + rule( + workspace, + workspace.root_maybe(), + workspace.root_manifest(), + level, + &mut pkg_stats, workspace.gctx(), - ); - if level.level != LintLevel::Allow { - rule( - workspace, - workspace.root_maybe(), - workspace.root_manifest(), - level, - &mut pkg_stats, - workspace.gctx(), - )?; - } + )?; } } ParsePassRule::DiagnosticPackage { .. } | ParsePassRule::LintPackage { .. } => {} diff --git a/src/workspace/features.rs b/src/workspace/features.rs index 3eb25add58e..e82e2b5649f 100644 --- a/src/workspace/features.rs +++ b/src/workspace/features.rs @@ -890,7 +890,6 @@ unstable_cli_options!( build_std: Option> = ("Enable Cargo to compile the standard library itself as part of a crate graph compilation"), #[serde(deserialize_with = "deserialize_comma_separated_list")] build_std_features: Option> = ("Configure features enabled for the standard library itself when building the standard library"), - cargo_lints: bool = ("Enable the `[lints.cargo]` table"), checksum_freshness: bool = ("Use a checksum to determine if output is fresh rather than filesystem mtime"), codegen_backend: bool = ("Enable the `codegen-backend` option in profiles in .cargo/config.toml file"), direct_minimal_versions: bool = ("Resolve minimal dependency versions instead of maximum (direct dependencies only)"), @@ -1007,6 +1006,8 @@ const STABILIZED_REGISTRY_AUTH: &str = const STABILIZED_LINTS: &str = "The `[lints]` table is now always available."; +const STABILIZED_CARGO_LINTS: &str = "The `[lints.cargo]` table is now always available."; + const STABILIZED_CHECK_CFG: &str = "Compile-time checking of conditional (a.k.a. `-Zcheck-cfg`) is now always enabled."; @@ -1423,6 +1424,7 @@ impl CliUnstable { "config-include" => stabilized_warn(k, "1.93", STABILIZED_CONFIG_INCLUDE), "lockfile-path" => stabilized_warn(k, "1.97", STABILIZED_LOCKFILE_PATH), "warnings" => stabilized_warn(k, "1.97", STABILIZED_WARNINGS), + "cargo-lints" => stabilized_warn(k, "1.100", STABILIZED_CARGO_LINTS), // Unstable features // Sorted alphabetically: @@ -1436,7 +1438,6 @@ impl CliUnstable { "build-dir-new-layout" => self.build_dir_new_layout = parse_empty(k, v)?, "build-std" => self.build_std = Some(parse_list(v)), "build-std-features" => self.build_std_features = Some(parse_list(v)), - "cargo-lints" => self.cargo_lints = parse_empty(k, v)?, "codegen-backend" => self.codegen_backend = parse_empty(k, v)?, "direct-minimal-versions" => self.direct_minimal_versions = parse_empty(k, v)?, "dual-proc-macros" => self.dual_proc_macros = parse_empty(k, v)?, diff --git a/src/workspace/parser/mod.rs b/src/workspace/parser/mod.rs index cb51fe36fc4..23665eb1c84 100644 --- a/src/workspace/parser/mod.rs +++ b/src/workspace/parser/mod.rs @@ -85,7 +85,7 @@ pub fn read_manifest( let cargo_features = original_toml.cargo_features.as_ref().unwrap_or(&empty); let features = Features::new(cargo_features, gctx, &mut warnings, source_id.is_path())?; let workspace_config = - to_workspace_config(&original_toml, path, is_embedded, gctx, &mut warnings)?; + to_workspace_config(&original_toml, path, is_embedded, &mut warnings)?; if let WorkspaceConfig::Root(ws_root_config) = &workspace_config { let package_root = path.parent().unwrap(); gctx.ws_roots() @@ -233,7 +233,6 @@ fn to_workspace_config( original_toml: &manifest::TomlManifest, manifest_file: &Path, is_embedded: bool, - gctx: &GlobalContext, warnings: &mut Vec, ) -> CargoResult { if is_embedded { @@ -245,7 +244,7 @@ fn to_workspace_config( original_toml.package().and_then(|p| p.workspace.as_ref()), ) { (Some(toml_config), None) => { - verify_lints(toml_config.lints.as_ref(), gctx, warnings)?; + verify_lints(toml_config.lints.as_ref(), warnings)?; if let Some(ws_deps) = &toml_config.dependencies { for (name, dep) in ws_deps { if dep.is_optional() { @@ -1664,7 +1663,6 @@ pub fn to_real_manifest( normalized_toml .normalized_lints() .expect("previously normalized"), - gctx, warnings, )?; let default = manifest::TomlLints::default(); @@ -2676,7 +2674,6 @@ fn validate_profile_override(profile: &manifest::TomlProfile, which: &str) -> Ca fn verify_lints( lints: Option<&manifest::TomlLints>, - gctx: &GlobalContext, warnings: &mut Vec, ) -> CargoResult<()> { let Some(lints) = lints else { @@ -2694,9 +2691,6 @@ supported tools: {}", warnings.push(message); continue; } - if tool == "cargo" && !gctx.cli_unstable().cargo_lints { - warn_for_cargo_lint_feature(gctx, warnings); - } let mut seen_normalized: HashMap = HashMap::default(); for (name, config) in lints { let normalized = name.replace('-', "_"); @@ -2749,38 +2743,6 @@ static EXPECTED_LINT_CONFIG: &[(&str, &str, &str)] = &[ ("rust", "unexpected_cfgs", "check-cfg"), ]; -fn warn_for_cargo_lint_feature(gctx: &GlobalContext, warnings: &mut Vec) { - use std::fmt::Write as _; - - let key_name = "lints.cargo"; - let feature_name = "cargo-lints"; - - let mut message = String::new(); - - let _ = write!( - message, - "unused manifest key `{key_name}` (may be supported in a future version)" - ); - if gctx.nightly_features_allowed { - let _ = write!( - message, - " - -consider passing `-Z{feature_name}` to enable this feature." - ); - } else { - let _ = write!( - message, - " - -this Cargo does not support nightly features, but if you -switch to nightly channel you can pass -`-Z{feature_name}` to enable this feature.", - ); - } - warnings.push(message); -} - fn lints_to_rustflags(lints: &manifest::TomlLints) -> CargoResult> { let mut rustflags = lints .iter() diff --git a/tests/build-std/main.rs b/tests/build-std/main.rs index 21e6448360e..e289ebe22f0 100644 --- a/tests/build-std/main.rs +++ b/tests/build-std/main.rs @@ -467,24 +467,16 @@ fn build_std_does_not_warn_about_implicit_std_deps() { .file("bar/src/lib.rs", "") .build(); - let output = p - .cargo("build") - .build_std() - .target_host() - .env("RUSTFLAGS", "-W unused-crate-dependencies") - .run(); + let output = p.cargo("build").build_std().target_host().run(); let stderr = String::from_utf8(output.stderr).unwrap(); println!("{stderr}"); let mut unused_warnings = stderr .lines() - .filter(|l| l.contains("is unused in crate")) + .filter(|l| l.contains("unused dependency")) .collect::>(); unused_warnings.sort(); let unused_warnings = unused_warnings.join("\n"); - assert_data_eq!( - unused_warnings, - str!["warning: extern crate `bar` is unused in crate `buildstd_test`"] - ); + assert_data_eq!(unused_warnings, str!["warning: unused dependency `bar`"]); } #[cargo_test(build_std_real)] diff --git a/tests/testsuite/alt_registry.rs b/tests/testsuite/alt_registry.rs index afaa26253d9..3adbf19fa75 100644 --- a/tests/testsuite/alt_registry.rs +++ b/tests/testsuite/alt_registry.rs @@ -26,6 +26,9 @@ fn depend_on_alt_registry() { [dependencies.bar] version = "0.0.1" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -75,6 +78,9 @@ fn depend_on_alt_registry_depends_on_same_registry_no_index() { [dependencies.bar] version = "0.0.1" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -121,6 +127,9 @@ fn depend_on_alt_registry_depends_on_same_registry() { [dependencies.bar] version = "0.0.1" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -167,6 +176,9 @@ fn depend_on_alt_registry_depends_on_crates_io() { [dependencies.bar] version = "0.0.1" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -215,6 +227,9 @@ fn registry_and_path_dep_works() { [dependencies.bar] path = "bar" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -250,6 +265,9 @@ fn registry_and_git_dep_works() { version = "0.0.1" edition = "2015" authors = [] + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -270,6 +288,9 @@ fn registry_and_git_dep_works() { version = "0.0.1" registry = "alternative" git="{}" + + [lints.cargo] + default = "allow" "#, bar.url(), ), @@ -371,6 +392,9 @@ fn publish_with_registry_dependency() { [dependencies.bar] version = "0.0.1" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -456,6 +480,9 @@ fn alt_registry_and_crates_io_deps() { [dependencies.alt_reg_dep] version = "0.1.0" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -612,6 +639,9 @@ fn publish_with_crates_io_dep() { [dependencies.bar] version = "0.0.1" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -696,6 +726,9 @@ fn publish_with_git_and_registry_dep() { version = "0.0.1" edition = "2015" authors = [] + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -716,6 +749,9 @@ fn publish_with_git_and_registry_dep() { version = "0.0.1" registry = "alternative" git="{}" + + [lints.cargo] + default = "allow" "#, bar.url(), ), @@ -929,6 +965,9 @@ fn no_api() { [dependencies.bar] version = "0.0.1" registry = "alternative" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -1784,6 +1823,9 @@ fn registries_index_relative_url() { [dependencies.bar] version = "0.0.1" registry = "relative" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") diff --git a/tests/testsuite/artifact_dep.rs b/tests/testsuite/artifact_dep.rs index dda2e46f9e1..a0308f34695 100644 --- a/tests/testsuite/artifact_dep.rs +++ b/tests/testsuite/artifact_dep.rs @@ -1974,6 +1974,9 @@ fn show_no_lib_warning_with_artifact_dependencies_that_have_no_lib_but_lib_true( [dependencies] bar = { path = "bar/", artifact = "bin", lib = true } + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -2850,6 +2853,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep() { [dependencies] a = {{ path = "a" }} bar = {{ path = "bar", artifact = "bin", target = "{target}" }} + + [lints.cargo] + default = "allow" "# ), ) @@ -2869,6 +2875,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep() { [dependencies] a = { path = "../a", features = ["feature"] } + + [lints.cargo] + default = "allow" "#, ) .file( @@ -2891,6 +2900,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep() { [features] feature = ["c/feature"] + + [lints.cargo] + default = "allow" "#, ) .file( @@ -2913,6 +2925,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep() { [dependencies] c = { path = "../c" } + + [lints.cargo] + default = "allow" "#, ) .file( @@ -2935,6 +2950,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep() { [features] feature = [] + + [lints.cargo] + default = "allow" "#, ) .file( @@ -2977,6 +2995,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_lib() { a = {{ path = "a" }} b = {{ path = "b", features = ["feature"] }} bar = {{ path = "bar", artifact = "bin", lib = true, target = "{target}" }} + + [lints.cargo] + default = "allow" "# ), ) @@ -2992,6 +3013,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_lib() { [dependencies] a = { path = "../a", features = ["b"] } b = { path = "../b" } + + [lints.cargo] + default = "allow" "#, ) .file("bar/src/lib.rs", "") @@ -3015,6 +3039,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_lib() { [dependencies] b = { path = "../b", optional = true } + + [lints.cargo] + default = "allow" "#, ) .file( @@ -3036,6 +3063,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_lib() { [features] feature = [] + + [lints.cargo] + default = "allow" "#, ) .file( @@ -3077,6 +3107,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_and_proc_macro() { [dependencies] c = {{ path = "c" }} bar = {{ path = "bar", artifact = "bin", target = "{target}" }} + + [lints.cargo] + default = "allow" "# ), ) @@ -3091,6 +3124,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_and_proc_macro() { [dependencies] b = { path = "../b" } + + [lints.cargo] + default = "allow" "#, ) .file("bar/src/main.rs", "fn main() {}") @@ -3107,6 +3143,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_and_proc_macro() { [lib] proc-macro = true + + [lints.cargo] + default = "allow" "#, ) .file("b/src/lib.rs", "") @@ -3124,6 +3163,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_and_proc_macro() { [lib] proc-macro = true + + [lints.cargo] + default = "allow" "#, ) .file( @@ -3146,6 +3188,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_and_proc_macro() { [dependencies] d = { path = "../d" } + + [lints.cargo] + default = "allow" "#, ) .file( @@ -3168,6 +3213,9 @@ fn decouple_same_target_transitive_dep_from_artifact_dep_and_proc_macro() { [features] feature = [] + + [lints.cargo] + default = "allow" "#, ) .file("d/src/lib.rs", "pub struct D;") diff --git a/tests/testsuite/bad_config.rs b/tests/testsuite/bad_config.rs index f666e6a341a..9da86a93edf 100644 --- a/tests/testsuite/bad_config.rs +++ b/tests/testsuite/bad_config.rs @@ -1084,6 +1084,9 @@ fn build_dependencies2() { [build_dependencies] a = {path = "a"} + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -1094,6 +1097,9 @@ fn build_dependencies2() { name = "a" version = "0.0.1" edition = "2015" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -1164,6 +1170,9 @@ fn build_dependencies2_conflict() { a = {path = "a"} [build_dependencies] a = {path = "a"} + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -1174,6 +1183,9 @@ fn build_dependencies2_conflict() { name = "a" version = "0.0.1" edition = "2015" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -1797,6 +1809,9 @@ fn default_features2() { [dependencies] a = { path = "a", features = ["f1"], default_features = false } + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -1812,6 +1827,9 @@ fn default_features2() { [features] default = ["f1"] f1 = [] + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -1890,6 +1908,9 @@ fn default_features2_conflict() { [dependencies] a = { path = "a", features = ["f1"], default-features = false, default_features = false } + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -1905,6 +1926,9 @@ fn default_features2_conflict() { [features] default = ["f1"] f1 = [] + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -1946,6 +1970,9 @@ fn workspace_default_features2() { [dependencies] dep_workspace_only.workspace = true + + [lints.cargo] + default = "allow" "#, ) .file("workspace_only/src/lib.rs", "") @@ -1957,6 +1984,9 @@ fn workspace_default_features2() { version = "0.1.0" edition = "2015" authors = [] + + [lints.cargo] + default = "allow" "#, ) .file("dep_workspace_only/src/lib.rs", "") @@ -1971,6 +2001,9 @@ fn workspace_default_features2() { [dependencies] dep_package_only = { workspace = true, default_features = true } + + [lints.cargo] + default = "allow" "#, ) .file("package_only/src/lib.rs", "") @@ -1982,6 +2015,9 @@ fn workspace_default_features2() { version = "0.1.0" edition = "2015" authors = [] + + [lints.cargo] + default = "allow" "#, ) .file("dep_package_only/src/lib.rs", "") @@ -2987,6 +3023,9 @@ fn warn_semver_metadata() { [dependencies] bar = "1.0.0+1234" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index 71bf0d09bc2..14f0d88df1b 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -1564,7 +1564,7 @@ fn cargo_default_env_metadata_env_var() { path = "bar" "#, ) - .file("src/lib.rs", "// hi") + .file("src/lib.rs", "extern crate bar;") .file( "bar/Cargo.toml", r#" @@ -1590,7 +1590,7 @@ fn cargo_default_env_metadata_env_var() { .with_stderr_data(format!( "\ ... -[RUNNING] `rustc --crate-name foo [..]--extern bar=[ROOT]/foo/target/debug/deps/{dll_prefix}bar{dll_suffix}` +[RUNNING] `rustc --crate-name foo [..]--extern bar=[ROOT]/foo/target/debug/deps/{dll_prefix}bar{dll_suffix} --force-warn=unused_crate_dependencies` ... ")) .run(); @@ -1603,7 +1603,7 @@ fn cargo_default_env_metadata_env_var() { .with_stderr_data(format!( "\ ... -[RUNNING] `rustc --crate-name foo [..]--extern bar=[ROOT]/foo/target/debug/deps/{dll_prefix}bar-[..]{dll_suffix}` +[RUNNING] `rustc --crate-name foo [..]--extern bar=[ROOT]/foo/target/debug/deps/{dll_prefix}bar-[..]{dll_suffix} --force-warn=unused_crate_dependencies` ... ")) .run(); @@ -3863,6 +3863,9 @@ fn build_all_workspace() { bar = { path = "bar" } [workspace] + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -4344,6 +4347,9 @@ fn build_all_member_dependency_same_name() { [dependencies] a = "0.1.0" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "pub fn a() {}") @@ -4630,6 +4636,9 @@ fn rustc_wrapper_relative() { [dependencies] bar = "1.0" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -5909,7 +5918,7 @@ fn build_lib_only() { p.cargo("build --lib -v") .with_stderr_data(str![[r#" [COMPILING] foo v0.0.1 ([ROOT]/foo) -[RUNNING] `rustc --crate-name foo --edition=2015 src/lib.rs [..]--crate-type lib --emit=[..]link[..] -L dependency=[ROOT]/foo/target/debug/deps` +[RUNNING] `rustc --crate-name foo --edition=2015 src/lib.rs [..]--crate-type lib --emit=[..]link[..] -L dependency=[ROOT]/foo/target/debug/deps --force-warn=unused_crate_dependencies` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]) @@ -6580,7 +6589,7 @@ fn should_not_include_current_build_unit_path_in_rustc_args() { // Don't pass any `-L` args if there are no dependencies (including our own `out` dir) .with_stderr_data(str![[r#" [COMPILING] foo v0.0.1 ([ROOT]/foo) -[RUNNING] `rustc --crate-name foo [..] --out-dir [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out` +[RUNNING] `rustc --crate-name foo [..] --out-dir [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out --force-warn=unused_crate_dependencies` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]) @@ -6611,7 +6620,7 @@ fn should_not_include_build_script_out_dir_path_in_rustc_args() { [COMPILING] foo v0.0.1 ([ROOT]/foo) [RUNNING] `rustc --crate-name build_script_build [..]` [RUNNING] `[ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/build_script_build` -[RUNNING] `rustc --crate-name foo [..] --out-dir [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out` +[RUNNING] `rustc --crate-name foo [..] --out-dir [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out --force-warn=unused_crate_dependencies` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]) @@ -6756,6 +6765,9 @@ fn should_not_include_proc_macro_deps_paths_in_rustc_args() { [dependencies] my-proc-macro = { path = "my-proc-macro" } + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -6770,6 +6782,9 @@ fn should_not_include_proc_macro_deps_paths_in_rustc_args() { [lib] crate-type = ["dylib"] + + [lints.cargo] + default = "allow" "#, ) .file( @@ -6784,6 +6799,9 @@ fn should_not_include_proc_macro_deps_paths_in_rustc_args() { version = "0.1.0" edition = "2021" authors = [] + + [lints.cargo] + default = "allow" "#, ) .file( @@ -6805,6 +6823,9 @@ fn should_not_include_proc_macro_deps_paths_in_rustc_args() { [dependencies] my-dylib = { path = "../my-dylib" } my-rlib = { path = "../my-rlib" } + + [lints.cargo] + default = "allow" "#, ) .file( @@ -6837,7 +6858,7 @@ fn should_not_include_proc_macro_deps_paths_in_rustc_args() { [COMPILING] my-proc-macro v0.1.0 ([ROOT]/foo/my-proc-macro) [RUNNING] `rustc --crate-name my_proc_macro [..]` [COMPILING] foo v0.0.0 ([ROOT]/foo) -[RUNNING] `rustc --crate-name foo [..] --out-dir [ROOT]/foo/target/debug/build/foo/[HASH]/out -L dependency=[ROOT]/foo/target/debug/build/my-proc-macro/[HASH]/out --extern my_proc_macro=[ROOT]/foo/target/debug/build/my-proc-macro/[HASH]/out/[..]` +[RUNNING] `rustc --crate-name foo [..] --out-dir [ROOT]/foo/target/debug/build/foo/[HASH]/out -L dependency=[ROOT]/foo/target/debug/build/my-proc-macro/[HASH]/out --extern my_proc_macro=[ROOT]/foo/target/debug/build/my-proc-macro/[HASH]/out/[..] --force-warn=unused_crate_dependencies` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]].unordered()) diff --git a/tests/testsuite/build_dir.rs b/tests/testsuite/build_dir.rs index 719bfbace6d..01ab781e7f2 100644 --- a/tests/testsuite/build_dir.rs +++ b/tests/testsuite/build_dir.rs @@ -48,6 +48,7 @@ fn binary_with_debug() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -103,6 +104,7 @@ fn binary_with_release() { [ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/release/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/release/build/foo/[HASH]/out/foo[..].d @@ -215,6 +217,7 @@ fn should_default_to_target() { [ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/target/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/target/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/target/debug/foo[EXE] @@ -243,6 +246,7 @@ fn should_respect_env_var() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -302,6 +306,9 @@ fn cargo_tmpdir_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-test-integration-test-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-test-bin-foo [ROOT]/foo/build-dir/tmp/foo.txt [ROOT]/foo/build-dir/.rustc_info.json @@ -346,6 +353,7 @@ fn examples_should_output_to_build_dir_and_uplift_to_target_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/example-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/example-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-example-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -400,6 +408,8 @@ fn benches_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-test-bench-foo [ROOT]/foo/build-dir/.rustc_info.json "#]]); @@ -551,6 +561,7 @@ fn cargo_package_should_build_in_build_dir_and_output_to_target_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/foo[EXE] @@ -631,6 +642,7 @@ fn cargo_clean_should_clean_the_target_dir_and_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -704,12 +716,14 @@ fn cargo_clean_should_remove_correct_files() { [ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/lib-bar [ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/lib-bar.json -[ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] -[ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/output-lib-bar +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d "#]]); @@ -728,6 +742,7 @@ fn cargo_clean_should_remove_correct_files() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo "#]]); } @@ -861,6 +876,7 @@ fn template_workspace_root() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -909,6 +925,7 @@ fn template_cargo_cache_home() { [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -971,6 +988,7 @@ fn template_workspace_path_hash() { [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo[..].d @@ -1039,6 +1057,7 @@ fn template_workspace_path_hash_should_handle_symlink() { [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo.json +[ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/output-lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo-[HASH].d [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/libfoo-[HASH].rmeta @@ -1078,6 +1097,7 @@ fn template_workspace_path_hash_should_handle_symlink() { [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo.json +[ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/output-lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo-[HASH].d [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/libfoo-[HASH].rmeta @@ -1215,6 +1235,8 @@ CARGO_BIN_FILE_BAR_bar=[ROOT]/foo/build-dir/debug/build/bar/[HASH]/artifact/bin/ [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo +[ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/output-bin-bar +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/bar/[HASH]/artifact/bin/bar[..][EXE] [ROOT]/foo/build-dir/debug/build/bar/[HASH]/artifact/bin/bar[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] @@ -1398,6 +1420,7 @@ fn should_work_with_cargo_default_lib_metadata() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/run-build-script-build-script-build @@ -1409,6 +1432,7 @@ fn should_work_with_cargo_default_lib_metadata() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/build-script-build-script-build [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/build-script-build-script-build.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-build-script-build-script-build +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-build-script-build-script-build [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/build_script_build[EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/build_script_build.d @@ -1446,6 +1470,7 @@ fn new_layout_opt_out_nightly() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d @@ -1492,6 +1517,7 @@ fn new_layout_opt_out_stable() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d diff --git a/tests/testsuite/build_dir_fine_grain_locking.rs b/tests/testsuite/build_dir_fine_grain_locking.rs index 6bc0b27c2f8..b25304cf31c 100644 --- a/tests/testsuite/build_dir_fine_grain_locking.rs +++ b/tests/testsuite/build_dir_fine_grain_locking.rs @@ -47,6 +47,7 @@ fn binary_with_debug() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock @@ -103,6 +104,7 @@ fn binary_with_release() { [ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/release/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/release/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/release/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/release/build/foo/[HASH]/.lock @@ -216,6 +218,7 @@ fn should_default_to_target() { [ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/target/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/target/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/target/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/target/debug/foo[EXE] @@ -248,6 +251,7 @@ fn should_respect_env_var() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo "#]]); } @@ -309,6 +313,8 @@ fn build_script_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-build-script-build-script-build "#]]); } @@ -371,6 +377,9 @@ fn cargo_tmpdir_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock [ROOT]/foo/build-dir/tmp/foo.txt [ROOT]/foo/build-dir/.rustc_info.json +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-test-integration-test-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-test-bin-foo "#]]); @@ -413,6 +422,7 @@ fn examples_should_output_to_build_dir_and_uplift_to_target_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/example-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/example-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-example-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock @@ -471,6 +481,8 @@ fn benches_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock [ROOT]/foo/build-dir/.rustc_info.json +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-test-bench-foo "#]]); @@ -583,6 +595,7 @@ fn cargo_package_should_build_in_build_dir_and_output_to_target_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock @@ -664,6 +677,7 @@ fn cargo_clean_should_clean_the_target_dir_and_build_dir() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock @@ -744,6 +758,8 @@ fn cargo_clean_should_remove_correct_files() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/output-lib-bar +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/bar/[HASH]/.lock [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock @@ -765,6 +781,7 @@ fn cargo_clean_should_remove_correct_files() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo "#]]); } @@ -898,6 +915,7 @@ fn template_workspace_root() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock @@ -947,6 +965,7 @@ fn template_cargo_cache_home() { [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/home/.cargo/build-dir/debug/build/foo/[HASH]/.lock @@ -1010,6 +1029,7 @@ fn template_workspace_path_hash() { [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp +[ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/.lock @@ -1079,6 +1099,7 @@ fn template_workspace_path_hash_should_handle_symlink() { [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo.json +[ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/output-lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo-[HASH].d [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/libfoo-[HASH].rmeta [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/.lock @@ -1120,6 +1141,7 @@ fn template_workspace_path_hash_should_handle_symlink() { [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/invoked.timestamp [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/lib-foo.json +[ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/fingerprint/output-lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/foo-[HASH].d [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/out/libfoo-[HASH].rmeta [ROOT]/foo/foo/[HASH]/build-dir/debug/build/foo/[HASH]/.lock @@ -1259,6 +1281,8 @@ CARGO_BIN_FILE_BAR_bar=[ROOT]/foo/build-dir/debug/build/bar/[HASH]/artifact/bin/ [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/bin-foo.json [ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/dep-bin-foo +[ROOT]/foo/build-dir/debug/build/bar/[HASH]/fingerprint/output-bin-bar +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo [ROOT]/foo/build-dir/debug/build/bar/[HASH]/artifact/bin/bar[..][EXE] [ROOT]/foo/build-dir/debug/build/bar/[HASH]/artifact/bin/bar[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] @@ -1313,6 +1337,7 @@ fn new_layout_opt_out() { [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..][EXE] [ROOT]/foo/build-dir/debug/build/foo/[HASH]/out/foo[..].d [ROOT]/foo/build-dir/debug/build/foo/[HASH]/.lock +[ROOT]/foo/build-dir/debug/build/foo/[HASH]/fingerprint/output-bin-foo "#]]); diff --git a/tests/testsuite/build_dir_legacy.rs b/tests/testsuite/build_dir_legacy.rs index fb6c1b42f00..13f606d6fd2 100644 --- a/tests/testsuite/build_dir_legacy.rs +++ b/tests/testsuite/build_dir_legacy.rs @@ -48,6 +48,7 @@ fn binary_with_debug() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d @@ -103,6 +104,7 @@ fn binary_with_release() { [ROOT]/foo/build-dir/release/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/release/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/release/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/release/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/release/deps/foo[..][EXE] [ROOT]/foo/build-dir/release/deps/foo[..].d @@ -212,6 +214,7 @@ fn should_default_to_target() { [ROOT]/foo/target/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/target/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/target/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/target/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/target/debug/deps/foo[..][EXE] [ROOT]/foo/target/debug/deps/foo[..].d [ROOT]/foo/target/debug/foo[EXE] @@ -240,6 +243,7 @@ fn should_respect_env_var() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d @@ -286,6 +290,7 @@ fn build_script_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/.rustc_info.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/run-build-script-build-script-build [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/run-build-script-build-script-build.json @@ -293,6 +298,7 @@ fn build_script_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-build-script-build-script-build [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/build-script-build-script-build [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/build-script-build-script-build.json +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-build-script-build-script-build [ROOT]/foo/build-dir/debug/build/foo-[HASH]/build_script_build[..].d [ROOT]/foo/build-dir/debug/build/foo-[HASH]/build_script_build[..][EXE] [ROOT]/foo/build-dir/debug/build/foo-[HASH]/build-script-build[EXE] @@ -358,6 +364,9 @@ fn cargo_tmpdir_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-test-integration-test-foo +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-test-bin-foo [ROOT]/foo/build-dir/tmp/foo.txt [ROOT]/foo/build-dir/.rustc_info.json @@ -402,6 +411,7 @@ fn examples_should_output_to_build_dir_and_uplift_to_target_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/example-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/example-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-example-foo [ROOT]/foo/build-dir/debug/examples/foo[..][EXE] [ROOT]/foo/build-dir/debug/examples/foo[..].d @@ -454,6 +464,8 @@ fn benches_should_output_to_build_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-test-bench-foo [ROOT]/foo/build-dir/.rustc_info.json "#]]); @@ -607,6 +619,7 @@ fn cargo_package_should_build_in_build_dir_and_output_to_target_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d [ROOT]/foo/build-dir/debug/foo[EXE] @@ -687,6 +700,7 @@ fn cargo_clean_should_clean_the_target_dir_and_build_dir() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d @@ -754,12 +768,14 @@ fn cargo_clean_should_remove_correct_files() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d [ROOT]/foo/build-dir/debug/.fingerprint/bar-[HASH]/lib-bar [ROOT]/foo/build-dir/debug/.fingerprint/bar-[HASH]/lib-bar.json [ROOT]/foo/build-dir/debug/.fingerprint/bar-[HASH]/dep-lib-bar [ROOT]/foo/build-dir/debug/.fingerprint/bar-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/bar-[HASH]/output-lib-bar [ROOT]/foo/build-dir/debug/deps/bar[..].d [ROOT]/foo/build-dir/debug/deps/libbar[..].rlib [ROOT]/foo/build-dir/debug/deps/libbar[..].rmeta @@ -779,6 +795,7 @@ fn cargo_clean_should_remove_correct_files() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d @@ -914,6 +931,7 @@ fn template_workspace_root() { [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/build-dir/debug/deps/foo[..].d @@ -962,6 +980,7 @@ fn template_cargo_cache_home() { [ROOT]/home/.cargo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/home/.cargo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/home/.cargo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/home/.cargo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/home/.cargo/build-dir/debug/deps/foo[..][EXE] [ROOT]/home/.cargo/build-dir/debug/deps/foo[..].d @@ -1024,6 +1043,7 @@ fn template_workspace_path_hash() { [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/deps/foo[..][EXE] [ROOT]/foo/foo/[HASH]/build-dir/debug/deps/foo[..].d @@ -1092,6 +1112,7 @@ fn template_workspace_path_hash_should_handle_symlink() { [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/lib-foo.json +[ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/output-lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/deps/foo-[HASH].d [ROOT]/foo/foo/[HASH]/build-dir/debug/deps/libfoo-[HASH].rmeta @@ -1131,6 +1152,7 @@ fn template_workspace_path_hash_should_handle_symlink() { [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/lib-foo.json +[ROOT]/foo/foo/[HASH]/build-dir/debug/.fingerprint/foo-[HASH]/output-lib-foo [ROOT]/foo/foo/[HASH]/build-dir/debug/deps/foo-[HASH].d [ROOT]/foo/foo/[HASH]/build-dir/debug/deps/libfoo-[HASH].rmeta @@ -1269,6 +1291,8 @@ CARGO_BIN_FILE_BAR_bar=[ROOT]/foo/build-dir/debug/deps/artifact/bar-[HASH]/bin/b [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/bin-foo.json [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/dep-bin-foo [ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/invoked.timestamp +[ROOT]/foo/build-dir/debug/.fingerprint/bar-[HASH]/output-bin-bar +[ROOT]/foo/build-dir/debug/.fingerprint/foo-[HASH]/output-bin-foo [ROOT]/foo/build-dir/debug/deps/artifact/bar-[HASH]/bin/bar[..][EXE] [ROOT]/foo/build-dir/debug/deps/artifact/bar-[HASH]/bin/bar[..].d [ROOT]/foo/build-dir/debug/deps/foo[..][EXE] diff --git a/tests/testsuite/build_script.rs b/tests/testsuite/build_script.rs index 23ebcc80767..bef7928cf68 100644 --- a/tests/testsuite/build_script.rs +++ b/tests/testsuite/build_script.rs @@ -1289,6 +1289,9 @@ fn custom_build_script_rustc_flags() { [dependencies.foo] path = "foo" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -1302,6 +1305,9 @@ fn custom_build_script_rustc_flags() { edition = "2015" authors = ["wycats@example.com"] build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("foo/src/lib.rs", "") @@ -1326,9 +1332,9 @@ fn custom_build_script_rustc_flags() { [COMPILING] foo v0.5.0 ([ROOT]/foo/foo) [RUNNING] `rustc --crate-name build_script_build --edition=2015 foo/build.rs [..]` [RUNNING] `[ROOT]/foo/target/debug/build/foo-[HASH]/build-script-build` -[RUNNING] `rustc --crate-name foo --edition=2015 foo/src/lib.rs [..]-L dependency=[ROOT]/foo/target/debug/deps -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2 -l nonexistinglib` +[RUNNING] `rustc --crate-name foo --edition=2015 foo/src/lib.rs [..]-L dependency=[ROOT]/foo/target/debug/deps --force-warn=unused_crate_dependencies -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2 -l nonexistinglib` [COMPILING] bar v0.5.0 ([ROOT]/foo) -[RUNNING] `rustc --crate-name bar --edition=2015 src/main.rs [..]-L dependency=[ROOT]/foo/target/debug/deps --extern foo=[ROOT]/foo/target/debug/deps/libfoo-[HASH].rlib -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2` +[RUNNING] `rustc --crate-name bar --edition=2015 src/main.rs [..]-L dependency=[ROOT]/foo/target/debug/deps --extern foo=[ROOT]/foo/target/debug/deps/libfoo-[HASH].rlib --force-warn=unused_crate_dependencies -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]).run(); @@ -1349,6 +1355,9 @@ fn custom_build_script_rustc_flags_no_space() { [dependencies.foo] path = "foo" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") @@ -1362,6 +1371,9 @@ fn custom_build_script_rustc_flags_no_space() { edition = "2015" authors = ["wycats@example.com"] build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("foo/src/lib.rs", "") @@ -1385,9 +1397,9 @@ fn custom_build_script_rustc_flags_no_space() { [COMPILING] foo v0.5.0 ([ROOT]/foo/foo) [RUNNING] `rustc --crate-name build_script_build --edition=2015 foo/build.rs [..]` [RUNNING] `[ROOT]/foo/target/debug/build/foo-[HASH]/build-script-build` -[RUNNING] `rustc --crate-name foo --edition=2015 foo/src/lib.rs [..]-L dependency=[ROOT]/foo/target/debug/deps -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2 -l nonexistinglib` +[RUNNING] `rustc --crate-name foo --edition=2015 foo/src/lib.rs [..]-L dependency=[ROOT]/foo/target/debug/deps --force-warn=unused_crate_dependencies -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2 -l nonexistinglib` [COMPILING] bar v0.5.0 ([ROOT]/foo) -[RUNNING] `rustc --crate-name bar --edition=2015 src/main.rs [..]-L dependency=[ROOT]/foo/target/debug/deps --extern foo=[ROOT]/foo/target/debug/deps/libfoo-[HASH].rlib -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2` +[RUNNING] `rustc --crate-name bar --edition=2015 src/main.rs [..]-L dependency=[ROOT]/foo/target/debug/deps --extern foo=[ROOT]/foo/target/debug/deps/libfoo-[HASH].rlib --force-warn=unused_crate_dependencies -L [ROOT]/foo/dummy-path1 -L [ROOT]/foo/dummy-path2` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]).run(); @@ -1652,6 +1664,9 @@ fn overrides_and_links() { [dependencies.a] path = "a" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -1689,6 +1704,9 @@ fn overrides_and_links() { authors = [] links = "foo" build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -1843,6 +1861,9 @@ fn main() { name = "links" edition = "2024" links = "foo" + +[lints.cargo] +default = "allow" "#, ) .file("links/src/lib.rs", "") @@ -1856,6 +1877,9 @@ edition = "2024" [dependencies] links.path = "../links" + +[lints.cargo] +default = "allow" "#, ) .file("n/src/lib.rs", "") @@ -1869,6 +1893,9 @@ edition = "2024" [build-dependencies] links.path = "../links" + +[lints.cargo] +default = "allow" "#, ) .file("b/src/lib.rs", "") @@ -1882,6 +1909,9 @@ edition = "2024" [dev-dependencies] links.path = "../links" + +[lints.cargo] +default = "allow" "#, ) .file("d/src/lib.rs", "") @@ -2204,6 +2234,9 @@ fn with_patch() { [patch.crates-io] cxx = { path = "cxx" } + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -2216,6 +2249,9 @@ fn with_patch() { version = "1.0.0" edition = "2021" links = "cxx" + + [lints.cargo] + default = "allow" "#, ) .file("cxx/src/lib.rs", "") @@ -2432,6 +2468,9 @@ fn propagation_of_l_flags() { authors = [] [dependencies.a] path = "a" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -2448,6 +2487,9 @@ fn propagation_of_l_flags() { [dependencies.b] path = "../b" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -2465,6 +2507,9 @@ fn propagation_of_l_flags() { authors = [] links = "foo" build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("b/src/lib.rs", "") @@ -2507,6 +2552,9 @@ fn propagation_of_l_flags_new() { authors = [] [dependencies.a] path = "a" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -2523,6 +2571,9 @@ fn propagation_of_l_flags_new() { [dependencies.b] path = "../b" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -2544,6 +2595,9 @@ fn propagation_of_l_flags_new() { authors = [] links = "foo" build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("b/src/lib.rs", "") @@ -2606,7 +2660,7 @@ fn build_deps_simple() { [COMPILING] a v0.5.0 ([ROOT]/foo/a) [RUNNING] `rustc --crate-name a [..]` [COMPILING] foo v0.5.0 ([ROOT]/foo) -[RUNNING] `rustc --crate-name build_script_build [..] build.rs [..] --extern a=[ROOT]/foo/target/debug/deps/liba-[HASH].rlib` +[RUNNING] `rustc --crate-name build_script_build [..] build.rs [..] --extern a=[ROOT]/foo/target/debug/deps/liba-[HASH].rlib --force-warn=unused_crate_dependencies` [RUNNING] `[ROOT]/foo/target/debug/build/foo-[HASH]/build-script-build` [RUNNING] `rustc --crate-name foo [..]` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s @@ -2719,13 +2773,13 @@ fn build_cmd_with_a_build_cmd() { [COMPILING] b v0.5.0 ([ROOT]/foo/b) [RUNNING] `rustc --crate-name b [..]` [COMPILING] a v0.5.0 ([ROOT]/foo/a) -[RUNNING] `rustc --crate-name build_script_build [..] a/build.rs [..] --extern b=[ROOT]/foo/target/debug/deps/libb-[HASH].rlib` +[RUNNING] `rustc --crate-name build_script_build [..] a/build.rs [..] --extern b=[ROOT]/foo/target/debug/deps/libb-[HASH].rlib --force-warn=unused_crate_dependencies` [RUNNING] `[ROOT]/foo/target/debug/build/a-[HASH]/build-script-build` -[RUNNING] `rustc --crate-name a [..]a/src/lib.rs [..]--crate-type lib --emit=[..]link[..]-C metadata=[..] --out-dir [ROOT]/foo/target/debug/deps -L dependency=[ROOT]/foo/target/debug/deps` +[RUNNING] `rustc --crate-name a [..]a/src/lib.rs [..]--crate-type lib --emit=[..]link[..]-C metadata=[..] --out-dir [ROOT]/foo/target/debug/deps -L dependency=[ROOT]/foo/target/debug/deps --force-warn=unused_crate_dependencies` [COMPILING] foo v0.5.0 ([ROOT]/foo) -[RUNNING] `rustc --crate-name build_script_build --edition=2015 build.rs [..]--crate-type bin --emit=[..]link[..]-C metadata=[..] --out-dir [ROOT]/foo/target/debug/build/foo-[HASH] -L dependency=[ROOT]/foo/target/debug/deps --extern a=[ROOT]/foo/target/debug/deps/liba-[HASH].rlib` +[RUNNING] `rustc --crate-name build_script_build --edition=2015 build.rs [..]--crate-type bin --emit=[..]link[..]-C metadata=[..] --out-dir [ROOT]/foo/target/debug/build/foo-[HASH] -L dependency=[ROOT]/foo/target/debug/deps --extern a=[ROOT]/foo/target/debug/deps/liba-[HASH].rlib --force-warn=unused_crate_dependencies` [RUNNING] `[ROOT]/foo/target/debug/build/foo-[HASH]/build-script-build` -[RUNNING] `rustc --crate-name foo [..]src/lib.rs [..]--crate-type lib --emit=[..]-C debuginfo=2 [..]-C metadata=[..] --out-dir [ROOT]/foo/target/debug/deps -L dependency=[ROOT]/foo/target/debug/deps` +[RUNNING] `rustc --crate-name foo [..]src/lib.rs [..]--crate-type lib --emit=[..]-C debuginfo=2 [..]-C metadata=[..] --out-dir [ROOT]/foo/target/debug/deps -L dependency=[ROOT]/foo/target/debug/deps --force-warn=unused_crate_dependencies` [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]).run(); @@ -3937,6 +3991,9 @@ fn diamond_passes_args_only_once() { [dependencies] a = { path = "a" } b = { path = "b" } + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -3952,6 +4009,9 @@ fn diamond_passes_args_only_once() { [dependencies] b = { path = "../b" } c = { path = "../c" } + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -3965,6 +4025,9 @@ fn diamond_passes_args_only_once() { authors = [] [dependencies] c = { path = "../c" } + + [lints.cargo] + default = "allow" "#, ) .file("b/src/lib.rs", "") @@ -3977,6 +4040,9 @@ fn diamond_passes_args_only_once() { edition = "2015" authors = [] build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file( @@ -4839,6 +4905,9 @@ fn warnings_emitted_from_path_dep() { [dependencies] a = { path = "a" } + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -4851,6 +4920,9 @@ fn warnings_emitted_from_path_dep() { edition = "2015" authors = [] build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("a/src/lib.rs", "") @@ -5082,6 +5154,9 @@ fn warnings_hidden_for_upstream() { edition = "2015" authors = [] build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -5099,6 +5174,9 @@ fn warnings_hidden_for_upstream() { [dependencies] bar = "*" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -5143,6 +5221,9 @@ fn warnings_printed_on_vv() { edition = "2015" authors = [] build = "build.rs" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -5160,6 +5241,9 @@ fn warnings_printed_on_vv() { [dependencies] bar = "*" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") @@ -6304,6 +6388,9 @@ fn rerun_if_published_directory() { [dependencies] mylib-sys = "1.0.0" + + [lints.cargo] + default = "allow" "#, ) .file("src/main.rs", "fn main() {}") diff --git a/tests/testsuite/build_script_extra_link_arg.rs b/tests/testsuite/build_script_extra_link_arg.rs index 7d0236ba1dd..6b57642ecb1 100644 --- a/tests/testsuite/build_script_extra_link_arg.rs +++ b/tests/testsuite/build_script_extra_link_arg.rs @@ -266,6 +266,9 @@ fn link_arg_transitive_not_allowed() { [dependencies] bar = "1.0" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") diff --git a/tests/testsuite/cache_messages.rs b/tests/testsuite/cache_messages.rs index e16c1ca0787..dca17c8d688 100644 --- a/tests/testsuite/cache_messages.rs +++ b/tests/testsuite/cache_messages.rs @@ -229,6 +229,9 @@ fn very_verbose() { [dependencies] bar = "1.0" + + [lints.cargo] + default = "allow" "#, ) .file("src/lib.rs", "") diff --git a/tests/testsuite/cargo/z_help/stdout.term.svg b/tests/testsuite/cargo/z_help/stdout.term.svg index f8f602766b3..356948d9158 100644 --- a/tests/testsuite/cargo/z_help/stdout.term.svg +++ b/tests/testsuite/cargo/z_help/stdout.term.svg @@ -1,4 +1,4 @@ - +