Auto merge of #63029 - petrochenkov:rpass, r=Centril

Move run-pass tests to ui

This is the second attempt at doing https://github.com/rust-lang/rust/pull/53994 (which was previously reverted in https://github.com/rust-lang/rust/pull/54530).

The issue with inability to run the test suite in a faster way (https://github.com/rust-lang/rust/issues/54047) that motivated the revert was recently addressed by https://github.com/rust-lang/rust/pull/61755.

r? @Centril
This commit is contained in:
bors 2019-07-27 19:27:36 +00:00
commit c798dffac9
3336 changed files with 1176 additions and 325 deletions

View File

@ -55,11 +55,11 @@ The script accepts commands, flags, and arguments to determine what to do:
# run all unit tests
./x.py test
# execute the run-pass test suite
./x.py test src/test/run-pass
# execute the UI test suite
./x.py test src/test/ui
# execute only some tests in the run-pass test suite
./x.py test src/test/run-pass --test-args substring-of-test-name
# execute only some tests in the UI test suite
./x.py test src/test/ui --test-args substring-of-test-name
# execute tests in the standard library in stage0
./x.py test --stage 0 src/libstd
@ -215,7 +215,7 @@ build/
# Output for all compiletest-based test suites
test/
run-pass/
ui/
compile-fail/
debuginfo/
...

View File

@ -371,7 +371,6 @@ impl<'a> Builder<'a> {
Kind::Test => describe!(
test::Tidy,
test::Ui,
test::RunPass,
test::CompileFail,
test::RunFail,
test::RunPassValgrind,
@ -382,10 +381,8 @@ impl<'a> Builder<'a> {
test::Incremental,
test::Debuginfo,
test::UiFullDeps,
test::RunPassFullDeps,
test::Rustdoc,
test::Pretty,
test::RunPassPretty,
test::RunFailPretty,
test::RunPassValgrindPretty,
test::Crate,

View File

@ -629,7 +629,6 @@ fn test_with_no_doc_stage0() {
fn test_exclude() {
let mut config = configure(&[], &[]);
config.exclude = vec![
"src/test/run-pass".into(),
"src/tools/tidy".into(),
];
config.cmd = Subcommand::Test {
@ -648,11 +647,9 @@ fn test_exclude() {
let builder = Builder::new(&build);
builder.run_step_descriptions(&Builder::get_step_descriptions(Kind::Test), &[]);
// Ensure we have really excluded run-pass & tidy
assert!(!builder.cache.contains::<test::RunPass>());
// Ensure we have really excluded tidy
assert!(!builder.cache.contains::<test::Tidy>());
// Ensure other tests are not affected.
assert!(builder.cache.contains::<test::RunPassFullDeps>());
assert!(builder.cache.contains::<test::RustdocUi>());
}

View File

@ -330,7 +330,7 @@ Arguments:
This subcommand accepts a number of paths to directories to tests that
should be compiled and run. For example:
./x.py test src/test/run-pass
./x.py test src/test/ui
./x.py test src/libstd --test-args hash_map
./x.py test src/libstd --stage 0 --no-doc
./x.py test src/test/ui --bless

View File

@ -48,10 +48,8 @@ check:
$(Q)$(BOOTSTRAP) test $(BOOTSTRAP_ARGS)
check-aux:
$(Q)$(BOOTSTRAP) test \
src/test/run-pass/pretty \
src/test/run-fail/pretty \
src/test/run-pass-valgrind/pretty \
src/test/run-pass-fulldeps/pretty \
$(AUX_ARGS) \
$(BOOTSTRAP_ARGS)
check-bootstrap:
@ -75,9 +73,7 @@ check-stage2-T-x86_64-unknown-linux-musl-H-x86_64-unknown-linux-gnu:
TESTS_IN_2 := \
src/test/ui \
src/test/run-pass \
src/test/compile-fail \
src/test/run-pass-fulldeps \
src/tools/linkchecker
ci-subset-1:

View File

@ -547,7 +547,7 @@ impl Step for TestHelpers {
}
/// Compiles the `rust_test_helpers.c` library which we used in various
/// `run-pass` test suites for ABI testing.
/// `run-pass` tests for ABI testing.
fn run(self, builder: &Builder<'_>) {
if builder.config.dry_run {
return;

View File

@ -820,13 +820,6 @@ default_test_with_compare_mode!(Ui {
compare_mode: "nll"
});
default_test_with_compare_mode!(RunPass {
path: "src/test/run-pass",
mode: "run-pass",
suite: "run-pass",
compare_mode: "nll"
});
default_test!(CompileFail {
path: "src/test/compile-fail",
mode: "compile-fail",
@ -881,12 +874,6 @@ host_test!(UiFullDeps {
suite: "ui-fulldeps"
});
host_test!(RunPassFullDeps {
path: "src/test/run-pass-fulldeps",
mode: "run-pass",
suite: "run-pass-fulldeps"
});
host_test!(Rustdoc {
path: "src/test/rustdoc",
mode: "rustdoc",
@ -898,13 +885,6 @@ host_test!(Pretty {
mode: "pretty",
suite: "pretty"
});
test!(RunPassPretty {
path: "src/test/run-pass/pretty",
mode: "pretty",
suite: "run-pass",
default: false,
host: true
});
test!(RunFailPretty {
path: "src/test/run-fail/pretty",
mode: "pretty",

View File

@ -32,7 +32,7 @@ ENV TARGETS=asmjs-unknown-emscripten
ENV RUST_CONFIGURE_ARGS --enable-emscripten --disable-optimize-tests
ENV SCRIPT python2.7 ../x.py test --target $TARGETS \
src/test/run-pass \
src/test/ui \
src/test/run-fail \
src/libstd \
src/liballoc \

View File

@ -43,7 +43,6 @@ ENV WASM_TARGETS=wasm32-unknown-unknown
ENV WASM_SCRIPT python2.7 /checkout/x.py test --target $WASM_TARGETS \
src/test/run-make \
src/test/ui \
src/test/run-pass \
src/test/compile-fail \
src/test/mir-opt \
src/test/codegen-units \

View File

@ -44,7 +44,7 @@ code that manipulates syntax trees at
compile time.
Let's write a plugin
[`roman_numerals.rs`](https://github.com/rust-lang/rust/blob/master/src/test/run-pass-fulldeps/auxiliary/roman_numerals.rs)
[`roman_numerals.rs`](https://github.com/rust-lang/rust/blob/master/src/test/ui-fulldeps/auxiliary/roman_numerals.rs)
that implements Roman numeral integer literals.
```rust,ignore

View File

@ -2172,5 +2172,5 @@ impl<T: ?Sized + Debug> Debug for UnsafeCell<T> {
}
}
// If you expected tests to be here, look instead at the run-pass/ifmt.rs test,
// If you expected tests to be here, look instead at the ui/ifmt.rs test,
// it's a lot easier than creating all of the rt::Piece structures here.

View File

@ -747,7 +747,7 @@ However, it is not always unsafe to freeze the base pointer. In
particular, if the referent is frozen, there is no harm in it:
```rust
// src/test/run-pass/borrowck-borrow-of-mut-base-ptr-safe.rs
// src/test/ui/borrowck-borrow-of-mut-base-ptr-safe.rs
fn foo<'a>(mut t0: &'a mut i32,
mut t1: &'a mut i32) {
let p: &i32 = &*t0; // Freezes `*t0`
@ -763,7 +763,7 @@ already frozen. In particular, we cannot assign to `*t0` through the
new alias `t2`, as demonstrated in this test case:
```rust
// src/test/run-pass/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs
// src/test/ui/borrowck-borrow-mut-base-ptr-in-aliasable-loc.rs
fn foo(t0: & &mut i32) {
let t1 = t0;
let p: &i32 = &**t0;

View File

@ -88,7 +88,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
// For each ampersand peeled off, update the binding mode and push the original
// type into the adjustments vector.
//
// See the examples in `run-pass/match-defbm*.rs`.
// See the examples in `ui/match-defbm*.rs`.
let mut pat_adjustments = vec![];
while let ty::Ref(_, inner_ty, inner_mutability) = exp_ty.sty {
debug!("inspecting {:?}", exp_ty);

View File

@ -13,7 +13,7 @@
//! useful for freezing mut/const things (that is, when the expected is &T
//! but you have &const T or &mut T) and also for avoiding the linearity
//! of mut things (when the expected is &mut T and you have &mut T). See
//! the various `src/test/run-pass/coerce-reborrow-*.rs` tests for
//! the various `src/test/ui/coerce-reborrow-*.rs` tests for
//! examples of where this is useful.
//!
//! ## Subtle note
@ -346,7 +346,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
// too strong. Consider a coercion from `&'a &'x Rc<T>` to
// `&'b T`. In this case, `'a` is actually irrelevant.
// The pointer we want is `LUB('x, 'b`). If we choose `LUB('a,'b)`
// we get spurious errors (`run-pass/regions-lub-ref-ref-rc.rs`).
// we get spurious errors (`ui/regions-lub-ref-ref-rc.rs`).
// (The errors actually show up in borrowck, typically, because
// this extra edge causes the region `'a` to be inferred to something
// too big, which then results in borrowck errors.)

View File

@ -1394,7 +1394,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> {
/// probe. This will result in a pending obligation so when more type-info is available we can
/// make the final decision.
///
/// Example (`src/test/run-pass/method-two-trait-defer-resolution-1.rs`):
/// Example (`src/test/ui/method-two-trait-defer-resolution-1.rs`):
///
/// ```
/// trait Foo { ... }

View File

@ -312,7 +312,7 @@ impl<'a, 'tcx> Expectation<'tcx> {
/// It is only the `&[1, 2, 3]` expression as a whole that can be coerced
/// to the type `&[isize]`. Therefore, we propagate this more limited hint,
/// which still is useful, because it informs integer literals and the like.
/// See the test case `test/run-pass/coerce-expect-unsized.rs` and #20169
/// See the test case `test/ui/coerce-expect-unsized.rs` and #20169
/// for examples of where this comes up,.
fn rvalue_hint(fcx: &FnCtxt<'a, 'tcx>, ty: Ty<'tcx>) -> Expectation<'tcx> {
match fcx.tcx.struct_tail_without_normalization(ty).sty {

View File

@ -1742,6 +1742,6 @@ mod tests {
assert!(thread::current().id() != spawned_id);
}
// NOTE: the corresponding test for stderr is in run-pass/thread-stderr, due
// NOTE: the corresponding test for stderr is in ui/thread-stderr, due
// to the test harness apparently interfering with stderr configuration.
}

View File

@ -238,7 +238,7 @@ fn check_binders(
match *lhs {
TokenTree::Token(..) => {}
// This can only happen when checking a nested macro because this LHS is then in the RHS of
// the outer macro. See run-pass/macros/macro-of-higher-order.rs where $y:$fragment in the
// the outer macro. See ui/macros/macro-of-higher-order.rs where $y:$fragment in the
// LHS of the nested macro (and RHS of the outer macro) is parsed as MetaVar(y) Colon
// MetaVar(fragment) and not as MetaVarDecl(y, fragment).
TokenTree::MetaVar(span, name) => {

View File

@ -305,7 +305,7 @@ impl HygieneData {
// was defined at its invocation (i.e., inside the macros 2.0 definition)
// so that the macros 2.0 definition remains hygienic.
//
// See the example at `test/run-pass/hygiene/legacy_interaction.rs`.
// See the example at `test/ui/hygiene/legacy_interaction.rs`.
for (expn_id, transparency) in self.marks(ctxt) {
call_site_ctxt = self.apply_mark_internal(call_site_ctxt, expn_id, transparency);
}

View File

@ -1 +0,0 @@
lexer-crlf-line-endings-string-literal-doc-comment.rs -text

View File

@ -1,22 +0,0 @@
// no-prefer-dynamic
// This aux-file will require the eh_personality function to be codegen'd, but
// it hasn't been defined just yet. Make sure we don't explode.
#![no_std]
#![crate_type = "rlib"]
struct A;
impl core::ops::Drop for A {
fn drop(&mut self) {}
}
pub fn foo() {
let _a = A;
panic!("wut");
}
mod std {
pub use core::{option, fmt};
}

View File

@ -1,10 +0,0 @@
#![crate_type = "rlib"]
#![feature(fundamental)]
pub trait MyCopy { }
impl MyCopy for i32 { }
pub struct MyStruct<T>(T);
#[fundamental]
pub struct MyFundamentalStruct<T>(T);

View File

@ -1,15 +0,0 @@
#![crate_type="lib"]
pub trait Remote {
fn foo(&self) { }
}
pub trait Remote1<T> {
fn foo(&self, t: T) { }
}
pub trait Remote2<T, U> {
fn foo(&self, t: T, u: U) { }
}
pub struct Pair<T,U>(T,U);

View File

@ -1,5 +0,0 @@
// Crate that exports a const fn. Used for testing cross-crate.
#![crate_type="rlib"]
pub const fn foo() -> usize { 22 }

View File

@ -1,8 +0,0 @@
warning: unreachable block in `if` expression
--> $DIR/if-ret.rs:4:24
|
LL | fn foo() { if (return) { } }
| ^^^
|
= note: `#[warn(unreachable_code)]` on by default

View File

@ -1,12 +0,0 @@
pub fn increment(x: usize) -> usize {
x + 1
}
#[macro_export]
macro_rules! increment {
($x:expr) => ($crate::increment($x))
}
pub fn check_local() {
assert_eq!(increment!(3), 4);
}

View File

@ -1,6 +0,0 @@
#![feature(staged_api)]
#![stable(feature = "unit_test", since = "1.0.0")]
#[unstable(feature = "unstable_macros", issue = "0")]
#[macro_export]
macro_rules! unstable_macro{ () => () }

View File

@ -1,8 +0,0 @@
warning: unused attribute
--> $DIR/macro-use-all-and-none.rs:5:1
|
LL | #[macro_use()]
| ^^^^^^^^^^^^^^
|
= note: `#[warn(unused_attributes)]` on by default

View File

@ -1,42 +0,0 @@
// run-pass
#![feature(crate_in_paths)]
#![allow(dead_code)]
use crate::m::f;
use crate as root;
mod m {
pub fn f() -> u8 { 1 }
pub fn g() -> u8 { 2 }
pub fn h() -> u8 { 3 }
// OK, visibilities are implicitly absolute like imports
pub(in crate::m) struct S;
}
mod n {
use crate::m::f;
use crate as root;
pub fn check() {
assert_eq!(f(), 1);
assert_eq!(crate::m::g(), 2);
assert_eq!(root::m::h(), 3);
}
}
mod p {
use {super::f, crate::m::g, self::root::m::h};
use crate as root;
pub fn check() {
assert_eq!(f(), 1);
assert_eq!(g(), 2);
assert_eq!(h(), 3);
}
}
fn main() {
assert_eq!(f(), 1);
assert_eq!(crate::m::g(), 2);
assert_eq!(root::m::h(), 3);
n::check();
p::check();
}

View File

@ -1,8 +0,0 @@
warning: the feature `crate_in_paths` has been stable since 1.30.0 and no longer requires an attribute to enable
--> $DIR/crate-path-absolute.rs:2:12
|
LL | #![feature(crate_in_paths)]
| ^^^^^^^^^^^^^^
|
= note: `#[warn(stable_features)]` on by default

View File

@ -1,15 +0,0 @@
// run-pass
#![feature(crate_in_paths)]
#![feature(crate_visibility_modifier)]
#![allow(dead_code)]
mod m {
pub struct Z;
pub struct S1(crate (::m::Z)); // OK
pub struct S2((crate ::m::Z)); // OK
pub struct S3(crate ::m::Z); // OK
pub struct S4(crate crate::m::Z); // OK
}
fn main() {
crate struct S; // OK (item in statement position)
}

View File

@ -1,8 +0,0 @@
warning: the feature `crate_in_paths` has been stable since 1.30.0 and no longer requires an attribute to enable
--> $DIR/crate-path-visibility-ambiguity.rs:2:12
|
LL | #![feature(crate_in_paths)]
| ^^^^^^^^^^^^^^
|
= note: `#[warn(stable_features)]` on by default

View File

@ -1,7 +0,0 @@
#[derive(Debug, PartialEq)]
pub struct S;
#[derive(Debug)]
pub struct Z;
pub trait Tr<'a> {}

View File

@ -1,25 +0,0 @@
// run-pass
#![allow(dead_code)]
// aux-build:xcrate.rs
// compile-flags:--extern xcrate
// edition:2018
#![allow(unused_imports)]
use xcrate::Z;
fn f() {
use xcrate;
use xcrate as ycrate;
let s = xcrate::S;
assert_eq!(format!("{:?}", s), "S");
let z = ycrate::Z;
assert_eq!(format!("{:?}", z), "Z");
}
fn main() {
let s = ::xcrate::S;
assert_eq!(format!("{:?}", s), "S");
let z = Z;
assert_eq!(format!("{:?}", z), "Z");
}

View File

@ -1,10 +0,0 @@
// run-pass
// Check that `#[test]` works with extern-absolute-paths enabled.
//
// Regression test for #47075.
// edition:2018
// compile-flags: --test
#[test]
fn test() {}

View File

@ -1,14 +0,0 @@
// run-pass
// edition:2018
// Tests that `core` and `std` are always available.
use core::iter;
use std::io;
// FIXME(eddyb) Add a `meta` crate to the distribution.
// use meta;
fn main() {
for _ in iter::once(()) {
io::stdout();
}
}

View File

@ -1,9 +0,0 @@
// Simple smoke test that unsafe traits can be compiled etc.
pub unsafe trait Foo {
fn foo(&self) -> isize;
}
unsafe impl Foo for isize {
fn foo(&self) -> isize { *self }
}

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_imports)]
// ignore-cross-compile

View File

@ -1,3 +1,4 @@
// run-pass
// Test that the Callbacks interface to the compiler works.
// ignore-cross-compile

View File

@ -1,3 +1,5 @@
// run-pass
use std::env;
use std::fs;
use std::path::PathBuf;

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(dead_code)]
#![feature(rustc_private)]
#![no_std]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_imports)]
#![feature(box_syntax)]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_imports)]
// This briefly tests the capability of `Cell` and `RefCell` to implement the
// `Encodable` and `Decodable` traits via `#[derive(Encodable, Decodable)]`

View File

@ -1,3 +1,5 @@
// run-pass
#![feature(rustc_private)]
extern crate serialize;

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(non_upper_case_globals)]
#![feature(rustc_private)]
extern crate serialize;

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unknown_lints)]
// Check that an arena (TypedArena) can carry elements whose drop
// methods might access borrowed data, as long as the borrowed data

View File

@ -1,3 +1,4 @@
// run-pass
// `#[derive(Trait)]` works for empty structs/variants with braces or parens.
#![feature(rustc_private)]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_imports)]
#![feature(rustc_private)]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_must_use)]
#![allow(dead_code)]
#![allow(unused_imports)]

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:issue-13560-1.rs
// aux-build:issue-13560-2.rs
// aux-build:issue-13560-3.rs

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_mut)]
#![allow(unused_imports)]
#![feature(rustc_private)]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_variables)]
// no-prefer-dynamic
// ignore-cross-compile

View File

@ -1,10 +1,11 @@
// aux-build:lint-for-crate.rs
// run-pass
// aux-build:lint-for-crate-rpass.rs
// ignore-stage1
// compile-flags: -D crate-not-okay
#![feature(plugin, custom_attribute, custom_inner_attributes, rustc_attrs)]
#![plugin(lint_for_crate)]
#![plugin(lint_for_crate_rpass)]
#![rustc_crate_okay]
#![rustc_crate_blue]
#![rustc_crate_red]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_imports)]
#![allow(unused_must_use)]
// pretty-expanded FIXME #23616

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:issue-16822.rs
extern crate issue_16822 as lib;

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:issue-18502.rs
extern crate issue_18502 as fmt;

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:issue-24106.rs
extern crate issue_24106;

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(dead_code)]
#![feature(rustc_private)]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(non_camel_case_types)]
#![allow(dead_code)]
#![feature(rustc_private)]

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:issue-40001-plugin.rs
// ignore-stage1

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(dead_code)]
#![feature(rustc_private)]

View File

@ -1,3 +1,4 @@
// run-pass
// Issue #4036: Test for an issue that arose around fixing up type inference
// byproducts in vtable records.

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:linkage-visibility.rs
// ignore-android: FIXME(#10356)
// ignore-windows: std::dynamic_lib does not work on Windows well

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:llvm-pass-plugin.rs
// ignore-stage1

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:lto-syntax-extension-lib.rs
// aux-build:lto-syntax-extension-plugin.rs
// compile-flags:-C lto

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(plugin_as_library)]
#![allow(dead_code)]
#![allow(unused_variables)]

View File

@ -1,3 +1,4 @@
// run-pass
// Testing that a libsyntax can parse modules with canonicalized base path
// ignore-cross-compile

View File

@ -1 +1,3 @@
// run-pass
pub fn foo() -> isize { 10 }

View File

@ -1,3 +1,4 @@
// run-pass
// This test case tests whether we can handle code bases that contain a high
// number of closures, something that needs special handling in the MingGW
// toolchain.

View File

@ -1,3 +1,5 @@
// run-pass
#![feature(rustc_private)]
extern crate rustc_data_structures;

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:outlive-expansion-phase.rs
// ignore-stage1

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:plugin-args.rs
// ignore-stage1

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:plugin-args.rs
// ignore-stage1

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:plugin-args.rs
// ignore-stage1

View File

@ -1,3 +1,4 @@
// run-pass
// ignore-cross-compile
// The general idea of this test is to enumerate all "interesting" expressions and check that

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(dead_code)]
#![allow(unused_imports)]

View File

@ -1,3 +1,5 @@
// run-pass
#![allow(unused_must_use)]
#![allow(unused_imports)]
// This test can't be a unit test in std,

View File

@ -1,3 +1,4 @@
// run-pass
// aux-build:roman-numerals.rs
// ignore-stage1

View File

@ -1,3 +1,5 @@
// run-pass
#![feature(rustc_private)]
#[allow(dead_code)]

View File

@ -1,3 +1,4 @@
// run-pass
// ignore-cross-compile
use std::env;

View File

@ -1,3 +1,5 @@
// run-pass
use std::env;
use std::fs::File;
use std::io::{Read, Write};

Some files were not shown because too many files have changed in this diff Show More