Radish alpha
r
Radicle CI broker
Radicle
Git (anonymous pull)
Log in to clone via SSH
fix(src/event.rs): allow branch names to have slashes
Lars Wirzenius committed 1 year ago
commit 50ea2eb1e560b392d1fdd2b9ffe486b3f06a49c7
parent 0e5c1d7dc9c5be23c656bc2ec94de03d1452a940
1 file changed +32 -11
modified src/event.rs
@@ -561,7 +561,7 @@ pub fn parse_ref(s: &str) -> Option<ParsedRef> {
        }
    }

-
    let push_re = Regex::new(r"^refs/namespaces/[^/]+/refs/heads/([^/]+)$").unwrap();
+
    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) {
@@ -575,16 +575,17 @@ pub fn parse_ref(s: &str) -> Option<ParsedRef> {
}

#[cfg(test)]
-
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();
+
}

-
    fn log_init() {
-
        let _ = env_logger::builder()
-
            .is_test(true)
-
            .format_timestamp(None)
-
            .filter_level(log::LevelFilter::Trace)
-
            .try_init();
-
    }
+
#[cfg(test)]
+
mod test_parse_ref {
+
    use super::{log_init, parse_ref, Oid, ParsedRef};

    #[test]
    fn plain_branch_name_is_none() {
@@ -604,6 +605,17 @@ mod test_parse_ref {
    }

    #[test]
+
    fn namespaced_branch_with_slashes() {
+
        log_init();
+
        assert_eq!(
+
            parse_ref(
+
                "refs/namespaces/z6MkfBU2cwcZfaE6Z1dLqb7Ve7u4pdgbSo9tP6qUVsqFn2xv/refs/heads/liw/cob/draft/v2"
+
            ),
+
            Some(ParsedRef::Push("liw/cob/draft/v2".into()))
+
        );
+
    }
+

+
    #[test]
    fn namespaced_patch() {
        log_init();
        const SHA: &str = "0a4c69183fc8b8d849f5ab977d70f2a1f4788bca";
@@ -636,10 +648,11 @@ pub fn push_branch(name: &str) -> String {

#[cfg(test)]
mod test {
-
    use super::{is_patch_update, parse_ref, push_branch, Oid, ParsedRef};
+
    use super::{is_patch_update, log_init, parse_ref, push_branch, Oid, ParsedRef};

    #[test]
    fn test_parse_patch_ref() {
+
        log_init();
        let patch_ref =
            "refs/namespaces/NID/refs/heads/patches/9183ed6232687d3105482960cecb01a53018b80a";

@@ -653,9 +666,11 @@ mod test {

    #[test]
    fn test_parse_push_ref() {
+
        log_init();
        let push_ref =
            "refs/namespaces/z6MkuhvCnrcow7vzkyQzkuFixzpTa42iC2Cfa4DA8HRLCmys/refs/heads/main";
        let parsed_ref = parse_ref(push_ref);
+
        eprintln!("parsed_ref={parsed_ref:#?}");
        assert!(parsed_ref.is_some());
        if let Some(ref parsed) = parsed_ref {
            match parsed {
@@ -667,6 +682,7 @@ mod test {

    #[test]
    fn test_parse_invalid_ref() {
+
        log_init();
        let invalid_ref = "invalid_ref";
        let parsed_ref = parse_ref(invalid_ref);
        assert!(parsed_ref.is_none());
@@ -674,6 +690,7 @@ mod test {

    #[test]
    fn branch_is_not_patch_update() {
+
        log_init();
        assert_eq!(
            is_patch_update(
                "refs/namespaces/z6MkuhvCnrcow7vzkyQzkuFixzpTa42iC2Cfa4DA8HRLCmys/refs/heads/main"
@@ -684,6 +701,7 @@ mod test {

    #[test]
    fn patch_branch_is_not_patch_update() {
+
        log_init();
        assert_eq!(
            is_patch_update(
                "refs/namespaces/z6MkuhvCnrcow7vzkyQzkuFixzpTa42iC2Cfa4DA8HRLCmys/refs/heads/patches/bbb54a2c9314a528a4fff9d6c2aae874ed098433"
@@ -694,6 +712,7 @@ mod test {

    #[test]
    fn patch_update() {
+
        log_init();
        assert_eq!(
            is_patch_update(
                "refs/namespaces/z6MkuhvCnrcow7vzkyQzkuFixzpTa42iC2Cfa4DA8HRLCmys/refs/cobs/xyz.radicle.patch/bbb54a2c9314a528a4fff9d6c2aae874ed098433"
@@ -704,6 +723,7 @@ mod test {

    #[test]
    fn get_push_branch() {
+
        log_init();
        assert_eq!(
            push_branch(
                "refs/namespaces/z6MkuhvCnrcow7vzkyQzkuFixzpTa42iC2Cfa4DA8HRLCmys/refs/heads/branch_name"
@@ -714,6 +734,7 @@ mod test {

    #[test]
    fn get_no_push_branch() {
+
        log_init();
        assert_eq!(
            push_branch(
                "refs/namespaces/z6MkuhvCnrcow7vzkyQzkuFixzpTa42iC2Cfa4DA8HRLCmys/refs/rad/sigrefs"