diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-08-20 17:55:15 -0700 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2021-08-20 19:58:07 -0700 |
commit | 601ebdb9d93e9a5b76424b2b8f24ed5064a1a262 (patch) | |
tree | 9abbf343e4e91d9a3bf13d55475b6d733c56558d | |
parent | 64fa4c6aeb3542148d6701deb2992cd86f89da68 (diff) |
Add failing test that gitconfig insteadOf is honored
See #693
-rw-r--r-- | src/features/hyperlinks.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/features/hyperlinks.rs b/src/features/hyperlinks.rs index 2d3ad3b0..2dad4a9d 100644 --- a/src/features/hyperlinks.rs +++ b/src/features/hyperlinks.rs @@ -110,3 +110,44 @@ fn format_commit_line_captures_with_osc8_commit_hyperlink( fn format_github_commit_url(commit: &str, github_repo: &str) -> String { format!("https://github.com/{}/commit/{}", github_repo, commit) } + +#[cfg(test)] +mod tests { + use std::fs::remove_file; + + use super::format_commit_line_with_osc8_commit_hyperlink; + use crate::tests::integration_test_utils; + + #[test] + fn test_commit_hyperlink_honors_insteadof() { + let git_config_contents = br#" +[remote "origin"] + url = github:dandavison/delta + fetch = +refs/heads/*:refs/remotes/origin/* +[url "https://github.com/"] + insteadOf = github: +[url "ssh://git@github.com/"] + pushInsteadOf = github: + insteadOf = githubpriv: +"#; + let git_config_path = "delta__test_commit_hyperlink_honors_insteadof"; + let config = integration_test_utils::make_config_from_args_and_git_config( + &[], + Some(git_config_contents), + Some(git_config_path), + ); + let hash = "342016d0a69d8361dc17396d9a441704416eb7bb"; + let line = format!("commit {}", hash); + // TODO: This doesn't work because a git2::Repository is needed in order + // to compute the remote URL but we do not actually have a repositoty + // since the utility make_config_from_args_and_git_config creates a + // GitConfig struct with a null Repository. + let formatted = format_commit_line_with_osc8_commit_hyperlink(&line, &config); + assert!(formatted.contains(&format!( + "https://github.com/dandavison/delta/commit/{}", + hash + ))); + + remove_file(git_config_path).unwrap(); + } +} |