Skip to content

Commit b93cfef

Browse files
author
bors-servo
committed
Auto merge of #187 - servo:stuff, r=nox
Fix a corner case and add some tests <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-url/187) <!-- Reviewable:end -->
2 parents df3dcd6 + 1c2f149 commit b93cfef

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ impl Url {
848848
let old_suffix_pos = if opt_new_port.is_some() { self.path_start } else { self.host_end };
849849
let suffix = self.slice(old_suffix_pos..).to_owned();
850850
self.serialization.truncate(self.host_start as usize);
851-
if !self.has_host() {
851+
if !self.has_authority() {
852852
debug_assert!(self.slice(self.scheme_end..self.host_start) == ":");
853853
debug_assert!(self.username_end == self.host_start);
854854
self.serialization.push('/');

tests/unit.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,29 @@ fn test_form_serialize() {
233233
.finish();
234234
assert_eq!(encoded, "foo=%C3%A9%26&bar=&foo=%23");
235235
}
236+
237+
#[test]
238+
/// https://github.com/servo/rust-url/issues/25
239+
fn issue_25() {
240+
let filename = if cfg!(windows) { r"C:\run\pg.sock" } else { "/run/pg.sock" };
241+
let mut url = Url::from_file_path(filename).unwrap();
242+
url.assert_invariants();
243+
url.set_scheme("postgres").unwrap();
244+
url.assert_invariants();
245+
url.set_host(Some("")).unwrap();
246+
url.assert_invariants();
247+
url.set_username("me").unwrap();
248+
url.assert_invariants();
249+
let expected = format!("postgres://me@/{}run/pg.sock", if cfg!(windows) { "C:/" } else { "" });
250+
assert_eq!(url.as_str(), expected);
251+
}
252+
253+
#[test]
254+
/// https://github.com/servo/rust-url/issues/61
255+
fn issue_61() {
256+
let mut url = Url::parse("http://mozilla.org").unwrap();
257+
url.set_scheme("https").unwrap();
258+
assert_eq!(url.port(), None);
259+
assert_eq!(url.port_or_known_default(), Some(443));
260+
url.assert_invariants();
261+
}

0 commit comments

Comments
 (0)