From e1e512f86b10c1c093cd28cbc22242a5ded4b283 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Sun, 25 Sep 2016 09:13:03 +0200 Subject: [PATCH] Run style unit tests in testing mode, disable some properties in testing mode --- components/servo/Cargo.toml | 1 + components/style/properties/data.py | 9 +++-- .../style/properties/longhand/box.mako.rs | 2 +- .../style/properties/longhand/text.mako.rs | 3 +- .../style/properties/shorthand/text.mako.rs | 3 +- python/servo/testing_commands.py | 39 +++++++++++++------ 6 files changed, 39 insertions(+), 18 deletions(-) diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 4943a01d98d..33875799061 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -24,6 +24,7 @@ default = ["webdriver", "max_log_level"] max_log_level = ["log/release_max_level_info"] webdriver = ["webdriver_server"] energy-profiling = ["profile_traits/energy-profiling"] +testing = ["style/testing"] [profile.release] opt-level = 3 diff --git a/components/style/properties/data.py b/components/style/properties/data.py index 1d2902ace70..2c9990ed7bc 100644 --- a/components/style/properties/data.py +++ b/components/style/properties/data.py @@ -185,9 +185,9 @@ class PropertiesData(object): def active_style_structs(self): return [s for s in self.style_structs if s.additional_methods or s.longhands] - def declare_longhand(self, name, products="gecko servo", **kwargs): + def declare_longhand(self, name, products="gecko servo", disable_when_testing=False, **kwargs): products = products.split() - if self.product not in products and not self.testing: + if self.product not in products and not (self.testing and not disable_when_testing): return longhand = Longhand(self.current_style_struct, name, **kwargs) @@ -200,9 +200,10 @@ class PropertiesData(object): return longhand - def declare_shorthand(self, name, sub_properties, products="gecko servo", *args, **kwargs): + def declare_shorthand(self, name, sub_properties, products="gecko servo", + disable_when_testing=False, *args, **kwargs): products = products.split() - if self.product not in products and not self.testing: + if self.product not in products and not (self.testing and not disable_when_testing): return sub_properties = [self.longhands_by_name[s] for s in sub_properties] diff --git a/components/style/properties/longhand/box.mako.rs b/components/style/properties/longhand/box.mako.rs index 3c3f5e9ae9f..becbe5ee300 100644 --- a/components/style/properties/longhand/box.mako.rs +++ b/components/style/properties/longhand/box.mako.rs @@ -920,7 +920,7 @@ ${helpers.single_keyword("-moz-appearance", animatable=False)} // Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-binding -<%helpers:longhand name="-moz-binding" products="gecko" animatable="False"> +<%helpers:longhand name="-moz-binding" products="gecko" animatable="False" disable_when_testing="True"> use cssparser::{CssStringWriter, ToCss}; use gecko_bindings::ptr::{GeckoArcPrincipal, GeckoArcURI}; use std::fmt::{self, Write}; diff --git a/components/style/properties/longhand/text.mako.rs b/components/style/properties/longhand/text.mako.rs index 2a886999ef0..bb65836915a 100644 --- a/components/style/properties/longhand/text.mako.rs +++ b/components/style/properties/longhand/text.mako.rs @@ -21,7 +21,8 @@ ${helpers.single_keyword("unicode-bidi", // FIXME: This prop should be animatable. <%helpers:longhand name="${'text-decoration' if product == 'servo' else 'text-decoration-line'}" custom_cascade="${product == 'servo'}" - animatable="False"> + animatable="False" + disable_when_testing="True"> use cssparser::ToCss; use std::fmt; use values::computed::ComputedValueAsSpecified; diff --git a/components/style/properties/shorthand/text.mako.rs b/components/style/properties/shorthand/text.mako.rs index d09e00b6ba4..0fc8ffec85e 100644 --- a/components/style/properties/shorthand/text.mako.rs +++ b/components/style/properties/shorthand/text.mako.rs @@ -8,7 +8,8 @@ sub_properties="text-decoration-color text-decoration-line text-decoration-style" - products="gecko"> + products="gecko" + disable_when_testing="True"> use cssparser::Color as CSSParserColor; use properties::longhands::{text_decoration_color, text_decoration_line, text_decoration_style}; use values::specified::CSSColor; diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 38248f9aae3..3f0a24feb10 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -210,14 +210,11 @@ class MachCommands(CommandBase): packages.discard('stylo') - args = ["cargo", "test"] - for crate in packages: - args += ["-p", "%s_tests" % crate] - args += test_patterns - - features = self.servo_features() - if features: - args += ["--features", "%s" % ' '.join(features)] + has_style = True + try: + packages.remove('style') + except KeyError: + has_style = False env = self.build_env() env["RUST_BACKTRACE"] = "1" @@ -230,9 +227,29 @@ class MachCommands(CommandBase): else: env["RUSTFLAGS"] = "-C link-args=-Wl,--subsystem,windows" - result = call(args, env=env, cwd=self.servo_crate()) - if result != 0: - return result + features = self.servo_features() + if len(packages) > 0: + args = ["cargo", "test"] + for crate in packages: + args += ["-p", "%s_tests" % crate] + args += test_patterns + + if features: + args += ["--features", "%s" % ' '.join(features)] + result = call(args, env=env, cwd=self.servo_crate()) + if result != 0: + return result + + # Run style tests with the testing feature + if has_style: + args = ["cargo", "test", "-p", "style_tests", "--features"] + if features: + args += ["%s" % ' '.join(features + ["testing"])] + else: + args += ["testing"] + result = call(args, env=env, cwd=self.servo_crate()) + if result != 0: + return result @Command('test-stylo', description='Run stylo unit tests',