mirror of
https://github.com/Llewellynvdm/starship.git
synced 2024-11-24 13:47:38 +00:00
Better test and document the dir segment
This commit is contained in:
parent
bca4a7079f
commit
d2cda32c87
@ -61,6 +61,9 @@ fn get_repo_root(repo: &Repository) -> &Path {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Contract the root component of a path
|
/// Contract the root component of a path
|
||||||
|
///
|
||||||
|
/// Replaces the `top_level_path` in a given `full_path` with the provided
|
||||||
|
/// `top_level_replacement`.
|
||||||
fn contract_path(full_path: &Path, top_level_path: &Path, top_level_replacement: &str) -> String {
|
fn contract_path(full_path: &Path, top_level_path: &Path, top_level_replacement: &str) -> String {
|
||||||
if !full_path.starts_with(top_level_path) {
|
if !full_path.starts_with(top_level_path) {
|
||||||
return full_path.to_str().unwrap().to_string();
|
return full_path.to_str().unwrap().to_string();
|
||||||
@ -83,6 +86,9 @@ fn contract_path(full_path: &Path, top_level_path: &Path, top_level_replacement:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Truncate a path to only have a set number of path components
|
/// Truncate a path to only have a set number of path components
|
||||||
|
///
|
||||||
|
/// Will truncate a path to only show the last `length` components in a path.
|
||||||
|
/// If a length of `0` is provided, the path will not be truncated.
|
||||||
fn truncate(dir_string: String, length: usize) -> String {
|
fn truncate(dir_string: String, length: usize) -> String {
|
||||||
if length == 0 {
|
if length == 0 {
|
||||||
return dir_string;
|
return dir_string;
|
||||||
@ -143,6 +149,24 @@ mod tests {
|
|||||||
// assert_eq!(segment.output(), "/var");
|
// assert_eq!(segment.output(), "/var");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn contract_home_directory() {
|
||||||
|
let full_path = Path::new("/Users/astronaut/schematics/rocket");
|
||||||
|
let home = Path::new("/Users/astronaut");
|
||||||
|
|
||||||
|
let output = contract_path(full_path, home, "~");
|
||||||
|
assert_eq!(output, "~/schematics/rocket");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn contract_repo_directory() {
|
||||||
|
let full_path = Path::new("/Users/astronaut/dev/rocket-controls/src");
|
||||||
|
let repo_root = Path::new("/Users/astronaut/dev/rocket-controls");
|
||||||
|
|
||||||
|
let output = contract_path(full_path, repo_root, "rocket-controls");
|
||||||
|
assert_eq!(output, "rocket-controls/src");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn truncate_smaller_path_than_provided_length() {
|
fn truncate_smaller_path_than_provided_length() {
|
||||||
let path = "~/starship";
|
let path = "~/starship";
|
||||||
@ -158,7 +182,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn truncate_slightly_larger_path_then_provided_length() {
|
fn truncate_slightly_larger_path_than_provided_length() {
|
||||||
let path = "~/starship/engines/booster";
|
let path = "~/starship/engines/booster";
|
||||||
let output = truncate(path.to_string(), 3);
|
let output = truncate(path.to_string(), 3);
|
||||||
assert_eq!(output, "starship/engines/booster")
|
assert_eq!(output, "starship/engines/booster")
|
||||||
|
Loading…
Reference in New Issue
Block a user