diff --git a/src/tests.rs b/src/tests.rs index fd5127d9..846f38f4 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -21,6 +21,15 @@ use super::{ ToCss, Token, TokenSerializationType, UnicodeRange, }; +fn css_parsing_test_json(file_name: &str) -> String { + let path = format!( + "{}/src/css-parsing-tests/{}", + env!("CARGO_MANIFEST_DIR"), + file_name + ); + std::fs::read_to_string(&path).unwrap() +} + macro_rules! JArray { ($($e: expr,)*) => { JArray![ $( $e ),* ] }; ($($e: expr),*) => { Value::Array(vec!( $( $e.to_json() ),* )) } @@ -108,7 +117,7 @@ fn run_json_tests Value>(json_data: &str, parse: F) { #[test] fn component_value_list() { run_json_tests( - include_str!("css-parsing-tests/component_value_list.json"), + &css_parsing_test_json("component_value_list.json"), |input| Value::Array(component_values_to_json(input)), ); } @@ -116,7 +125,7 @@ fn component_value_list() { #[test] fn one_component_value() { run_json_tests( - include_str!("css-parsing-tests/one_component_value.json"), + &css_parsing_test_json("one_component_value.json"), |input| { let result: Result> = input.parse_entirely(|input| { Ok(one_component_value_to_json(input.next()?.clone(), input)) @@ -128,31 +137,25 @@ fn one_component_value() { #[test] fn declaration_list() { - run_json_tests( - include_str!("css-parsing-tests/declaration_list.json"), - |input| { - Value::Array( - RuleBodyParser::new(input, &mut JsonParser) - .map(|result| result.unwrap_or(JArray!["error", "invalid"])) - .collect(), - ) - }, - ); + run_json_tests(&css_parsing_test_json("declaration_list.json"), |input| { + Value::Array( + RuleBodyParser::new(input, &mut JsonParser) + .map(|result| result.unwrap_or(JArray!["error", "invalid"])) + .collect(), + ) + }); } #[test] fn one_declaration() { - run_json_tests( - include_str!("css-parsing-tests/one_declaration.json"), - |input| { - parse_one_declaration(input, &mut JsonParser).unwrap_or(JArray!["error", "invalid"]) - }, - ); + run_json_tests(&css_parsing_test_json("one_declaration.json"), |input| { + parse_one_declaration(input, &mut JsonParser).unwrap_or(JArray!["error", "invalid"]) + }); } #[test] fn rule_list() { - run_json_tests(include_str!("css-parsing-tests/rule_list.json"), |input| { + run_json_tests(&css_parsing_test_json("rule_list.json"), |input| { Value::Array( RuleBodyParser::new(input, &mut JsonParser) .map(|result| result.unwrap_or(JArray!["error", "invalid"])) @@ -163,7 +166,7 @@ fn rule_list() { #[test] fn stylesheet() { - run_json_tests(include_str!("css-parsing-tests/stylesheet.json"), |input| { + run_json_tests(&css_parsing_test_json("stylesheet.json"), |input| { Value::Array( StyleSheetParser::new(input, &mut JsonParser) .map(|result| result.unwrap_or(JArray!["error", "invalid"])) @@ -174,7 +177,7 @@ fn stylesheet() { #[test] fn one_rule() { - run_json_tests(include_str!("css-parsing-tests/one_rule.json"), |input| { + run_json_tests(&css_parsing_test_json("one_rule.json"), |input| { parse_one_rule(input, &mut JsonParser).unwrap_or(JArray!["error", "invalid"]) }); } @@ -200,7 +203,7 @@ fn stylesheet_from_bytes() { } run_raw_json_tests( - include_str!("css-parsing-tests/stylesheet_bytes.json"), + &css_parsing_test_json("stylesheet_bytes.json"), |input, expected| { let map = match input { Value::Object(map) => map, @@ -354,7 +357,7 @@ fn test_expect_url() { #[test] fn nth() { - run_json_tests(include_str!("css-parsing-tests/An+B.json"), |input| { + run_json_tests(&css_parsing_test_json("An+B.json"), |input| { input .parse_entirely(|i| { let result: Result<_, ParseError<()>> = parse_nth(i).map_err(Into::into); @@ -383,7 +386,7 @@ fn parse_comma_separated_ignoring_errors() { #[test] fn unicode_range() { - run_json_tests(include_str!("css-parsing-tests/urange.json"), |input| { + run_json_tests(&css_parsing_test_json("urange.json"), |input| { let result: Result<_, ParseError<()>> = input.parse_comma_separated(|input| { let result = UnicodeRange::parse(input).ok().map(|r| (r.start, r.end)); if input.is_exhausted() { @@ -420,7 +423,7 @@ fn serializer_preserving_comments() { fn serializer(preserve_comments: bool) { run_json_tests( - include_str!("css-parsing-tests/component_value_list.json"), + &css_parsing_test_json("component_value_list.json"), |input| { fn write_to( mut previous_token: TokenSerializationType,