diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/compiletest/helper/lib.rs | 28 | ||||
-rw-r--r-- | tests/compiletest/plugin/Cargo.toml | 16 | ||||
-rw-r--r-- | tests/compiletest/plugin/compile-fail/arc_rc_must_not_derive_malloc_size_of.rs | 34 | ||||
-rw-r--r-- | tests/compiletest/plugin/compile-fail/trustedpromise_mustnot_deriveclone.rs | 15 | ||||
-rw-r--r-- | tests/compiletest/plugin/compile-fail/unrooted_must_root.rs | 27 | ||||
-rw-r--r-- | tests/compiletest/plugin/lib.rs | 10 | ||||
-rw-r--r-- | tests/unit/deny_public_fields/Cargo.toml | 12 | ||||
-rw-r--r-- | tests/unit/deny_public_fields/lib.rs (renamed from tests/compiletest/plugin/compile-fail/deny_public_fields.rs) | 27 | ||||
-rw-r--r-- | tests/unit/malloc_size_of/Cargo.toml | 13 | ||||
-rw-r--r-- | tests/unit/malloc_size_of/lib.rs | 109 | ||||
-rw-r--r-- | tests/unit/script/Cargo.toml | 1 | ||||
-rw-r--r-- | tests/unit/script/lib.rs | 22 | ||||
-rw-r--r-- | tests/unit/script_plugins/Cargo.toml (renamed from tests/compiletest/helper/Cargo.toml) | 7 | ||||
-rw-r--r-- | tests/unit/script_plugins/lib.rs | 63 |
14 files changed, 238 insertions, 146 deletions
diff --git a/tests/compiletest/helper/lib.rs b/tests/compiletest/helper/lib.rs deleted file mode 100644 index 7c7b076c1bc..00000000000 --- a/tests/compiletest/helper/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -/* 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/. */ - -extern crate compiletest_rs as compiletest; - -use std::env; -use std::path::PathBuf; - -pub fn run_mode(mode: &'static str) { - let mut config = compiletest::default_config(); - let cfg_mode = mode.parse().ok().expect("Invalid mode"); - - config.mode = cfg_mode; - config.src_base = PathBuf::from(format!("{}", mode)); - - let mut base_path = env::current_dir().expect("Current directory is invalid"); - base_path.pop(); - base_path.pop(); - base_path.pop(); - - let mode = env::var("BUILD_MODE").expect("BUILD_MODE environment variable must be set"); - let debug_path = base_path.join(PathBuf::from(format!("target/{}", mode))); - let deps_path = base_path.join(PathBuf::from(format!("target/{}/deps", mode))); - - config.target_rustcflags = Some(format!("-L {} -L {}", debug_path.display(), deps_path.display())); - compiletest::run_tests(&config); -} diff --git a/tests/compiletest/plugin/Cargo.toml b/tests/compiletest/plugin/Cargo.toml deleted file mode 100644 index cf5ba72cc44..00000000000 --- a/tests/compiletest/plugin/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "plugin_compiletest" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "plugin_compiletest" -path = "lib.rs" -doctest = false - -[dependencies] -compiletest_helper = {path = "../helper"} -deny_public_fields = {path = "../../../components/deny_public_fields"} -script = {path = "../../../components/script"} -script_plugins = {path = "../../../components/script_plugins"} diff --git a/tests/compiletest/plugin/compile-fail/arc_rc_must_not_derive_malloc_size_of.rs b/tests/compiletest/plugin/compile-fail/arc_rc_must_not_derive_malloc_size_of.rs deleted file mode 100644 index 72a5eaa1e9c..00000000000 --- a/tests/compiletest/plugin/compile-fail/arc_rc_must_not_derive_malloc_size_of.rs +++ /dev/null @@ -1,34 +0,0 @@ -/* 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/. */ - -extern crate malloc_size_of; -extern crate servo_arc; - -use malloc_size_of::{MallocShallowSizeOf, MallocSizeOf}; - -fn sizeable<T: MallocSizeOf>() { -} - -fn shallow_sizeable<T: MallocShallowSizeOf>() { -} - -fn main() { - sizeable::<::servo_arc::Arc<i32>>(); - //~^ ERROR the trait bound `servo_arc::Arc<i32>: malloc_size_of::MallocSizeOf` is not satisfied - - sizeable::<::std::sync::Arc<i32>>(); - //~^ ERROR the trait bound `std::sync::Arc<i32>: malloc_size_of::MallocSizeOf` is not satisfied - - sizeable::<::std::rc::Rc<i32>>(); - //~^ ERROR the trait bound `std::rc::Rc<i32>: malloc_size_of::MallocSizeOf` is not satisfied - - shallow_sizeable::<::servo_arc::Arc<i32>>(); - //~^ ERROR the trait bound `servo_arc::Arc<i32>: malloc_size_of::MallocShallowSizeOf` is not satisfied - - shallow_sizeable::<::std::sync::Arc<i32>>(); - //~^ ERROR the trait bound `std::sync::Arc<i32>: malloc_size_of::MallocShallowSizeOf` is not satisfied - - shallow_sizeable::<::std::rc::Rc<i32>>(); - //~^ ERROR the trait bound `std::rc::Rc<i32>: malloc_size_of::MallocShallowSizeOf` is not satisfied -} diff --git a/tests/compiletest/plugin/compile-fail/trustedpromise_mustnot_deriveclone.rs b/tests/compiletest/plugin/compile-fail/trustedpromise_mustnot_deriveclone.rs deleted file mode 100644 index 14ef7bbaa0d..00000000000 --- a/tests/compiletest/plugin/compile-fail/trustedpromise_mustnot_deriveclone.rs +++ /dev/null @@ -1,15 +0,0 @@ -/* 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/. */ - -extern crate script; - -use script::test::TrustedPromise; - -fn cloneable<T: Clone>() { -} - -fn main() { - cloneable::<TrustedPromise>(); - //~^ ERROR the trait bound `script::test::TrustedPromise: std::clone::Clone` is not satisfied -} diff --git a/tests/compiletest/plugin/compile-fail/unrooted_must_root.rs b/tests/compiletest/plugin/compile-fail/unrooted_must_root.rs deleted file mode 100644 index 5fd1960d074..00000000000 --- a/tests/compiletest/plugin/compile-fail/unrooted_must_root.rs +++ /dev/null @@ -1,27 +0,0 @@ -/* 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/. */ - -#![allow(dead_code)] -#![feature(plugin)] -#![plugin(script_plugins)] - -#[must_root] -struct Foo { - v: i32 -} - -struct Bar { - f: Foo - //~^ ERROR Type must be rooted, use #[must_root] on the struct definition to propagate -} - -fn foo1(_: Foo) {} //~ ERROR Type must be rooted - - -fn foo2() -> Foo { //~ ERROR Type must be rooted - Foo { v: 10 } -} - - -fn main() {} diff --git a/tests/compiletest/plugin/lib.rs b/tests/compiletest/plugin/lib.rs deleted file mode 100644 index d3466c57b9b..00000000000 --- a/tests/compiletest/plugin/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -/* 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/. */ - -extern crate compiletest_helper; - -#[test] -fn compile_test() { - compiletest_helper::run_mode("compile-fail"); -} diff --git a/tests/unit/deny_public_fields/Cargo.toml b/tests/unit/deny_public_fields/Cargo.toml new file mode 100644 index 00000000000..679069d2c1b --- /dev/null +++ b/tests/unit/deny_public_fields/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "deny_public_fields_tests" +version = "0.0.1" +authors = ["The Servo Project Developers"] +license = "MPL-2.0" + +[lib] +path = "lib.rs" +test = false + +[dependencies] +deny_public_fields = {path = "../../../components/deny_public_fields"} diff --git a/tests/compiletest/plugin/compile-fail/deny_public_fields.rs b/tests/unit/deny_public_fields/lib.rs index 622b2c20fe1..1fcb1314cf3 100644 --- a/tests/compiletest/plugin/compile-fail/deny_public_fields.rs +++ b/tests/unit/deny_public_fields/lib.rs @@ -2,17 +2,32 @@ * 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/. */ -#![allow(dead_code)] - -#[macro_use] -extern crate deny_public_fields; +/** +```compile_fail +#[macro_use] extern crate deny_public_fields; #[derive(DenyPublicFields)] -//~^ ERROR proc-macro derive panicked -//~| HELP Field `v1` should not be public struct Foo { pub v1: i32, v2: i32 } fn main() {} +``` +*/ +pub fn deny_public_fields_failing() {} + +/** +``` +#[macro_use] extern crate deny_public_fields; + +#[derive(DenyPublicFields)] +struct Foo { + v1: i32, + v2: i32 +} + +fn main() {} +``` +*/ +pub fn deny_public_fields_ok() {} diff --git a/tests/unit/malloc_size_of/Cargo.toml b/tests/unit/malloc_size_of/Cargo.toml new file mode 100644 index 00000000000..80668d5ba61 --- /dev/null +++ b/tests/unit/malloc_size_of/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "malloc_size_of_tests" +version = "0.0.1" +authors = ["The Servo Project Developers"] +license = "MPL-2.0" + +[lib] +path = "lib.rs" +test = false + +[dependencies] +malloc_size_of = {path = "../../../components/malloc_size_of"} +servo_arc = {path = "../../../components/servo_arc"} diff --git a/tests/unit/malloc_size_of/lib.rs b/tests/unit/malloc_size_of/lib.rs new file mode 100644 index 00000000000..8aae5a40310 --- /dev/null +++ b/tests/unit/malloc_size_of/lib.rs @@ -0,0 +1,109 @@ +/* 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/. */ + +/** +``` +extern crate malloc_size_of; +extern crate servo_arc; + +fn sizeable<T: malloc_size_of::MallocSizeOf>() {} +fn shallow_sizeable<T: malloc_size_of::MallocShallowSizeOf>() {} +fn cloneable<T: Clone>() {} + +fn main() { + cloneable::<servo_arc::Arc<i32>>(); + cloneable::<std::sync::Arc<i32>>(); + cloneable::<std::rc::Rc<i32>>(); +} +``` +*/ +pub fn imports_ok() {} + +pub mod does_not_impl_malloc_size_of { + /** + ```compile_fail,E0277 + extern crate malloc_size_of; + extern crate servo_arc; + + fn sizeable<T: malloc_size_of::MallocSizeOf>() {} + + fn main() { + sizeable::<servo_arc::Arc<i32>>(); + } + ``` + */ + pub fn servo_arc() {} + + + /** + ```compile_fail,E0277 + extern crate malloc_size_of; + + fn sizeable<T: malloc_size_of::MallocSizeOf>() {} + + fn main() { + sizeable::<std::sync::Arc<i32>>(); + } + ``` + */ + pub fn std_arc() {} + + + /** + ```compile_fail,E0277 + extern crate malloc_size_of; + + fn sizeable<T: malloc_size_of::MallocSizeOf>() {} + + fn main() { + sizeable::<std::rc::Rc<i32>>(); + } + ``` + */ + pub fn rc() {} +} + +pub mod does_not_impl_malloc_shallow_size_of { + /** + ```compile_fail,E0277 + extern crate malloc_size_of; + extern crate servo_arc; + + fn shallow_sizeable<T: malloc_size_of::MallocShallowSizeOf>() {} + + fn main() { + shallow_sizeable::<servo_arc::Arc<i32>>(); + } + ``` + */ + pub fn servo_arc() {} + + + /** + ```compile_fail,E0277 + extern crate malloc_size_of; + + fn shallow_sizeable<T: malloc_size_of::MallocShallowSizeOf>() {} + + fn main() { + shallow_sizeable::<std::sync::Arc<i32>>(); + } + ``` + */ + pub fn std_arc() {} + + + /** + ```compile_fail,E0277 + extern crate malloc_size_of; + + fn shallow_sizeable<T: malloc_size_of::MallocShallowSizeOf>() {} + + fn main() { + shallow_sizeable::<std::rc::Rc<i32>>(); + } + ``` + */ + pub fn rc() {} +} diff --git a/tests/unit/script/Cargo.toml b/tests/unit/script/Cargo.toml index 7785cced6a9..7983d119f38 100644 --- a/tests/unit/script/Cargo.toml +++ b/tests/unit/script/Cargo.toml @@ -7,7 +7,6 @@ license = "MPL-2.0" [lib] name = "script_tests" path = "lib.rs" -doctest = false [dependencies] euclid = "0.15" diff --git a/tests/unit/script/lib.rs b/tests/unit/script/lib.rs index 21b89a304c5..6d724db5358 100644 --- a/tests/unit/script/lib.rs +++ b/tests/unit/script/lib.rs @@ -2,11 +2,11 @@ * 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/. */ -extern crate euclid; -extern crate msg; -extern crate script; -extern crate servo_url; -extern crate style; +#[cfg(test)] extern crate euclid; +#[cfg(test)] extern crate msg; +#[cfg(test)] extern crate script; +#[cfg(test)] extern crate servo_url; +#[cfg(test)] extern crate style; #[cfg(test)] mod origin; #[cfg(all(test, target_pointer_width = "64"))] mod size_of; @@ -15,3 +15,15 @@ extern crate style; #[cfg(test)] mod htmlareaelement; #[cfg(test)] mod htmlimageelement; +/** +```compile_fail,E0277 +extern crate script; + +fn cloneable<T: Clone>() {} + +fn main() { + cloneable::<script::test::TrustedPromise>(); +} +``` +*/ +pub fn trustedpromise_does_not_impl_clone() {} diff --git a/tests/compiletest/helper/Cargo.toml b/tests/unit/script_plugins/Cargo.toml index 01c5816668d..8a41b62aa8f 100644 --- a/tests/compiletest/helper/Cargo.toml +++ b/tests/unit/script_plugins/Cargo.toml @@ -1,13 +1,12 @@ [package] -name = "compiletest_helper" +name = "script_plugins_tests" version = "0.0.1" authors = ["The Servo Project Developers"] license = "MPL-2.0" [lib] -name = "compiletest_helper" path = "lib.rs" -doctest = false +test = false [dependencies] -compiletest_rs = "0.2.0" +script_plugins = {path = "../../../components/script_plugins"} diff --git a/tests/unit/script_plugins/lib.rs b/tests/unit/script_plugins/lib.rs new file mode 100644 index 00000000000..35a1c0dff11 --- /dev/null +++ b/tests/unit/script_plugins/lib.rs @@ -0,0 +1,63 @@ +/* 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/. */ + +pub mod unrooted_must_root { + /** + ``` + #![feature(plugin)] + #![plugin(script_plugins)] + + #[must_root] struct Foo(i32); + #[must_root] struct Bar(Foo); + + fn foo1(_: &Foo) {} + fn foo2(_: &()) -> &Foo { unimplemented!() } + + fn main() {} + ``` + */ + pub fn ok() {} + + /** + ```compile_fail + #![feature(plugin)] + #![plugin(script_plugins)] + + #[must_root] struct Foo(i32); + struct Bar(Foo); + + fn main() {} + ``` + */ + pub fn struct_field() {} + + /** + ```compile_fail + #![feature(plugin)] + #![plugin(script_plugins)] + + #[must_root] struct Foo(i32); + + fn foo1(_: Foo) {} + + fn main() {} + ``` + */ + pub fn parameter() {} + + /** + ```compile_fail + #![feature(plugin)] + #![plugin(script_plugins)] + + #[must_root] struct Foo(i32); + + fn foo2() -> Foo { unimplemented!() } + + fn main() {} + ``` + */ + pub fn return_type() {} + +} |