Stub out various functions during testing

This commit is contained in:
Mark Simulacrum
2018-03-09 19:23:35 -07:00
parent e7342b8f42
commit cd33d3a0e4
7 changed files with 45 additions and 12 deletions

View File

@@ -687,7 +687,7 @@ impl<'a> Builder<'a> {
// the options through environment variables that are fetched and understood by both. // the options through environment variables that are fetched and understood by both.
// //
// FIXME: the guard against msvc shouldn't need to be here // FIXME: the guard against msvc shouldn't need to be here
if !target.contains("msvc") { if !target.contains("msvc") && !cfg!(test) {
let ccache = self.config.ccache.as_ref(); let ccache = self.config.ccache.as_ref();
let ccacheify = |s: &Path| { let ccacheify = |s: &Path| {
let ccache = match ccache { let ccache = match ccache {

View File

@@ -690,6 +690,9 @@ impl Step for CodegenBackend {
cargo.arg("--features").arg(features), cargo.arg("--features").arg(features),
&tmp_stamp, &tmp_stamp,
false); false);
if cfg!(test) {
return;
}
let mut files = files.into_iter() let mut files = files.into_iter()
.filter(|f| { .filter(|f| {
let filename = f.file_name().unwrap().to_str().unwrap(); let filename = f.file_name().unwrap().to_str().unwrap();
@@ -719,6 +722,7 @@ impl Step for CodegenBackend {
fn copy_codegen_backends_to_sysroot(builder: &Builder, fn copy_codegen_backends_to_sysroot(builder: &Builder,
compiler: Compiler, compiler: Compiler,
target_compiler: Compiler) { target_compiler: Compiler) {
if cfg!(test) { return; }
let build = builder.build; let build = builder.build;
let target = target_compiler.host; let target = target_compiler.host;

View File

@@ -817,6 +817,7 @@ impl Step for UnstableBookGen {
} }
fn symlink_dir_force(src: &Path, dst: &Path) -> io::Result<()> { fn symlink_dir_force(src: &Path, dst: &Path) -> io::Result<()> {
if cfg!(test) { return Ok(()); }
if let Ok(m) = fs::symlink_metadata(dst) { if let Ok(m) = fs::symlink_metadata(dst) {
if m.file_type().is_dir() { if m.file_type().is_dir() {
try!(fs::remove_dir_all(dst)); try!(fs::remove_dir_all(dst));

View File

@@ -363,16 +363,19 @@ impl Build {
cc_detect::find(&mut build); cc_detect::find(&mut build);
build.verbose("running sanity check"); build.verbose("running sanity check");
sanity::check(&mut build); sanity::check(&mut build);
// If local-rust is the same major.minor as the current version, then force a local-rebuild if !cfg!(test) {
let local_version_verbose = output( // If local-rust is the same major.minor as the current version, then force a
Command::new(&build.initial_rustc).arg("--version").arg("--verbose")); // local-rebuild
let local_release = local_version_verbose let local_version_verbose = output(
.lines().filter(|x| x.starts_with("release:")) Command::new(&build.initial_rustc).arg("--version").arg("--verbose"));
.next().unwrap().trim_left_matches("release:").trim(); let local_release = local_version_verbose
let my_version = channel::CFG_RELEASE_NUM; .lines().filter(|x| x.starts_with("release:"))
if local_release.split('.').take(2).eq(my_version.split('.').take(2)) { .next().unwrap().trim_left_matches("release:").trim();
build.verbose(&format!("auto-detected local-rebuild {}", local_release)); let my_version = channel::CFG_RELEASE_NUM;
build.local_rebuild = true; if local_release.split('.').take(2).eq(my_version.split('.').take(2)) {
build.verbose(&format!("auto-detected local-rebuild {}", local_release));
build.local_rebuild = true;
}
} }
build.verbose("learning about cargo"); build.verbose("learning about cargo");
metadata::build(&mut build); metadata::build(&mut build);
@@ -419,6 +422,7 @@ impl Build {
/// ///
/// After this executes, it will also ensure that `dir` exists. /// After this executes, it will also ensure that `dir` exists.
fn clear_if_dirty(&self, dir: &Path, input: &Path) -> bool { fn clear_if_dirty(&self, dir: &Path, input: &Path) -> bool {
if cfg!(test) { return true; }
let stamp = dir.join(".stamp"); let stamp = dir.join(".stamp");
let mut cleared = false; let mut cleared = false;
if mtime(&stamp) < mtime(input) { if mtime(&stamp) < mtime(input) {
@@ -593,12 +597,14 @@ impl Build {
/// Runs a command, printing out nice contextual information if it fails. /// Runs a command, printing out nice contextual information if it fails.
fn run(&self, cmd: &mut Command) { fn run(&self, cmd: &mut Command) {
if cfg!(test) { return; }
self.verbose(&format!("running: {:?}", cmd)); self.verbose(&format!("running: {:?}", cmd));
run_silent(cmd) run_silent(cmd)
} }
/// Runs a command, printing out nice contextual information if it fails. /// Runs a command, printing out nice contextual information if it fails.
fn run_quiet(&self, cmd: &mut Command) { fn run_quiet(&self, cmd: &mut Command) {
if cfg!(test) { return; }
self.verbose(&format!("running: {:?}", cmd)); self.verbose(&format!("running: {:?}", cmd));
run_suppressed(cmd) run_suppressed(cmd)
} }
@@ -607,6 +613,7 @@ impl Build {
/// Exits if the command failed to execute at all, otherwise returns its /// Exits if the command failed to execute at all, otherwise returns its
/// `status.success()`. /// `status.success()`.
fn try_run(&self, cmd: &mut Command) -> bool { fn try_run(&self, cmd: &mut Command) -> bool {
if cfg!(test) { return true; }
self.verbose(&format!("running: {:?}", cmd)); self.verbose(&format!("running: {:?}", cmd));
try_run_silent(cmd) try_run_silent(cmd)
} }
@@ -615,6 +622,7 @@ impl Build {
/// Exits if the command failed to execute at all, otherwise returns its /// Exits if the command failed to execute at all, otherwise returns its
/// `status.success()`. /// `status.success()`.
fn try_run_quiet(&self, cmd: &mut Command) -> bool { fn try_run_quiet(&self, cmd: &mut Command) -> bool {
if cfg!(test) { return true; }
self.verbose(&format!("running: {:?}", cmd)); self.verbose(&format!("running: {:?}", cmd));
try_run_suppressed(cmd) try_run_suppressed(cmd)
} }
@@ -685,6 +693,7 @@ impl Build {
/// Returns the path to the linker for the given target if it needs to be overridden. /// Returns the path to the linker for the given target if it needs to be overridden.
fn linker(&self, target: Interned<String>) -> Option<&Path> { fn linker(&self, target: Interned<String>) -> Option<&Path> {
if cfg!(test) { return None; }
if let Some(linker) = self.config.target_config.get(&target) if let Some(linker) = self.config.target_config.get(&target)
.and_then(|c| c.linker.as_ref()) { .and_then(|c| c.linker.as_ref()) {
Some(linker) Some(linker)

View File

@@ -60,6 +60,9 @@ impl Step for Llvm {
/// Compile LLVM for `target`. /// Compile LLVM for `target`.
fn run(self, builder: &Builder) -> PathBuf { fn run(self, builder: &Builder) -> PathBuf {
if cfg!(test) {
return PathBuf::from("llvm-config-test-generated");
}
let build = builder.build; let build = builder.build;
let target = self.target; let target = self.target;
let emscripten = self.emscripten; let emscripten = self.emscripten;
@@ -336,6 +339,9 @@ impl Step for Lld {
/// Compile LLVM for `target`. /// Compile LLVM for `target`.
fn run(self, builder: &Builder) -> PathBuf { fn run(self, builder: &Builder) -> PathBuf {
if cfg!(test) {
return PathBuf::from("lld-out-dir-test-gen");
}
let target = self.target; let target = self.target;
let build = builder.build; let build = builder.build;
@@ -389,6 +395,9 @@ impl Step for TestHelpers {
/// Compiles the `rust_test_helpers.c` library which we used in various /// Compiles the `rust_test_helpers.c` library which we used in various
/// `run-pass` test suites for ABI testing. /// `run-pass` test suites for ABI testing.
fn run(self, builder: &Builder) { fn run(self, builder: &Builder) {
if cfg!(test) {
return;
}
let build = builder.build; let build = builder.build;
let target = self.target; let target = self.target;
let dst = build.test_helpers_out(target); let dst = build.test_helpers_out(target);
@@ -441,6 +450,9 @@ impl Step for Openssl {
} }
fn run(self, builder: &Builder) { fn run(self, builder: &Builder) {
if cfg!(test) {
return;
}
let build = builder.build; let build = builder.build;
let target = self.target; let target = self.target;
let out = match build.openssl_dir(target) { let out = match build.openssl_dir(target) {

View File

@@ -199,7 +199,11 @@ impl Step for ToolBuild {
if !is_expected { if !is_expected {
if !is_ext_tool { if !is_ext_tool {
exit(1); if cfg!(test) {
panic!("unexpected failure -- would have hard exited");
} else {
exit(1);
}
} else { } else {
return None; return None;
} }

View File

@@ -34,6 +34,7 @@ pub fn staticlib(name: &str, target: &str) -> String {
/// Copies a file from `src` to `dst` /// Copies a file from `src` to `dst`
pub fn copy(src: &Path, dst: &Path) { pub fn copy(src: &Path, dst: &Path) {
if cfg!(test) { return; }
let _ = fs::remove_file(&dst); let _ = fs::remove_file(&dst);
// Attempt to "easy copy" by creating a hard link (symlinks don't work on // Attempt to "easy copy" by creating a hard link (symlinks don't work on
// windows), but if that fails just fall back to a slow `copy` operation. // windows), but if that fails just fall back to a slow `copy` operation.
@@ -66,6 +67,7 @@ pub fn replace_in_file(path: &Path, replacements: &[(&str, &str)]) {
} }
pub fn read_stamp_file(stamp: &Path) -> Vec<PathBuf> { pub fn read_stamp_file(stamp: &Path) -> Vec<PathBuf> {
if cfg!(test) { return vec![]; }
let mut paths = Vec::new(); let mut paths = Vec::new();
let mut contents = Vec::new(); let mut contents = Vec::new();
t!(t!(File::open(stamp)).read_to_end(&mut contents)); t!(t!(File::open(stamp)).read_to_end(&mut contents));
@@ -215,6 +217,7 @@ impl Drop for TimeIt {
/// Symlinks two directories, using junctions on Windows and normal symlinks on /// Symlinks two directories, using junctions on Windows and normal symlinks on
/// Unix. /// Unix.
pub fn symlink_dir(src: &Path, dest: &Path) -> io::Result<()> { pub fn symlink_dir(src: &Path, dest: &Path) -> io::Result<()> {
if cfg!(test) { return Ok(()); }
let _ = fs::remove_dir(dest); let _ = fs::remove_dir(dest);
return symlink_dir_inner(src, dest); return symlink_dir_inner(src, dest);