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:
commit
eb03a3e3f9
@ -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:
|
||||
// ```
|
||||
|
8
tests/ui/attr-bad-crate-attr.stderr
Normal file
8
tests/ui/attr-bad-crate-attr.stderr
Normal 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
|
||||
|
@ -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() {}
|
1
tests/ui/extern/auxiliary/invalid-utf8.txt
vendored
1
tests/ui/extern/auxiliary/invalid-utf8.txt
vendored
@ -1 +0,0 @@
|
||||
<EFBFBD>(
|
@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||
</AutoVisualizer>
|
@ -1,4 +0,0 @@
|
||||
#![crate_type = "lib"]
|
||||
|
||||
#[path = "issue-3136-a.rs"]
|
||||
pub mod issue_3136_a;
|
@ -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 }
|
||||
|
@ -1,5 +1,5 @@
|
||||
// run-pass
|
||||
// aux-build:issue-3136-a.rc
|
||||
// aux-build:issue-3136-a.rs
|
||||
|
||||
// pretty-expanded FIXME #23616
|
||||
|
||||
|
@ -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() {}
|
||||
|
@ -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() {
|
||||
}
|
@ -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`.
|
||||
|
Loading…
Reference in New Issue
Block a user