Radish alpha
r
Radicle CI broker
Radicle
Git (anonymous pull)
Log in to clone via SSH
event.rs: add trace logging to parse_ref, and enable logging in its tests
Lars Wirzenius committed 1 year ago
commit c62a4bee9577d0c21aa5478b839eb68d61fbe326
parent b24692c6d1dbd476de7126a0ffd5cec02f7c8d85
1 file changed +19 -0
modified src/event.rs
@@ -547,22 +547,30 @@ pub enum ParsedRef {
/// }
/// ```
pub fn parse_ref(s: &str) -> Option<ParsedRef> {
+
    trace!("parse_ref: s={s:?}");
+

    let patch_re = Regex::new(r"^refs/namespaces/[^/]+/refs/heads/patches/([^/]+)$").unwrap();
    if let Some(patch_captures) = patch_re.captures(s) {
+
        trace!("parse_ref: patch_captures={patch_captures:?}");
        if let Some(patch_id) = patch_captures.get(1) {
+
            trace!("parse_ref: patch_id={patch_id:?}");
            let patch_id_str = patch_id.as_str();
            let oid = Oid::try_from(patch_id_str).unwrap();
+
            trace!("parse_ref: patch oid={oid:?}");
            return Some(ParsedRef::Patch(oid));
        }
    }

    let push_re = Regex::new(r"^refs/namespaces/[^/]+/refs/heads/([^/]+)$").unwrap();
    if let Some(push_captures) = push_re.captures(s) {
+
        trace!("parse_ref: push_captures={push_captures:?}");
        if let Some(branch) = push_captures.get(1) {
+
            trace!("parse_ref: branch={branch:?}");
            return Some(ParsedRef::Push(branch.as_str().to_string()));
        }
    }

+
    trace!("parse_ref: neither push nor patch");
    None
}

@@ -570,13 +578,23 @@ pub fn parse_ref(s: &str) -> Option<ParsedRef> {
mod test_parse_ref {
    use super::{parse_ref, Oid, ParsedRef};

+
    fn log_init() {
+
        let _ = env_logger::builder()
+
            .is_test(true)
+
            .format_timestamp(None)
+
            .filter_level(log::LevelFilter::Trace)
+
            .try_init();
+
    }
+

    #[test]
    fn plain_branch_name_is_none() {
+
        log_init();
        assert_eq!(parse_ref("main"), None);
    }

    #[test]
    fn namespaced_branch() {
+
        log_init();
        assert_eq!(
            parse_ref(
                "refs/namespaces/z6MkfBU2cwcZfaE6Z1dLqb7Ve7u4pdgbSo9tP6qUVsqFn2xv/refs/heads/main"
@@ -587,6 +605,7 @@ mod test_parse_ref {

    #[test]
    fn namespaced_patch() {
+
        log_init();
        const SHA: &str = "0a4c69183fc8b8d849f5ab977d70f2a1f4788bca";
        assert_eq!(
            parse_ref(&format!("refs/namespaces/NID/refs/heads/patches/{SHA}")),