Auto merge of #11513 - fduraffourg:pr11216, r=jdm

Add mach command to update public domain list and use a HashSet for matching

<!-- Please describe your changes on the following line: -->
Add a `mach update-pub-domains` command that update the public domain list used by servo.
Replace the Vec matching with a HashSet which is way quicker.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #11216

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11513)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-06-09 12:54:42 -05:00
commit 4dbba2dcab
8 changed files with 8134 additions and 5962 deletions

View file

@ -975,7 +975,6 @@ fn test_domain0016() {
}
#[test]
#[should_panic] // Look at cookie_http_state_utils.py if this test fails
fn test_domain0017() {
let r = run("http://home.example.org:8888/cookie-parser?domain0017",
&["foo=bar; domain=.org"],

View file

@ -27,7 +27,6 @@ FAILING_TESTS = [
"attribute0005", # Waiting for issue 46 of alexcrichton/cookie-rs
"attribute0007", # Waiting for issue 46 of alexcrichton/cookie-rs
"attribute0008", # Waiting for issue 46 of alexcrichton/cookie-rs
"domain0017", # Waiting for issue 11216 of servo/servo
"0003", # Waiting for a way to clean expired cookies
"0006", # Waiting for a way to clean expired cookies
"mozilla0001", # Waiting for a way to clean expired cookies

View file

@ -27,6 +27,7 @@ extern crate util;
#[cfg(test)] mod file_loader;
#[cfg(test)] mod fetch;
#[cfg(test)] mod mime_classifier;
#[cfg(test)] mod pub_domains;
#[cfg(test)] mod resource_thread;
#[cfg(test)] mod hsts;
#[cfg(test)] mod http_loader;

View file

@ -0,0 +1,38 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use net::pub_domains::is_pub_domain;
#[test]
fn test_is_pub_domain_plain() {
assert!(is_pub_domain("com"));
assert!(is_pub_domain(".org"));
assert!(is_pub_domain("za.org"));
assert!(is_pub_domain("xn--od0alg.hk"));
assert!(is_pub_domain("xn--krdsherad-m8a.no"));
}
#[test]
fn test_is_pub_domain_wildcard() {
assert!(is_pub_domain("hello.bd"));
assert!(is_pub_domain("world.jm"));
assert!(is_pub_domain("toto.kobe.jp"));
}
#[test]
fn test_is_pub_domain_exception() {
assert_eq!(is_pub_domain("www.ck"), false);
assert_eq!(is_pub_domain("city.kawasaki.jp"), false);
assert_eq!(is_pub_domain("city.nagoya.jp"), false);
assert_eq!(is_pub_domain("teledata.mz"), false);
}
#[test]
fn test_is_pub_domain_not() {
assert_eq!(is_pub_domain(".servo.org"), false);
assert_eq!(is_pub_domain("www.mozilla.org"), false);
assert_eq!(is_pub_domain("publicsuffix.org"), false);
assert_eq!(is_pub_domain("hello.world.jm"), false);
assert_eq!(is_pub_domain("toto.toto.kobe.jp"), false);
}