From 018968877a696c03774f49b702e70f37665ed910 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Fri, 4 Aug 2017 08:34:36 -0400 Subject: [PATCH] move specified values size testing entirely into stylo_tests This change means that stylo_tests doesn't depend on a version of the style crate with the `testing` feature defined. --- .../style/properties/properties.mako.rs | 38 +------------- tests/unit/style/lib.rs | 4 +- tests/unit/style/size_of.rs | 5 -- tests/unit/stylo/lib.rs | 1 + tests/unit/stylo/size_of.rs | 5 -- tests/unit/stylo/specified_values.rs | 49 +++++++++++++++++++ 6 files changed, 54 insertions(+), 48 deletions(-) create mode 100644 tests/unit/stylo/specified_values.rs diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index d6c6faf964d4..f8e4cd9e327c 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -3414,7 +3414,7 @@ macro_rules! css_properties_accessors { } } - +#[macro_export] macro_rules! longhand_properties_idents { ($macro_name: ident) => { $macro_name! { @@ -3424,39 +3424,3 @@ macro_rules! longhand_properties_idents { } } } - -/// Testing function to check the size of all SpecifiedValues. -#[cfg(feature = "testing")] -pub fn test_size_of_specified_values() { - use std::mem::size_of; - let threshold = 24; - - let mut longhands = vec![]; - % for property in data.longhands: - longhands.push(("${property.name}", - size_of::(), - ${"true" if property.boxed else "false"})); - % endfor - - let mut failing_messages = vec![]; - - for specified_value in longhands { - if specified_value.1 > threshold && !specified_value.2 { - failing_messages.push( - format!("Your changes have increased the size of {} SpecifiedValue to {}. The threshold is \ - currently {}. SpecifiedValues affect size of PropertyDeclaration enum and \ - increasing the size may negative affect style system performance. Please consider \ - using `boxed=\"True\"` in this longhand.", - specified_value.0, specified_value.1, threshold)); - } else if specified_value.1 <= threshold && specified_value.2 { - failing_messages.push( - format!("Your changes have decreased the size of {} SpecifiedValue to {}. Good work! \ - The threshold is currently {}. Please consider removing `boxed=\"True\"` from this longhand.", - specified_value.0, specified_value.1, threshold)); - } - } - - if !failing_messages.is_empty() { - panic!("{}", failing_messages.join("\n\n")); - } -} diff --git a/tests/unit/style/lib.rs b/tests/unit/style/lib.rs index 0647a59251fd..572a608d212d 100644 --- a/tests/unit/style/lib.rs +++ b/tests/unit/style/lib.rs @@ -19,7 +19,7 @@ extern crate servo_atoms; extern crate servo_config; extern crate servo_url; #[macro_use] extern crate size_of_test; -extern crate style; +#[macro_use] extern crate style; extern crate style_traits; extern crate test; @@ -32,6 +32,8 @@ mod parsing; mod properties; mod rule_tree; mod size_of; +#[path = "../stylo/specified_values.rs"] +mod specified_values; mod str; mod stylesheets; mod stylist; diff --git a/tests/unit/style/size_of.rs b/tests/unit/style/size_of.rs index 486fecf4e25f..3f15a8d24e44 100644 --- a/tests/unit/style/size_of.rs +++ b/tests/unit/style/size_of.rs @@ -12,8 +12,3 @@ size_of_test!(test_size_of_property_declaration, properties::PropertyDeclaration // This is huge, but we allocate it on the stack and then never move it, // we only pass `&mut SourcePropertyDeclaration` references around. size_of_test!(test_size_of_parsed_declaration, properties::SourcePropertyDeclaration, 576); - -#[test] -fn size_of_specified_values() { - ::style::properties::test_size_of_specified_values(); -} diff --git a/tests/unit/stylo/lib.rs b/tests/unit/stylo/lib.rs index 05a32869c4eb..45b9d63a9fda 100644 --- a/tests/unit/stylo/lib.rs +++ b/tests/unit/stylo/lib.rs @@ -14,6 +14,7 @@ extern crate style_traits; mod sanity_checks; mod size_of; +mod specified_values; mod servo_function_signatures; diff --git a/tests/unit/stylo/size_of.rs b/tests/unit/stylo/size_of.rs index 4f4521df9e28..3a830e1c40a2 100644 --- a/tests/unit/stylo/size_of.rs +++ b/tests/unit/stylo/size_of.rs @@ -47,8 +47,3 @@ size_of_test!(test_size_of_rule_node, RuleNode, 80); // This is huge, but we allocate it on the stack and then never move it, // we only pass `&mut SourcePropertyDeclaration` references around. size_of_test!(test_size_of_parsed_declaration, style::properties::SourcePropertyDeclaration, 704); - -#[test] -fn size_of_specified_values() { - ::style::properties::test_size_of_specified_values(); -} diff --git a/tests/unit/stylo/specified_values.rs b/tests/unit/stylo/specified_values.rs new file mode 100644 index 000000000000..484f9534502b --- /dev/null +++ b/tests/unit/stylo/specified_values.rs @@ -0,0 +1,49 @@ +/* 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 style; + +#[test] +fn size_of_specified_values() { + use std::mem::size_of; + let threshold = 24; + + let mut bad_properties = vec![]; + + macro_rules! check_property { + ( $( { $name: ident, $boxed: expr } )+ ) => { + $( + let size = size_of::(); + let is_boxed = $boxed; + if (!is_boxed && size > threshold) || (is_boxed && size <= threshold) { + bad_properties.push(("$name", size, is_boxed)); + } + )+ + } + } + + longhand_properties_idents!(check_property); + + let mut failing_messages = vec![]; + + for bad_prop in bad_properties { + if !bad_prop.2 { + failing_messages.push( + format!("Your changes have increased the size of {} SpecifiedValue to {}. The threshold is \ + currently {}. SpecifiedValues affect size of PropertyDeclaration enum and \ + increasing the size may negative affect style system performance. Please consider \ + using `boxed=\"True\"` in this longhand.", + bad_prop.0, bad_prop.1, threshold)); + } else if bad_prop.2 { + failing_messages.push( + format!("Your changes have decreased the size of {} SpecifiedValue to {}. Good work! \ + The threshold is currently {}. Please consider removing `boxed=\"True\"` from this longhand.", + bad_prop.0, bad_prop.1, threshold)); + } + } + + if !failing_messages.is_empty() { + panic!("{}", failing_messages.join("\n\n")); + } +}