Auto merge of #111363 - asquared31415:tidy_no_random_ui_tests, r=fee1-dead

Add a tidy check to find unexpected files in UI tests, and clean up the results

While looking at UI tests, I noticed several weird files that were not being tested, some from even pre-1.0. I added a tidy check that fails if any files not known to compiletest or not used in tests (via manual list) are present in the ui tests.

Unfortunately the root entry limit had to be raised by 1 to accommodate the stderr file for one of the tests.

r? `@fee1-dead`
This commit is contained in:
bors 2023-05-13 21:34:05 +00:00
commit eb03a3e3f9
12 changed files with 82 additions and 40 deletions

View File

@ -4,13 +4,38 @@
use ignore::Walk;
use std::collections::HashMap;
use std::ffi::OsStr;
use std::fs;
use std::path::{Path, PathBuf};
const ENTRY_LIMIT: usize = 900;
// FIXME: The following limits should be reduced eventually.
const ISSUES_ENTRY_LIMIT: usize = 1920;
const ROOT_ENTRY_LIMIT: usize = 895;
const ROOT_ENTRY_LIMIT: usize = 896;
const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[
"rs", // test source files
"stderr", // expected stderr file, corresponds to a rs file
"stdout", // expected stdout file, corresponds to a rs file
"fixed", // expected source file after applying fixes
"md", // test directory descriptions
"ftl", // translation tests
];
const EXTENSION_EXCEPTION_PATHS: &[&str] = &[
"tests/ui/asm/named-asm-labels.s", // loading an external asm file to test named labels lint
"tests/ui/check-cfg/my-awesome-platform.json", // testing custom targets with cfgs
"tests/ui/commandline-argfile-badutf8.args", // passing args via a file
"tests/ui/commandline-argfile.args", // passing args via a file
"tests/ui/crate-loading/auxiliary/libfoo.rlib", // testing loading a manually created rlib
"tests/ui/include-macros/data.bin", // testing including data with the include macros
"tests/ui/include-macros/file.txt", // testing including data with the include macros
"tests/ui/macros/macro-expanded-include/file.txt", // testing including data with the include macros
"tests/ui/macros/not-utf8.bin", // testing including data with the include macros
"tests/ui/macros/syntax-extension-source-utils-files/includeme.fragment", // more include
"tests/ui/unused-crate-deps/test.mk", // why would you use make
"tests/ui/proc-macro/auxiliary/included-file.txt", // more include
];
fn check_entries(tests_path: &Path, bad: &mut bool) {
let mut directories: HashMap<PathBuf, usize> = HashMap::new();
@ -66,7 +91,14 @@ pub fn check(path: &Path, bad: &mut bool) {
let paths = [ui.as_path(), ui_fulldeps.as_path()];
crate::walk::walk_no_read(&paths, |_, _| false, &mut |entry| {
let file_path = entry.path();
if let Some(ext) = file_path.extension() {
if let Some(ext) = file_path.extension().and_then(OsStr::to_str) {
// files that are neither an expected extension or an exception should not exist
// they're probably typos or not meant to exist
if !(EXPECTED_TEST_FILE_EXTENSIONS.contains(&ext)
|| EXTENSION_EXCEPTION_PATHS.iter().any(|path| file_path.ends_with(path)))
{
tidy_error!(bad, "file {} has unexpected extension {}", file_path.display(), ext);
}
if ext == "stderr" || ext == "stdout" {
// Test output filenames have one of the formats:
// ```

View File

@ -0,0 +1,8 @@
error: expected item after attributes
--> $DIR/attr-bad-crate-attr.rs:4:1
|
LL | #[attr = "val"] // Unterminated
| ^^^^^^^^^^^^^^^
error: aborting due to previous error

View File

@ -1,24 +1,26 @@
// run-pass
// Regression test for a problem with the first mod attribute
// being applied to every mod
// pretty-expanded FIXME #23616
#[cfg(target_os = "linux")]
mod hello;
mod hello {}
#[cfg(target_os = "macos")]
mod hello;
mod hello {}
#[cfg(target_os = "windows")]
mod hello;
mod hello {}
#[cfg(target_os = "freebsd")]
mod hello;
mod hello {}
#[cfg(target_os = "dragonfly")]
mod hello;
mod hello {}
#[cfg(target_os = "android")]
mod hello;
mod hello {}
pub fn main() { }
fn main() {}

View File

@ -1 +0,0 @@
<EFBFBD>(

View File

@ -1,3 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
</AutoVisualizer>

View File

@ -1,4 +0,0 @@
#![crate_type = "lib"]
#[path = "issue-3136-a.rs"]
pub mod issue_3136_a;

View File

@ -1,11 +1,14 @@
#![crate_type = "lib"]
trait x {
fn use_x<T>(&self);
}
struct y(());
impl x for y {
fn use_x<T>(&self) {
struct foo { //~ ERROR quux
i: ()
struct foo {
//~ ERROR quux
i: (),
}
fn new_foo<T>(i: ()) -> foo {
foo { i: i }

View File

@ -1,5 +1,5 @@
// run-pass
// aux-build:issue-3136-a.rc
// aux-build:issue-3136-a.rs
// pretty-expanded FIXME #23616

View File

@ -1,11 +1,15 @@
extern crate core;
fn assert_send<T:Send>() { }
fn assert_send<T: Send>() {}
fn test70() {
assert_send::<*mut isize>();
//~^ ERROR `*mut isize` cannot be sent between threads safely
}
fn test71<'a>() {
assert_send::<*mut &'a isize>();
//~^ ERROR `*mut &'a isize` cannot be sent between threads safely
}
fn main() {
}
fn main() {}

View File

@ -1,12 +0,0 @@
fn assert_send<T:Send>() { }
// unsafe ptrs are ok unless they point at unsendable things
fn test70() {
assert_send::<*mut int>();
}
fn test71<'a>() {
assert_send::<*mut &'a int>(); //~ ERROR does not fulfill the required lifetime
}
fn main() {
}

View File

@ -1,16 +1,29 @@
error[E0277]: `*mut &'a isize` cannot be sent between threads safely
error[E0277]: `*mut isize` cannot be sent between threads safely
--> $DIR/kindck-send-unsafe.rs:6:19
|
LL | assert_send::<*mut isize>();
| ^^^^^^^^^^ `*mut isize` cannot be sent between threads safely
|
= help: the trait `Send` is not implemented for `*mut isize`
note: required by a bound in `assert_send`
--> $DIR/kindck-send-unsafe.rs:3:19
|
LL | fn assert_send<T: Send>() {}
| ^^^^ required by this bound in `assert_send`
error[E0277]: `*mut &'a isize` cannot be sent between threads safely
--> $DIR/kindck-send-unsafe.rs:11:19
|
LL | assert_send::<*mut &'a isize>();
| ^^^^^^^^^^^^^^ `*mut &'a isize` cannot be sent between threads safely
|
= help: the trait `Send` is not implemented for `*mut &'a isize`
note: required by a bound in `assert_send`
--> $DIR/kindck-send-unsafe.rs:3:18
--> $DIR/kindck-send-unsafe.rs:3:19
|
LL | fn assert_send<T:Send>() { }
| ^^^^ required by this bound in `assert_send`
LL | fn assert_send<T: Send>() {}
| ^^^^ required by this bound in `assert_send`
error: aborting due to previous error
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0277`.