From 16e80b37fa108705592170b3c9001c87fd36ad96 Mon Sep 17 00:00:00 2001 From: Greg Soltis Date: Tue, 16 May 2023 11:19:03 -0700 Subject: [PATCH] Handle a successfully-started-but-unsuccessful git rev-parse call --- crates/turborepo-scm/src/package_deps.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/crates/turborepo-scm/src/package_deps.rs b/crates/turborepo-scm/src/package_deps.rs index d0f5a8ba168d9..eccb46651a9a6 100644 --- a/crates/turborepo-scm/src/package_deps.rs +++ b/crates/turborepo-scm/src/package_deps.rs @@ -29,13 +29,20 @@ pub(crate) fn find_git_root( .args(["rev-parse", "--show-cdup"]) .current_dir(turbo_root) .output()?; + if !rev_parse.status.success() { + let stderr = String::from_utf8_lossy(&rev_parse.stderr); + return Err(Error::git_error(format!( + "git rev-parse --show-cdup error: {}", + stderr + ))); + } let root = String::from_utf8(rev_parse.stdout)?; Ok(turbo_root.join_literal(root.trim_end()).clean()) } #[cfg(test)] mod tests { - use std::process::Command; + use std::{assert_matches::assert_matches, process::Command}; use super::*; @@ -86,6 +93,14 @@ mod tests { assert_eq!(result, link); } + #[test] + fn test_no_git_root() { + let (_, tmp_root) = tmp_dir(); + tmp_root.create_dir_all().unwrap(); + let result = find_git_root(&tmp_root); + assert_matches!(result, Err(Error::Git(_, _))); + } + #[test] fn test_get_package_deps() -> Result<(), Error> { // Directory structure: