Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
REVIEW: Still disallow CR and LF in titles
Lorenz Leutgeb committed 7 months ago
commit 1e4554d09cfe4b9565aab2770d818fce1a88add6
parent 5423f01078a20fae5d05280450fce44b3d9a9d90
1 file changed +4 -3
modified crates/radicle/src/cob/common.rs
@@ -57,7 +57,7 @@ pub enum TitleError {
/// A `Title`:
///   - Must not be empty
///   - Must not contain `\n` or `\r` characters
-
///   - Will be trimmed of any preceding or following whitespace
+
///   - Will be trimmed of any preceding or following `' '` characters
#[derive(Display, Deserialize, Serialize, PartialEq, Eq, Clone, Debug)]
#[display(inner)]
pub struct Title(String);
@@ -69,7 +69,7 @@ impl Title {
    /// [`TitleError::InvalidTitle`]: the provided `title` contained invalid
    /// characters
    pub fn new(title: &str) -> Result<Self, TitleError> {
-
        let title = title.trim();
+
        let title = title.trim_matches(' ');
        if title.contains('\n') || title.contains('\r') {
            Err(TitleError::InvalidTitle)
        } else if title.is_empty() {
@@ -499,7 +499,8 @@ mod test {
        assert_eq!(Title::new(""), Err(TitleError::EmptyTitle));
        assert_eq!(Title::new(" "), Err(TitleError::EmptyTitle));
        assert_eq!(Title::new("foo\nbar"), Err(TitleError::InvalidTitle));
-
        assert_eq!(Title::new(" valid title \n").unwrap().0, "valid title");
+
        assert_eq!(Title::new("foobar\n"), Err(TitleError::InvalidTitle));
+
        assert_eq!(Title::new(" valid title ").unwrap().0, "valid title");
    }

    #[test]