mirror of
https://github.com/servo/servo
synced 2026-04-25 17:15:48 +02:00
This PR considers the following constraints: - Resources must be available when building servo via a published crates.io package (i.e. no `../../../resources/<file>` file references). - Minimal setup when writing tests (`nextest` spawns each test in its own process, so we don't want to explicitly initialize the resource handler for every `#[test]` fn) - Use local resources when developing locally - Support loading the resources from a proper resource directory if the embedder wishes so, including via a custom mechanism, not necessarily as files (File) Resources that are only accessed from servoshell are out of scope of this PR, since it mainly focusses on unblocking publishing `libservo` to crates.io. Baking the resources into the binary by default simplifies the setup a lot. We already supported that before, but only for testing purposes and explicitly not for production builds. Using [`inventory`](https://crates.io/crates/inventory) adds a simple way for the embedder to replace the default baked in resources, while also keeping the test usage of baked in resources simple. rippy.png is also referenced from image_cache - We simply duplicate it, since the image is small, to avoid adding unnecessarily complex solutions like adding a dedicated crate. Testing: Covered by existing tests. [mach try full](https://github.com/jschwe/servo/actions/runs/23811669469) Fixes: Part of #43145 --------- Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
124 lines
4.6 KiB
Rust
124 lines
4.6 KiB
Rust
/* 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 https://mozilla.org/MPL/2.0/. */
|
|
|
|
use net_traits::pub_domains::{is_pub_domain, is_reg_domain, pub_suffix, reg_suffix};
|
|
use servo_default_resources as _;
|
|
|
|
// These tests may need to be updated if the PSL changes.
|
|
|
|
#[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(""), false);
|
|
assert_eq!(is_pub_domain("."), false);
|
|
assert_eq!(is_pub_domain("..."), false);
|
|
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);
|
|
}
|
|
|
|
#[test]
|
|
fn test_is_pub_domain() {
|
|
assert!(!is_pub_domain("city.yokohama.jp"));
|
|
assert!(!is_pub_domain("foo.bar.baz.yokohama.jp"));
|
|
assert!(!is_pub_domain("foo.bar.city.yokohama.jp"));
|
|
assert!(!is_pub_domain("foo.bar.com"));
|
|
assert!(!is_pub_domain("foo.bar.tokyo.jp"));
|
|
assert!(!is_pub_domain("foo.bar.yokohama.jp"));
|
|
assert!(!is_pub_domain("foo.city.yokohama.jp"));
|
|
assert!(!is_pub_domain("foo.com"));
|
|
assert!(!is_pub_domain("foo.tokyo.jp"));
|
|
assert!(!is_pub_domain("yokohama.jp"));
|
|
assert!(is_pub_domain("com"));
|
|
assert!(is_pub_domain("foo.yokohama.jp"));
|
|
assert!(is_pub_domain("jp"));
|
|
assert!(is_pub_domain("tokyo.jp"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_is_reg_domain() {
|
|
assert!(!is_reg_domain("com"));
|
|
assert!(!is_reg_domain("foo.bar.baz.yokohama.jp"));
|
|
assert!(!is_reg_domain("foo.bar.com"));
|
|
assert!(!is_reg_domain("foo.bar.tokyo.jp"));
|
|
assert!(!is_reg_domain("foo.city.yokohama.jp"));
|
|
assert!(!is_reg_domain("foo.yokohama.jp"));
|
|
assert!(!is_reg_domain("jp"));
|
|
assert!(!is_reg_domain("tokyo.jp"));
|
|
assert!(is_reg_domain("city.yokohama.jp"));
|
|
assert!(is_reg_domain("foo.bar.yokohama.jp"));
|
|
assert!(is_reg_domain("foo.com"));
|
|
assert!(is_reg_domain("foo.tokyo.jp"));
|
|
assert!(is_reg_domain("yokohama.jp"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_pub_suffix() {
|
|
assert_eq!(pub_suffix("city.yokohama.jp"), "yokohama.jp");
|
|
assert_eq!(pub_suffix("com"), "com");
|
|
assert_eq!(pub_suffix("foo.bar.baz.yokohama.jp"), "baz.yokohama.jp");
|
|
assert_eq!(pub_suffix("foo.bar.com"), "com");
|
|
assert_eq!(pub_suffix("foo.bar.tokyo.jp"), "tokyo.jp");
|
|
assert_eq!(pub_suffix("foo.bar.yokohama.jp"), "bar.yokohama.jp");
|
|
assert_eq!(pub_suffix("foo.city.yokohama.jp"), "yokohama.jp");
|
|
assert_eq!(pub_suffix("foo.com"), "com");
|
|
assert_eq!(pub_suffix("foo.tokyo.jp"), "tokyo.jp");
|
|
assert_eq!(pub_suffix("foo.yokohama.jp"), "foo.yokohama.jp");
|
|
assert_eq!(pub_suffix("jp"), "jp");
|
|
assert_eq!(pub_suffix("tokyo.jp"), "tokyo.jp");
|
|
assert_eq!(pub_suffix("yokohama.jp"), "jp");
|
|
}
|
|
|
|
#[test]
|
|
fn test_reg_suffix() {
|
|
assert_eq!(reg_suffix("city.yokohama.jp"), "city.yokohama.jp");
|
|
assert_eq!(reg_suffix("com"), "com");
|
|
assert_eq!(reg_suffix("foo.bar.baz.yokohama.jp"), "bar.baz.yokohama.jp");
|
|
assert_eq!(reg_suffix("foo.bar.com"), "bar.com");
|
|
assert_eq!(reg_suffix("foo.bar.tokyo.jp"), "bar.tokyo.jp");
|
|
assert_eq!(reg_suffix("foo.bar.yokohama.jp"), "foo.bar.yokohama.jp");
|
|
assert_eq!(reg_suffix("foo.city.yokohama.jp"), "city.yokohama.jp");
|
|
assert_eq!(reg_suffix("foo.com"), "foo.com");
|
|
assert_eq!(reg_suffix("foo.tokyo.jp"), "foo.tokyo.jp");
|
|
assert_eq!(reg_suffix("foo.yokohama.jp"), "foo.yokohama.jp");
|
|
assert_eq!(reg_suffix("jp"), "jp");
|
|
assert_eq!(reg_suffix("tokyo.jp"), "tokyo.jp");
|
|
assert_eq!(reg_suffix("yokohama.jp"), "yokohama.jp");
|
|
}
|
|
|
|
#[test]
|
|
fn test_weirdness() {
|
|
// These are weird results, but AFAICT they are spec-compliant.
|
|
assert_ne!(
|
|
pub_suffix("city.yokohama.jp"),
|
|
pub_suffix(pub_suffix("city.yokohama.jp"))
|
|
);
|
|
assert!(!is_pub_domain(pub_suffix("city.yokohama.jp")));
|
|
}
|