[librsvg: 4/7] url_resolver.rs: use URIs that will resolve to correct paths on Windows
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 4/7] url_resolver.rs: use URIs that will resolve to correct paths on Windows
- Date: Thu, 18 Nov 2021 00:55:29 +0000 (UTC)
commit b1837b9d7b1b2ba092cb3c64df82e96d3b382b01
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Nov 17 16:36:21 2021 -0600
url_resolver.rs: use URIs that will resolve to correct paths on Windows
Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/636>
src/url_resolver.rs | 59 +++++++++++++++++++++++++++++++----------------------
1 file changed, 35 insertions(+), 24 deletions(-)
---
diff --git a/src/url_resolver.rs b/src/url_resolver.rs
index 954430c0..595afa19 100644
--- a/src/url_resolver.rs
+++ b/src/url_resolver.rs
@@ -153,9 +153,17 @@ mod tests {
));
}
+ fn make_file_uri(p: &str) -> String {
+ if cfg!(windows) {
+ format!("file:///c:{}", p)
+ } else {
+ format!("file://{}", p)
+ }
+ }
+
#[test]
fn disallows_base_is_root() {
- let url_resolver = UrlResolver::new(Some(Url::parse("file:///").unwrap()));
+ let url_resolver = UrlResolver::new(Some(Url::parse(&make_file_uri("/")).unwrap()));
assert!(matches!(
url_resolver.resolve_href("foo.svg"),
Err(AllowedUrlError::BaseIsRoot)
@@ -185,42 +193,45 @@ mod tests {
#[test]
fn allows_relative() {
- let url_resolver = UrlResolver::new(Some(Url::parse("file:///example/bar.svg").unwrap()));
- assert_eq!(
- url_resolver.resolve_href("foo.svg").unwrap().as_ref(),
- "file:///example/foo.svg",
- );
+ let url_resolver = UrlResolver::new(Some(
+ Url::parse(&make_file_uri("/example/bar.svg")).unwrap(),
+ ));
+ let resolved = url_resolver.resolve_href("foo.svg").unwrap();
+ let expected = make_file_uri("/example/foo.svg");
+ assert_eq!(resolved.as_ref(), expected);
}
#[test]
fn allows_sibling() {
- let url_resolver = UrlResolver::new(Some(Url::parse("file:///example/bar.svg").unwrap()));
- assert_eq!(
- url_resolver
- .resolve_href("file:///example/foo.svg")
- .unwrap()
- .as_ref(),
- "file:///example/foo.svg",
- );
+ let url_resolver = UrlResolver::new(Some(
+ Url::parse(&make_file_uri("/example/bar.svg")).unwrap(),
+ ));
+ let resolved = url_resolver
+ .resolve_href(&make_file_uri("/example/foo.svg"))
+ .unwrap();
+ let expected = make_file_uri("/example/foo.svg");
+ assert_eq!(resolved.as_ref(), expected);
}
#[test]
fn allows_child_of_sibling() {
- let url_resolver = UrlResolver::new(Some(Url::parse("file:///example/bar.svg").unwrap()));
- assert_eq!(
- url_resolver
- .resolve_href("file:///example/subdir/foo.svg")
- .unwrap()
- .as_ref(),
- "file:///example/subdir/foo.svg",
- );
+ let url_resolver = UrlResolver::new(Some(
+ Url::parse(&make_file_uri("/example/bar.svg")).unwrap(),
+ ));
+ let resolved = url_resolver
+ .resolve_href(&make_file_uri("/example/subdir/foo.svg"))
+ .unwrap();
+ let expected = make_file_uri("/example/subdir/foo.svg");
+ assert_eq!(resolved.as_ref(), expected);
}
#[test]
fn disallows_non_sibling() {
- let url_resolver = UrlResolver::new(Some(Url::parse("file:///example/bar.svg").unwrap()));
+ let url_resolver = UrlResolver::new(Some(
+ Url::parse(&make_file_uri("/example/bar.svg")).unwrap(),
+ ));
assert!(matches!(
- url_resolver.resolve_href("file:///etc/passwd"),
+ url_resolver.resolve_href(&make_file_uri("/etc/passwd")),
Err(AllowedUrlError::NotSiblingOrChildOfBaseFile)
));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]