Rollup merge of #143229 - jieyouxu:compiletest-maintenance-1, r=Kobzol
[COMPILETEST-UNTANGLE 1/N] Move some some early config checks to the lib and move the compiletest binary This is part of a patch series to untangle `compiletest` to hopefully nudge it towards being more maintainable. This PR: - Moves some early config checks (some warnings) to the compiletest library. - Moves `src/main.rs` to `src/bin/main.rs` to make the separation (as in, compiletest's library component vs the tool binary component) more obvious. r? ``@Kobzol`` (or reroll)
This commit is contained in:
commit
8156725d2e
4 changed files with 50 additions and 42 deletions
|
|
@ -6,6 +6,10 @@ edition = "2024"
|
|||
[lib]
|
||||
doctest = false
|
||||
|
||||
[[bin]]
|
||||
name = "compiletest"
|
||||
path = "src/bin/main.rs"
|
||||
|
||||
[dependencies]
|
||||
# tidy-alphabetical-start
|
||||
anstyle-svg = "0.1.3"
|
||||
|
|
|
|||
24
src/tools/compiletest/src/bin/main.rs
Normal file
24
src/tools/compiletest/src/bin/main.rs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
use std::env;
|
||||
use std::io::IsTerminal;
|
||||
use std::sync::Arc;
|
||||
|
||||
use compiletest::{early_config_check, log_config, parse_config, run_tests};
|
||||
|
||||
fn main() {
|
||||
tracing_subscriber::fmt::init();
|
||||
|
||||
// colored checks stdout by default, but for some reason only stderr is a terminal.
|
||||
// compiletest *does* print many things to stdout, but it doesn't really matter.
|
||||
if std::io::stderr().is_terminal()
|
||||
&& matches!(std::env::var("NO_COLOR").as_deref(), Err(_) | Ok("0"))
|
||||
{
|
||||
colored::control::set_override(true);
|
||||
}
|
||||
|
||||
let config = Arc::new(parse_config(env::args().collect()));
|
||||
|
||||
early_config_check(&config);
|
||||
|
||||
log_config(&config);
|
||||
run_tests(config);
|
||||
}
|
||||
|
|
@ -51,12 +51,6 @@ use crate::util::logv;
|
|||
/// some code here that inspects environment variables or even runs executables
|
||||
/// (e.g. when discovering debugger versions).
|
||||
pub fn parse_config(args: Vec<String>) -> Config {
|
||||
if env::var("RUST_TEST_NOCAPTURE").is_ok() {
|
||||
eprintln!(
|
||||
"WARNING: RUST_TEST_NOCAPTURE is not supported. Use the `--no-capture` flag instead."
|
||||
);
|
||||
}
|
||||
|
||||
let mut opts = Options::new();
|
||||
opts.reqopt("", "compile-lib-path", "path to host shared libraries", "PATH")
|
||||
.reqopt("", "run-lib-path", "path to target shared libraries", "PATH")
|
||||
|
|
@ -1111,3 +1105,25 @@ fn check_for_overlapping_test_paths(found_path_stems: &HashSet<Utf8PathBuf>) {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn early_config_check(config: &Config) {
|
||||
if !config.has_html_tidy && config.mode == Mode::Rustdoc {
|
||||
eprintln!("warning: `tidy` (html-tidy.org) is not installed; diffs will not be generated");
|
||||
}
|
||||
|
||||
if !config.profiler_runtime && config.mode == Mode::CoverageRun {
|
||||
let actioned = if config.bless { "blessed" } else { "checked" };
|
||||
eprintln!(
|
||||
r#"
|
||||
WARNING: profiler runtime is not available, so `.coverage` files won't be {actioned}
|
||||
help: try setting `profiler = true` in the `[build]` section of `bootstrap.toml`"#
|
||||
);
|
||||
}
|
||||
|
||||
// `RUST_TEST_NOCAPTURE` is a libtest env var, but we don't callout to libtest.
|
||||
if env::var("RUST_TEST_NOCAPTURE").is_ok() {
|
||||
eprintln!(
|
||||
"WARNING: RUST_TEST_NOCAPTURE is not supported. Use the `--no-capture` flag instead."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
use std::env;
|
||||
use std::io::IsTerminal;
|
||||
use std::sync::Arc;
|
||||
|
||||
use compiletest::common::Mode;
|
||||
use compiletest::{log_config, parse_config, run_tests};
|
||||
|
||||
fn main() {
|
||||
tracing_subscriber::fmt::init();
|
||||
|
||||
// colored checks stdout by default, but for some reason only stderr is a terminal.
|
||||
// compiletest *does* print many things to stdout, but it doesn't really matter.
|
||||
if std::io::stderr().is_terminal()
|
||||
&& matches!(std::env::var("NO_COLOR").as_deref(), Err(_) | Ok("0"))
|
||||
{
|
||||
colored::control::set_override(true);
|
||||
}
|
||||
|
||||
let config = Arc::new(parse_config(env::args().collect()));
|
||||
|
||||
if !config.has_html_tidy && config.mode == Mode::Rustdoc {
|
||||
eprintln!("warning: `tidy` (html-tidy.org) is not installed; diffs will not be generated");
|
||||
}
|
||||
|
||||
if !config.profiler_runtime && config.mode == Mode::CoverageRun {
|
||||
let actioned = if config.bless { "blessed" } else { "checked" };
|
||||
eprintln!(
|
||||
r#"
|
||||
WARNING: profiler runtime is not available, so `.coverage` files won't be {actioned}
|
||||
help: try setting `profiler = true` in the `[build]` section of `bootstrap.toml`"#
|
||||
);
|
||||
}
|
||||
|
||||
log_config(&config);
|
||||
run_tests(config);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue