Skip to content

Commit f24915b

Browse files
committed
Added a tidy test to ensure libcore cannot contain any tests.
1 parent 13e07a4 commit f24915b

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

src/tools/tidy/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ pub mod pal;
5151
pub mod deps;
5252
pub mod ui_tests;
5353
pub mod unstable_book;
54+
pub mod libcoretest;
5455

5556
fn filter_dirs(path: &Path) -> bool {
5657
let skip = [

src/tools/tidy/src/libcoretest.rs

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
//! Tidy check to ensure `#[test]` is not used directly inside `libcore`.
12+
//!
13+
//! `#![no_core]` libraries cannot be tested directly due to duplicating lang
14+
//! item. All tests must be written externally in `libcore/tests`.
15+
16+
use std::path::Path;
17+
use std::fs::read_to_string;
18+
19+
pub fn check(path: &Path, bad: &mut bool) {
20+
let libcore_path = path.join("libcore");
21+
super::walk(
22+
&libcore_path,
23+
&mut |subpath| t!(subpath.strip_prefix(&libcore_path)).starts_with("tests"),
24+
&mut |subpath| {
25+
if t!(read_to_string(subpath)).contains("#[test]") {
26+
tidy_error!(
27+
bad,
28+
"{} contains #[test]; libcore tests must be placed inside `src/libcore/tests/`",
29+
subpath.display()
30+
);
31+
}
32+
},
33+
);
34+
}

src/tools/tidy/src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ fn main() {
4141
features::check(&path, &mut bad, quiet);
4242
pal::check(&path, &mut bad);
4343
unstable_book::check(&path, &mut bad);
44+
libcoretest::check(&path, &mut bad);
4445
if !args.iter().any(|s| *s == "--no-vendor") {
4546
deps::check(&path, &mut bad);
4647
}

0 commit comments

Comments
 (0)