Skip to main content

provenant/utils/
path.rs

1// SPDX-FileCopyrightText: Provenant contributors
2// SPDX-License-Identifier: Apache-2.0
3
4pub(crate) fn parent_dir(path: &str) -> &str {
5    path.rsplit_once('/').map_or("", |(parent, _)| parent)
6}
7
8pub(crate) fn parent_dir_for_lookup(path: &str) -> Option<&str> {
9    if path.is_empty() {
10        return None;
11    }
12
13    path.rsplit_once('/').map(|(parent, _)| parent).or(Some(""))
14}
15
16#[cfg(test)]
17mod tests {
18    use super::{parent_dir, parent_dir_for_lookup};
19
20    #[test]
21    fn parent_dir_handles_top_level_paths() {
22        assert_eq!(parent_dir("package.json"), "");
23        assert_eq!(parent_dir("packages/app/package.json"), "packages/app");
24    }
25
26    #[test]
27    fn parent_dir_for_lookup_walks_up_to_empty_root() {
28        assert_eq!(parent_dir_for_lookup("packages/app"), Some("packages"));
29        assert_eq!(parent_dir_for_lookup("packages"), Some(""));
30        assert_eq!(parent_dir_for_lookup(""), None);
31    }
32}