Skip to content

Commit

Permalink
Auto merge of #13925 - epage:lint-config, r=weihanglo
Browse files Browse the repository at this point in the history
[beta-1.79] fix(toml): Don't warn on lints.rust.unexpected_cfgs.check-cfg

Beta backports:
- #13913 (sort of): removes just the lint warning (in a different way to be minimal) so we reduce warning noise for people using this key on nightly

In order to make CI pass, the following PRs are also cherry-picked:
- #13865
- #13834 (only `time` due to rust-lang/rust#125319)
- #13901
- #13931
- #13920
- #13890
- disable link check (not a cherry pick)
  • Loading branch information
bors committed May 22, 2024
2 parents 8a73841 + 67aa704 commit 92f61d0
Show file tree
Hide file tree
Showing 15 changed files with 161 additions and 32 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -256,11 +256,11 @@ jobs:
curl -Lf https://github.com/rust-lang/mdBook/releases/download/v0.4.37/mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
echo `pwd`/mdbook >> $GITHUB_PATH
- run: cd src/doc && mdbook build --dest-dir ../../target/doc
- name: Run linkchecker.sh
run: |
cd target
curl -sSLO https://raw.githubusercontent.com/rust-lang/rust/master/src/tools/linkchecker/linkcheck.sh
sh linkcheck.sh --all --path ../src/doc cargo
# - name: Run linkchecker.sh
# run: |
# cd target
# curl -sSLO https://raw.githubusercontent.com/rust-lang/rust/master/src/tools/linkchecker/linkcheck.sh
# sh linkcheck.sh --all --path ../src/doc cargo

msrv:
runs-on: ubuntu-latest
Expand Down
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ snapbox = { version = "0.5.9", features = ["diff", "path", "term-svg"] }
tar = { version = "0.4.40", default-features = false }
tempfile = "3.10.1"
thiserror = "1.0.58"
time = { version = "0.3", features = ["parsing", "formatting", "serde"] }
time = { version = "0.3.36", features = ["parsing", "formatting", "serde"] }
toml = "0.8.12"
toml_edit = { version = "0.22.11", features = ["serde"] }
tracing = "0.1.40" # be compatible with rustc_log: https://github.com/rust-lang/rust/blob/e51e98dde6a/compiler/rustc_log/Cargo.toml#L9
Expand Down
1 change: 1 addition & 0 deletions crates/cargo-test-support/build.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#![allow(clippy::disallowed_methods)]

