Skip to content

Commit 1a1f4bf

Browse files
committed
Ensure that escape / unescape borrows the input if no changes was made
1 parent ffed24a commit 1a1f4bf

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

src/escapei.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,10 +1722,10 @@ fn parse_decimal(bytes: &str) -> Result<u32, EscapeError> {
17221722

17231723
#[test]
17241724
fn test_unescape() {
1725-
assert_eq!(&*unescape("test").unwrap(), "test");
1726-
assert_eq!(&*unescape("&lt;test&gt;").unwrap(), "<test>");
1727-
assert_eq!(&*unescape("&#x30;").unwrap(), "0");
1728-
assert_eq!(&*unescape("&#48;").unwrap(), "0");
1725+
assert_eq!(unescape("test").unwrap(), Cow::Borrowed("test"));
1726+
assert_eq!(unescape("&lt;test&gt;").unwrap(), "<test>");
1727+
assert_eq!(unescape("&#x30;").unwrap(), "0");
1728+
assert_eq!(unescape("&#48;").unwrap(), "0");
17291729
assert!(unescape("&foo;").is_err());
17301730
}
17311731

@@ -1736,37 +1736,40 @@ fn test_unescape_with() {
17361736
_ => None,
17371737
};
17381738

1739-
assert_eq!(&*unescape_with("test", custom_entities).unwrap(), "test");
17401739
assert_eq!(
1741-
&*unescape_with("&lt;test&gt;", custom_entities).unwrap(),
1740+
unescape_with("test", custom_entities).unwrap(),
1741+
Cow::Borrowed("test")
1742+
);
1743+
assert_eq!(
1744+
unescape_with("&lt;test&gt;", custom_entities).unwrap(),
17421745
"<test>"
17431746
);
1744-
assert_eq!(&*unescape_with("&#x30;", custom_entities).unwrap(), "0");
1745-
assert_eq!(&*unescape_with("&#48;", custom_entities).unwrap(), "0");
1746-
assert_eq!(&*unescape_with("&foo;", custom_entities).unwrap(), "BAR");
1747+
assert_eq!(unescape_with("&#x30;", custom_entities).unwrap(), "0");
1748+
assert_eq!(unescape_with("&#48;", custom_entities).unwrap(), "0");
1749+
assert_eq!(unescape_with("&foo;", custom_entities).unwrap(), "BAR");
17471750
assert!(unescape_with("&fop;", custom_entities).is_err());
17481751
}
17491752

17501753
#[test]
17511754
fn test_escape() {
1752-
assert_eq!(&*escape("test"), "test");
1753-
assert_eq!(&*escape("<test>"), "&lt;test&gt;");
1754-
assert_eq!(&*escape("\"a\"bc"), "&quot;a&quot;bc");
1755-
assert_eq!(&*escape("\"a\"b&c"), "&quot;a&quot;b&amp;c");
1755+
assert_eq!(escape("test"), Cow::Borrowed("test"));
1756+
assert_eq!(escape("<test>"), "&lt;test&gt;");
1757+
assert_eq!(escape("\"a\"bc"), "&quot;a&quot;bc");
1758+
assert_eq!(escape("\"a\"b&c"), "&quot;a&quot;b&amp;c");
17561759
assert_eq!(
1757-
&*escape("prefix_\"a\"b&<>c"),
1760+
escape("prefix_\"a\"b&<>c"),
17581761
"prefix_&quot;a&quot;b&amp;&lt;&gt;c"
17591762
);
17601763
}
17611764

17621765
#[test]
17631766
fn test_partial_escape() {
1764-
assert_eq!(&*partial_escape("test"), "test");
1765-
assert_eq!(&*partial_escape("<test>"), "&lt;test&gt;");
1766-
assert_eq!(&*partial_escape("\"a\"bc"), "\"a\"bc");
1767-
assert_eq!(&*partial_escape("\"a\"b&c"), "\"a\"b&amp;c");
1767+
assert_eq!(partial_escape("test"), Cow::Borrowed("test"));
1768+
assert_eq!(partial_escape("<test>"), "&lt;test&gt;");
1769+
assert_eq!(partial_escape("\"a\"bc"), "\"a\"bc");
1770+
assert_eq!(partial_escape("\"a\"b&c"), "\"a\"b&amp;c");
17681771
assert_eq!(
1769-
&*partial_escape("prefix_\"a\"b&<>c"),
1772+
partial_escape("prefix_\"a\"b&<>c"),
17701773
"prefix_\"a\"b&amp;&lt;&gt;c"
17711774
);
17721775
}

0 commit comments

Comments
 (0)