Skip to content

Commit

Permalink
Stub out various functions during testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark-Simulacrum committed Apr 3, 2018
1 parent e7342b8 commit cd33d3a
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 12 deletions.
2 changes: 1 addition & 1 deletion src/bootstrap/builder.rs
Expand Up @@ -687,7 +687,7 @@ impl<'a> Builder<'a> {
// the options through environment variables that are fetched and understood by both.
//
// 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 ccacheify = |s: &Path| {
let ccache = match ccache {
Expand Down
4 changes: 4 additions & 0 deletions src/bootstrap/compile.rs
Expand Up @@ -690,6 +690,9 @@ impl Step for CodegenBackend {
cargo.arg("--features").arg(features),
&tmp_stamp,
false);
if cfg!(test) {
return;
}
let mut files = files.into_iter()
.filter(|f| {
let filename = f.file_name().unwrap().to_str().unwrap();
Expand Down Expand Up @@ -719,6 +722,7 @@ impl Step for CodegenBackend {
fn copy_codegen_backends_to_sysroot(builder: &Builder,
compiler: Compiler,
target_compiler: Compiler) {
if cfg!(test) { return; }
let build = builder.build;
let target = target_compiler.host;

Expand Down
1 change: 1 addition & 0 deletions src/bootstrap/doc.rs
Expand Up @@ -817,6 +817,7 @@ impl Step for UnstableBookGen {
}

fn symlink_dir_force(src: &Path, dst: &Path) -> io::Result<()> {
if cfg!(test) { return Ok(()); }
if let Ok(m) = fs::symlink_metadata(dst) {
if m.file_type().is_dir() {
try!(fs::remove_dir_all(dst));
Expand Down
29 changes: 19 additions & 10 deletions src/bootstrap/lib.rs
Expand Up @@ -363,16 +363,19 @@ impl Build {
cc_detect::find(&mut build);
build.verbose("running sanity check");
sanity::check(&mut build);
// If local-rust is the same major.minor as the current version, then force a local-rebuild
let local_version_verbose = output(
Command::new(&build.initial_rustc).arg("--version").arg("--verbose"));
let local_release = local_version_verbose
.lines().filter(|x| x.starts_with("release:"))
.next().unwrap().trim_left_matches("release:").trim();
let my_version = channel::CFG_RELEASE_NUM;
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;
if !cfg!(test) {
// If local-rust is the same major.minor as the current version, then force a
// local-rebuild
let local_version_verbose = output(
Command::new(&build.initial_rustc).arg("--version").arg("--verbose"));
let local_release = local_version_verbose
.lines().filter(|x| x.starts_with("release:"))
.next().unwrap().trim_left_matches("release:").trim();
let my_version = channel::CFG_RELEASE_NUM;
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");
metadata::build(&mut build);
Expand Down Expand Up @@ -419,6 +422,7 @@ impl Build {
///
/// After this executes, it will also ensure that `dir` exists.
fn clear_if_dirty(&self, dir: &Path, input: &Path) -> bool {
if cfg!(test) { return true; }
let stamp = dir.join(".stamp");
let mut cleared = false;
if mtime(&stamp) < mtime(input) {
Expand Down Expand Up @@ -593,12 +597,14 @@ impl Build {

/// Runs a command, printing out nice contextual information if it fails.
fn run(&self, cmd: &mut Command) {
if cfg!(test) { return; }
self.verbose(&format!("running: {:?}", cmd));
run_silent(cmd)
}

/// Runs a command, printing out nice contextual information if it fails.
fn run_quiet(&self, cmd: &mut Command) {
if cfg!(test) { return; }
self.verbose(&format!("running: {:?}", cmd));
run_suppressed(cmd)
}
Expand All @@ -607,6 +613,7 @@ impl Build {
/// Exits if the command failed to execute at all, otherwise returns its
/// `status.success()`.
fn try_run(&self, cmd: &mut Command) -> bool {
if cfg!(test) { return true; }
self.verbose(&format!("running: {:?}", cmd));
try_run_silent(cmd)
}
Expand All @@ -615,6 +622,7 @@ impl Build {
/// Exits if the command failed to execute at all, otherwise returns its
/// `status.success()`.
fn try_run_quiet(&self, cmd: &mut Command) -> bool {
if cfg!(test) { return true; }
self.verbose(&format!("running: {:?}", cmd));
try_run_suppressed(cmd)
}
Expand Down Expand Up @@ -685,6 +693,7 @@ impl Build {

/// Returns the path to the linker for the given target if it needs to be overridden.
fn linker(&self, target: Interned<String>) -> Option<&Path> {
if cfg!(test) { return None; }
if let Some(linker) = self.config.target_config.get(&target)
.and_then(|c| c.linker.as_ref()) {
Some(linker)
Expand Down
12 changes: 12 additions & 0 deletions src/bootstrap/native.rs
Expand Up @@ -60,6 +60,9 @@ impl Step for Llvm {

/// Compile LLVM for `target`.
fn run(self, builder: &Builder) -> PathBuf {
if cfg!(test) {
return PathBuf::from("llvm-config-test-generated");
}
let build = builder.build;
let target = self.target;
let emscripten = self.emscripten;
Expand Down Expand Up @@ -336,6 +339,9 @@ impl Step for Lld {

/// Compile LLVM for `target`.
fn run(self, builder: &Builder) -> PathBuf {
if cfg!(test) {
return PathBuf::from("lld-out-dir-test-gen");
}
let target = self.target;
let build = builder.build;

Expand Down Expand Up @@ -389,6 +395,9 @@ impl Step for TestHelpers {
/// Compiles the `rust_test_helpers.c` library which we used in various
/// `run-pass` test suites for ABI testing.
fn run(self, builder: &Builder) {
if cfg!(test) {
return;
}
let build = builder.build;
let target = self.target;
let dst = build.test_helpers_out(target);
Expand Down Expand Up @@ -441,6 +450,9 @@ impl Step for Openssl {
}

fn run(self, builder: &Builder) {
if cfg!(test) {
return;
}
let build = builder.build;
let target = self.target;
let out = match build.openssl_dir(target) {
Expand Down
6 changes: 5 additions & 1 deletion src/bootstrap/tool.rs
Expand Up @@ -199,7 +199,11 @@ impl Step for ToolBuild {

if !is_expected {
if !is_ext_tool {
exit(1);
if cfg!(test) {
panic!("unexpected failure -- would have hard exited");
} else {
exit(1);
}
} else {
return None;
}
Expand Down
3 changes: 3 additions & 0 deletions src/bootstrap/util.rs
Expand Up @@ -34,6 +34,7 @@ pub fn staticlib(name: &str, target: &str) -> String {

/// Copies a file from `src` to `dst`
pub fn copy(src: &Path, dst: &Path) {
if cfg!(test) { return; }
let _ = fs::remove_file(&dst);
// 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.
Expand Down Expand Up @@ -66,6 +67,7 @@ pub fn replace_in_file(path: &Path, replacements: &[(&str, &str)]) {
}

pub fn read_stamp_file(stamp: &Path) -> Vec<PathBuf> {
if cfg!(test) { return vec![]; }
let mut paths = Vec::new();
let mut contents = Vec::new();
t!(t!(File::open(stamp)).read_to_end(&mut contents));
Expand Down Expand Up @@ -215,6 +217,7 @@ impl Drop for TimeIt {
/// Symlinks two directories, using junctions on Windows and normal symlinks on
/// Unix.
pub fn symlink_dir(src: &Path, dest: &Path) -> io::Result<()> {
if cfg!(test) { return Ok(()); }
let _ = fs::remove_dir(dest);
return symlink_dir_inner(src, dest);

Expand Down

0 comments on commit cd33d3a

Please sign in to comment.