in focus/operations/src/testing/integration.rs [214:269]
fn stop_bazel(&self) {
let mut commands = vec![(
Command::new("bazel")
.arg("shutdown")
.current_dir(&self.dense_repo_path)
.spawn(),
self.dense_repo_path.to_owned(),
)];
if let Ok(sparse_repo) = self.sparse_repo() {
if let Ok(working_tree) = sparse_repo.working_tree() {
commands.push((
Command::new("bazel")
.arg("shutdown")
.current_dir(working_tree.work_dir())
.spawn(),
working_tree.work_dir().to_owned(),
));
}
if let Some(outlining_tree) = sparse_repo.outliner() {
commands.push((
Command::new("bazel")
.arg("shutdown")
.current_dir(outlining_tree.underlying().work_dir())
.spawn(),
outlining_tree.underlying().work_dir().to_owned(),
));
}
}
for spawn in commands {
match spawn {
(Ok(mut child), path) => {
// We can't really do anything anyway.
match child.wait() {
Ok(status) => {
if status.code() == Some(0) {
info!("Bazel shutdown in {} shutdown succeeded", path.display());
} else {
warn!("Bazel shutdown in {} failed", path.display());
}
}
Err(e) => warn!(
"Failed to wait for Bazel shutdown in {}: {}",
path.display(),
e
),
}
}
(Err(e), path) => warn!(
"Failed to spawn Bazel shutdown in {}: {}",
path.display(),
e
),
}
}
}