fn main() {
println!("cargo:rustc-check-cfg=cfg(emulate_second_only_system)");
println!(
"cargo:rustc-env=NATIVE_ARCH={}",
std::env::var("TARGET").unwrap()
Expand Down
8 changes: 4 additions & 4 deletions crates/cargo-test-support/containers/apache/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ COPY bar /repos/bar
WORKDIR /repos/bar
RUN git config --global user.email "testuser@example.com" &&\
git config --global user.name "Test User" &&\
git config --system --add safe.directory '*' &&\
git init -b master . &&\
git add Cargo.toml src &&\
git commit -m "Initial commit" &&\
mv .git ../bar.git &&\
cd ../bar.git &&\
git config --bool core.bare true &&\
rm -rf ../bar
cd .. &&\
git clone --bare bar bar.git &&\
rm -rf bar
WORKDIR /

EXPOSE 443
Expand Down
7 changes: 3 additions & 4 deletions crates/cargo-test-support/containers/sshd/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@ RUN git config --global user.email "testuser@example.com" &&\
git init -b master . &&\
git add Cargo.toml src &&\
git commit -m "Initial commit" &&\
mv .git ../bar.git &&\
cd ../bar.git &&\
git config --bool core.bare true &&\
rm -rf ../bar
cd .. &&\
git clone --bare bar bar.git &&\
rm -rf bar
WORKDIR /
USER root

Expand Down
2 changes: 1 addition & 1 deletion crates/rustfix/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rustfix"
version = "0.8.3"
version = "0.8.4"
authors = [
"Pascal Hertleif <killercup@gmail.com>",
"Oliver Schneider <oli-obk@users.noreply.github.com>",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::{HashSet};
use std::collections::HashSet;

fn main() {
let _: HashSet<()>;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"$message_type": "diagnostic",
"message": "unused imports: `HashMap`, `VecDeque`",
"code": {
"code": "unused_imports",
Expand All @@ -7,7 +8,7 @@
"level": "warning",
"spans": [
{
"file_name": "src/main.rs",
"file_name": "./tests/everything/multiple-solutions.nightly.rs",
"byte_start": 23,
"byte_end": 30,
"line_start": 1,
Expand All @@ -28,7 +29,7 @@
"expansion": null
},
{
"file_name": "src/main.rs",
"file_name": "./tests/everything/multiple-solutions.nightly.rs",
"byte_start": 41,
"byte_end": 49,
"line_start": 1,
Expand All @@ -51,7 +52,7 @@
],
"children": [
{
"message": "#[warn(unused_imports)] on by default",
"message": "`#[warn(unused_imports)]` on by default",
"code": null,
"level": "note",
"spans": [],
Expand All @@ -64,7 +65,28 @@
"level": "help",
"spans": [
{
"file_name": "src/main.rs",
"file_name": "./tests/everything/multiple-solutions.nightly.rs",
"byte_start": 22,
"byte_end": 23,
"line_start": 1,
"line_end": 1,
"column_start": 23,
"column_end": 24,
"is_primary": true,
"text": [
{
"text": "use std::collections::{HashMap, HashSet, VecDeque};",
"highlight_start": 23,
"highlight_end": 24
}
],
"label": null,
"suggested_replacement": "",
"suggestion_applicability": "MachineApplicable",
"expansion": null
},
{
"file_name": "./tests/everything/multiple-solutions.nightly.rs",
"byte_start": 23,
"byte_end": 32,
"line_start": 1,
Expand All @@ -85,7 +107,7 @@
"expansion": null
},
{
"file_name": "src/main.rs",
"file_name": "./tests/everything/multiple-solutions.nightly.rs",
"byte_start": 39,
"byte_end": 49,
"line_start": 1,
Expand All @@ -104,11 +126,41 @@
"suggested_replacement": "",
"suggestion_applicability": "MachineApplicable",
"expansion": null
},
{
"file_name": "./tests/everything/multiple-solutions.nightly.rs",
"byte_start": 49,
"byte_end": 50,
"line_start": 1,
"line_end": 1,
"column_start": 50,
"column_end": 51,
"is_primary": true,
"text": [
{
"text": "use std::collections::{HashMap, HashSet, VecDeque};",
"highlight_start": 50,
"highlight_end": 51
}
],
"label": null,
"suggested_replacement": "",
"suggestion_applicability": "MachineApplicable",
"expansion": null
}
],
"children": [],
"rendered": null
}
],
"rendered": "warning: unused imports: `HashMap`, `VecDeque`\n --> src/main.rs:1:24\n |\n1 | use std::collections::{HashMap, HashSet, VecDeque};\n | ^^^^^^^ ^^^^^^^^\n |\n = note: #[warn(unused_imports)] on by default\nhelp: remove the unused imports\n |\n1 | use std::collections::{HashSet};\n | -- --\n\n"
"rendered": "warning: unused imports: `HashMap`, `VecDeque`\n --> ./tests/everything/multiple-solutions.nightly.rs:1:24\n |\n1 | use std::collections::{HashMap, HashSet, VecDeque};\n | ^^^^^^^ ^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` on by default\n\n"
}
{
"$message_type": "diagnostic",
"message": "1 warning emitted",
"code": null,
"level": "warning",
"spans": [],
"children": [],
"rendered": "warning: 1 warning emitted\n\n"
}
33 changes: 33 additions & 0 deletions crates/rustfix/tests/parse_and_replace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,26 @@ mod settings {
pub const BLESS: &str = "RUSTFIX_TEST_BLESS";
}

static mut VERSION: (u32, bool) = (0, false);

// Temporarily copy from `cargo_test_macro::version`.
fn version() -> (u32, bool) {
static INIT: std::sync::Once = std::sync::Once::new();
INIT.call_once(|| {
let output = Command::new("rustc")
.arg("-V")
.output()
.expect("cargo should run");
let stdout = std::str::from_utf8(&output.stdout).expect("utf8");
let vers = stdout.split_whitespace().skip(1).next().unwrap();
let is_nightly = option_env!("CARGO_TEST_DISABLE_NIGHTLY").is_none()
&& (vers.contains("-nightly") || vers.contains("-dev"));
let minor = vers.split('.').skip(1).next().unwrap().parse().unwrap();
unsafe { VERSION = (minor, is_nightly) }
});
unsafe { VERSION }
}

fn compile(file: &Path) -> Result<Output, Error> {
let tmp = tempdir()?;

Expand Down Expand Up @@ -220,7 +240,20 @@ fn assert_fixtures(dir: &str, mode: &str) {
.unwrap();
let mut failures = 0;

let is_not_nightly = !version().1;

for file in &files {
if file
.file_stem()
.unwrap()
.to_str()
.unwrap()
.ends_with(".nightly")
&& is_not_nightly
{
info!("skipped: {file:?}");
continue;
}
if let Err(err) = test_rustfix_with_file(file, mode) {
println!("failed: {}", file.display());
warn!("{:?}", err);
Expand Down
5 changes: 5 additions & 0 deletions src/cargo/util/toml/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2356,6 +2356,11 @@ fn deprecated_underscore<T>(

fn warn_on_unused(unused: &BTreeSet<String>, warnings: &mut Vec<String>) {
for key in unused {
if key == "lints.rust.unexpected_cfgs.check-cfg" {
// This key is recognized in the following version and wanting to reduce warning noise
// for those users
continue;
}
warnings.push(format!("unused manifest key: {}", key));
if key == "profiles.debug" {
warnings.push("use `[profile.dev]` to configure debug builds".to_string());
Expand Down
6 changes: 3 additions & 3 deletions tests/testsuite/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,9 @@ fn many_similar_names() {
.build();

p.cargo("bench")
.with_stdout_contains("test bin_bench ... bench: 0 ns/iter (+/- 0)")
.with_stdout_contains("test lib_bench ... bench: 0 ns/iter (+/- 0)")
.with_stdout_contains("test bench_bench ... bench: 0 ns/iter (+/- 0)")
.with_stdout_contains("test bin_bench ... bench:[..]")
.with_stdout_contains("test lib_bench ... bench:[..]")
.with_stdout_contains("test bench_bench ... bench:[..]")
.run();
}

Expand Down
28 changes: 28 additions & 0 deletions tests/testsuite/check_cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,34 @@ fn build_script_feature_gate() {
.run();
}

#[cargo_test]
fn config_simple() {
let p = project()
.file(
"Cargo.toml",
r#"
[package]
name = "foo"
version = "0.1.0"
edition = "2015"
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(has_foo)", "cfg(has_bar, values(\"yes\", \"no\"))"] }
"#,
)
.file("src/main.rs", "fn main() {}")
.build();

p.cargo("check")
.with_stderr(
"\
[CHECKING] foo v0.1.0 ([CWD])
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [..]s
",
)
.run();
}

#[cargo_test(nightly, reason = "--check-cfg is unstable")]
fn config_valid() {
let p = project()
Expand Down
15 changes: 13 additions & 2 deletions tests/testsuite/standard_lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,19 @@ fn setup() -> Setup {
args.push(env::var("REAL_SYSROOT").unwrap());
} else if args.iter().any(|arg| arg == "--target") {
// build-std target unit
args.push("--sysroot".to_string());
args.push("/path/to/nowhere".to_string());
//
// This `--sysroot` is here to disable the sysroot lookup,
// to ensure nothing is required.
// See https://github.com/rust-lang/wg-cargo-std-aware/issues/31
// for more information on this.
//
// FIXME: this is broken on x86_64-unknown-linux-gnu
// due to https://github.com/rust-lang/rust/pull/124129,
// because it requires lld in the sysroot. See
// https://github.com/rust-lang/rust/issues/125246 for
// more information.
// args.push("--sysroot".to_string());
// args.push("/path/to/nowhere".to_string());
} else {
// host unit, do not use sysroot
}
Expand Down

0 comments on commit 92f61d0

Please sign in to comment.