Skip to content

Commit

Permalink
Merge branch 'main-upstream' into resvg-next
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/render/path.rs
#	tests/scripts/gen-tests.py
  • Loading branch information
LaurenzV committed Feb 17, 2024
2 parents 3414266 + b583dfe commit 73611a1
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 28 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 13 additions & 12 deletions tests/scripts/gen-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,8 @@

IGNORE_TESTS = {
# The following test cases still need to be investigated
"svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg": INVESTIGATE,
"svg/resvg/masking/mask/recursive-on-child.svg": INVESTIGATE,
"svg/resvg/paint-servers/pattern/nested-objectBoundingBox.svg": INVESTIGATE,
"svg/resvg/paint-servers/radialGradient/fr=0.2.svg": INVESTIGATE,
"svg/resvg/paint-servers/radialGradient/fr=0.5.svg": INVESTIGATE,
"svg/resvg/paint-servers/radialGradient/fr=0.7.svg": INVESTIGATE,
"svg/resvg/paint-servers/radialGradient/fr=-1.svg": INVESTIGATE,
"svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg": INVESTIGATE,

"svg/resvg/painting/stroke-dasharray/n-0.svg": INVESTIGATE,
"svg/resvg/structure/image/image-with-float-size-scaling.svg": INVESTIGATE,
"svg/resvg/structure/svg/funcIRI-parsing.svg": INVESTIGATE,
Expand All @@ -35,7 +29,9 @@
"svg/resvg/text/text/compound-emojis.svg": INVESTIGATE,
"svg/resvg/text/text/compound-emojis-and-coordinates-list.svg": INVESTIGATE,
"svg/resvg/text/text/emojis.svg": INVESTIGATE,

# The following test cases need to be excluded due to technical reasons
# and are not considered as wrong.
"svg/resvg/filters/feMorphology/huge-radius.svg": "will timeout CI",
"svg/resvg/filters/filter/huge-region.svg": "will sigkill",
"svg/resvg/structure/svg/negative-size.svg": "invalid size",
Expand All @@ -45,8 +41,6 @@
"svg/resvg/filters/feImage/simple-case.svg": NO_RELATIVE_PATHS,
"svg/resvg/painting/marker/with-an-image-child.svg": NO_RELATIVE_PATHS,
"svg/resvg/painting/mix-blend-mode/color-dodge.svg": "pdfium bug",
"svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg": NO_SUPPORT,
"svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg": NO_SUPPORT,
"svg/resvg/painting/stroke-linejoin/miter-clip.svg": NO_SUPPORT,
"svg/resvg/structure/image/external-gif.svg": NO_RELATIVE_PATHS,
"svg/resvg/structure/image/external-jpeg.svg": NO_RELATIVE_PATHS,
Expand All @@ -67,16 +61,23 @@
"svg/resvg/structure/image/width-and-height-set-to-auto.svg": NO_RELATIVE_PATHS,
"svg/resvg/structure/image/zero-height.svg": NO_RELATIVE_PATHS,
"svg/resvg/structure/image/zero-width.svg": NO_RELATIVE_PATHS,
# The following test cases are not implemented in svg2pdf yet

# The following test cases should work but are not implemented in svg2pdf yet.
"svg/resvg/paint-servers/linearGradient/attributes-via-xlink-href-complex-order.svg": NO_REFLECT,
"svg/resvg/paint-servers/linearGradient/attributes-via-xlink-href-from-radialGradient.svg": NO_REFLECT,
"svg/resvg/paint-servers/linearGradient/spreadMethod=reflect.svg": NO_REFLECT,
"svg/resvg/paint-servers/linearGradient/spreadMethod=repeat.svg": NO_REPEAT,
"svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-complex-order.svg": NO_REFLECT,
"svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-complex-order.svg":NO_REFLECT,
"svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-from-linearGradient.svg": NO_REFLECT,
"svg/resvg/paint-servers/radialGradient/spreadMethod=reflect.svg": NO_REFLECT,
"svg/resvg/paint-servers/radialGradient/spreadMethod=repeat.svg": NO_REPEAT,
"svg/custom/masking/mask/mask-and-image-with-transparency.svg": "bug",
"svg/custom/masking/mask/mask-and-image-with-transparency.svg": "bug. we currently override the soft mask that"
"is in place in the content stream by creating an"
"SMask entry in the Image XObject for transparency",
"svg/resvg/masking/mask/recursive-on-child.svg": "bug. the soft mask that will be created as part of the gradient"
"will override the soft mask currently in place when rendering",
"svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg": "need to check how Chrome does it",
"svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg": "need to check how Firefox does it",
}


Expand Down
26 changes: 10 additions & 16 deletions tests/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -257,8 +257,7 @@ use crate::run_test;
#[test] fn resvg_filters_feDistantLight_only_elevation() {assert_eq!(run_test("svg/resvg/filters/feDistantLight/only-elevation.svg", "ref/resvg/filters/feDistantLight/only-elevation.png", "diff/resvg/filters/feDistantLight/only-elevation.png", false), 0)}
#[test] fn resvg_filters_feDistantLight_default_attributes() {assert_eq!(run_test("svg/resvg/filters/feDistantLight/default-attributes.svg", "ref/resvg/filters/feDistantLight/default-attributes.png", "diff/resvg/filters/feDistantLight/default-attributes.png", false), 0)}
#[test] fn resvg_filters_fePointLight_complex_transform() {assert_eq!(run_test("svg/resvg/filters/fePointLight/complex-transform.svg", "ref/resvg/filters/fePointLight/complex-transform.png", "diff/resvg/filters/fePointLight/complex-transform.png", false), 0)}
// need to investigate
#[ignore] #[test] fn resvg_filters_fePointLight_primitiveUnits_objectBoundingBox() {assert_eq!(run_test("svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg", "ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", "diff/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", false), 0)}
#[test] fn resvg_filters_fePointLight_primitiveUnits_objectBoundingBox() {assert_eq!(run_test("svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg", "ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", "diff/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", false), 0)}
#[test] fn resvg_filters_fePointLight_custom_attributes() {assert_eq!(run_test("svg/resvg/filters/fePointLight/custom-attributes.svg", "ref/resvg/filters/fePointLight/custom-attributes.png", "diff/resvg/filters/fePointLight/custom-attributes.png", false), 0)}
#[test] fn resvg_filters_fePointLight_default_attributes() {assert_eq!(run_test("svg/resvg/filters/fePointLight/default-attributes.svg", "ref/resvg/filters/fePointLight/default-attributes.png", "diff/resvg/filters/fePointLight/default-attributes.png", false), 0)}
#[test] fn resvg_filters_filter_in_to_invalid_1() {assert_eq!(run_test("svg/resvg/filters/filter/in-to-invalid-1.svg", "ref/resvg/filters/filter/in-to-invalid-1.png", "diff/resvg/filters/filter/in-to-invalid-1.png", false), 0)}
Expand Down Expand Up @@ -412,25 +411,20 @@ use crate::run_test;
#[test] fn resvg_paint_servers_radialGradient_attributes_via_xlink_href() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href.svg", "ref/resvg/paint-servers/radialGradient/attributes-via-xlink-href.png", "diff/resvg/paint-servers/radialGradient/attributes-via-xlink-href.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_gradientTransform_and_transform() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientTransform-and-transform.svg", "ref/resvg/paint-servers/radialGradient/gradientTransform-and-transform.png", "diff/resvg/paint-servers/radialGradient/gradientTransform-and-transform.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_stops_via_xlink_href() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/stops-via-xlink-href.svg", "ref/resvg/paint-servers/radialGradient/stops-via-xlink-href.png", "diff/resvg/paint-servers/radialGradient/stops-via-xlink-href.png", false), 0)}
// need to investigate
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr__1() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=-1.svg", "ref/resvg/paint-servers/radialGradient/fr=-1.png", "diff/resvg/paint-servers/radialGradient/fr=-1.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fr__1() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=-1.svg", "ref/resvg/paint-servers/radialGradient/fr=-1.png", "diff/resvg/paint-servers/radialGradient/fr=-1.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_no_stops() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/no-stops.svg", "ref/resvg/paint-servers/radialGradient/no-stops.png", "diff/resvg/paint-servers/radialGradient/no-stops.png", false), 0)}
// need to investigate
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr_0_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.2.svg", "ref/resvg/paint-servers/radialGradient/fr=0.2.png", "diff/resvg/paint-servers/radialGradient/fr=0.2.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fr_0_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.2.svg", "ref/resvg/paint-servers/radialGradient/fr=0.2.png", "diff/resvg/paint-servers/radialGradient/fr=0.2.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_spreadMethod_pad() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/spreadMethod=pad.svg", "ref/resvg/paint-servers/radialGradient/spreadMethod=pad.png", "diff/resvg/paint-servers/radialGradient/spreadMethod=pad.png", false), 0)}
// need to investigate
#[ignore] #[test] fn resvg_paint_servers_radialGradient_invalid_gradientUnits() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg", "ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", "diff/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_invalid_gradientUnits() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg", "ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", "diff/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_gradientUnits_objectBoundingBox_with_percent() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientUnits=objectBoundingBox-with-percent.svg", "ref/resvg/paint-servers/radialGradient/gradientUnits=objectBoundingBox-with-percent.png", "diff/resvg/paint-servers/radialGradient/gradientUnits=objectBoundingBox-with-percent.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_invalid_spreadMethod() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/invalid-spreadMethod.svg", "ref/resvg/paint-servers/radialGradient/invalid-spreadMethod.png", "diff/resvg/paint-servers/radialGradient/invalid-spreadMethod.png", false), 0)}
// need to investigate
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr_0_5() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.5.svg", "ref/resvg/paint-servers/radialGradient/fr=0.5.png", "diff/resvg/paint-servers/radialGradient/fr=0.5.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fr_0_5() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.5.svg", "ref/resvg/paint-servers/radialGradient/fr=0.5.png", "diff/resvg/paint-servers/radialGradient/fr=0.5.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fx_resolving_1() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fx-resolving-1.svg", "ref/resvg/paint-servers/radialGradient/fx-resolving-1.png", "diff/resvg/paint-servers/radialGradient/fx-resolving-1.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_stops_via_xlink_href_from_linearGradient() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/stops-via-xlink-href-from-linearGradient.svg", "ref/resvg/paint-servers/radialGradient/stops-via-xlink-href-from-linearGradient.png", "diff/resvg/paint-servers/radialGradient/stops-via-xlink-href-from-linearGradient.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_many_stops() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/many-stops.svg", "ref/resvg/paint-servers/radialGradient/many-stops.png", "diff/resvg/paint-servers/radialGradient/many-stops.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fx_resolving_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fx-resolving-2.svg", "ref/resvg/paint-servers/radialGradient/fx-resolving-2.png", "diff/resvg/paint-servers/radialGradient/fx-resolving-2.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fx_resolving_3() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fx-resolving-3.svg", "ref/resvg/paint-servers/radialGradient/fx-resolving-3.png", "diff/resvg/paint-servers/radialGradient/fx-resolving-3.png", false), 0)}
// need to investigate
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr_0_7() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.7.svg", "ref/resvg/paint-servers/radialGradient/fr=0.7.png", "diff/resvg/paint-servers/radialGradient/fr=0.7.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_fr_0_7() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.7.svg", "ref/resvg/paint-servers/radialGradient/fr=0.7.png", "diff/resvg/paint-servers/radialGradient/fr=0.7.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_gradientTransform() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientTransform.svg", "ref/resvg/paint-servers/radialGradient/gradientTransform.png", "diff/resvg/paint-servers/radialGradient/gradientTransform.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_gradientUnits_userSpaceOnUse() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientUnits=userSpaceOnUse.svg", "ref/resvg/paint-servers/radialGradient/gradientUnits=userSpaceOnUse.png", "diff/resvg/paint-servers/radialGradient/gradientUnits=userSpaceOnUse.png", false), 0)}
#[test] fn resvg_paint_servers_radialGradient_zero_r_with_stop_opacity_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/zero-r-with-stop-opacity-2.svg", "ref/resvg/paint-servers/radialGradient/zero-r-with-stop-opacity-2.png", "diff/resvg/paint-servers/radialGradient/zero-r-with-stop-opacity-2.png", false), 0)}
Expand Down Expand Up @@ -826,10 +820,10 @@ use crate::run_test;
#[test] fn resvg_painting_stroke_linecap_butt() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/butt.svg", "ref/resvg/painting/stroke-linecap/butt.png", "diff/resvg/painting/stroke-linecap/butt.png", false), 0)}
#[test] fn resvg_painting_stroke_linecap_open_path_with_square() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/open-path-with-square.svg", "ref/resvg/painting/stroke-linecap/open-path-with-square.png", "diff/resvg/painting/stroke-linecap/open-path-with-square.png", false), 0)}
#[test] fn resvg_painting_stroke_linecap_round() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/round.svg", "ref/resvg/painting/stroke-linecap/round.png", "diff/resvg/painting/stroke-linecap/round.png", false), 0)}
// not supported in PDF
// need to check how Firefox does it
#[ignore] #[test] fn resvg_painting_stroke_linecap_zero_length_path_with_square() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg", "ref/resvg/painting/stroke-linecap/zero-length-path-with-square.png", "diff/resvg/painting/stroke-linecap/zero-length-path-with-square.png", false), 0)}
#[test] fn resvg_painting_stroke_linecap_square() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/square.svg", "ref/resvg/painting/stroke-linecap/square.png", "diff/resvg/painting/stroke-linecap/square.png", false), 0)}
// not supported in PDF
// need to check how Chrome does it
#[ignore] #[test] fn resvg_painting_stroke_linecap_zero_length_path_with_round() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg", "ref/resvg/painting/stroke-linecap/zero-length-path-with-round.png", "diff/resvg/painting/stroke-linecap/zero-length-path-with-round.png", false), 0)}
#[test] fn resvg_painting_stroke_linecap_open_path_with_butt() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/open-path-with-butt.svg", "ref/resvg/painting/stroke-linecap/open-path-with-butt.png", "diff/resvg/painting/stroke-linecap/open-path-with-butt.png", false), 0)}
#[test] fn resvg_painting_stroke_linecap_zero_length_path_with_butt() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/zero-length-path-with-butt.svg", "ref/resvg/painting/stroke-linecap/zero-length-path-with-butt.png", "diff/resvg/painting/stroke-linecap/zero-length-path-with-butt.png", false), 0)}
Expand Down Expand Up @@ -1681,7 +1675,7 @@ use crate::run_test;
#[test] fn resvg_masking_clipPath_clip_path_on_self_2() {assert_eq!(run_test("svg/resvg/masking/clipPath/clip-path-on-self-2.svg", "ref/resvg/masking/clipPath/clip-path-on-self-2.png", "diff/resvg/masking/clipPath/clip-path-on-self-2.png", false), 0)}
#[test] fn resvg_masking_mask_with_image() {assert_eq!(run_test("svg/resvg/masking/mask/with-image.svg", "ref/resvg/masking/mask/with-image.png", "diff/resvg/masking/mask/with-image.png", false), 0)}
#[test] fn resvg_masking_mask_maskUnits_userSpaceOnUse_without_rect() {assert_eq!(run_test("svg/resvg/masking/mask/maskUnits=userSpaceOnUse-without-rect.svg", "ref/resvg/masking/mask/maskUnits=userSpaceOnUse-without-rect.png", "diff/resvg/masking/mask/maskUnits=userSpaceOnUse-without-rect.png", false), 0)}
// need to investigate
// bug. the soft mask that will be created as part of the gradientwill override the soft mask currently in place when rendering
#[ignore] #[test] fn resvg_masking_mask_recursive_on_child() {assert_eq!(run_test("svg/resvg/masking/mask/recursive-on-child.svg", "ref/resvg/masking/mask/recursive-on-child.png", "diff/resvg/masking/mask/recursive-on-child.png", false), 0)}
#[test] fn resvg_masking_mask_maskUnits_userSpaceOnUse_with_rect() {assert_eq!(run_test("svg/resvg/masking/mask/maskUnits=userSpaceOnUse-with-rect.svg", "ref/resvg/masking/mask/maskUnits=userSpaceOnUse-with-rect.png", "diff/resvg/masking/mask/maskUnits=userSpaceOnUse-with-rect.png", false), 0)}
#[test] fn resvg_masking_mask_mask_on_child() {assert_eq!(run_test("svg/resvg/masking/mask/mask-on-child.svg", "ref/resvg/masking/mask/mask-on-child.png", "diff/resvg/masking/mask/mask-on-child.png", false), 0)}
Expand Down Expand Up @@ -1776,5 +1770,5 @@ use crate::run_test;
#[test] fn custom_structure_viewbox_negative_viewbox() {assert_eq!(run_test("svg/custom/structure/viewbox/negative_viewbox.svg", "ref/custom/structure/viewbox/negative_viewbox.png", "diff/custom/structure/viewbox/negative_viewbox.png", false), 0)}
#[test] fn custom_masking_clipPath_clip_path_with_nested_clip_path_and_transform() {assert_eq!(run_test("svg/custom/masking/clipPath/clip-path-with-nested-clip-path-and-transform.svg", "ref/custom/masking/clipPath/clip-path-with-nested-clip-path-and-transform.png", "diff/custom/masking/clipPath/clip-path-with-nested-clip-path-and-transform.png", false), 0)}
#[test] fn custom_masking_clipPath_complex_clip_path_with_nested_clip_path_on_child() {assert_eq!(run_test("svg/custom/masking/clipPath/complex-clip-path-with-nested-clip-path-on-child.svg", "ref/custom/masking/clipPath/complex-clip-path-with-nested-clip-path-on-child.png", "diff/custom/masking/clipPath/complex-clip-path-with-nested-clip-path-on-child.png", false), 0)}
// bug
// bug. we currently override the soft mask thatis in place in the content stream by creating anSMask entry in the Image XObject for transparency
#[ignore] #[test] fn custom_masking_mask_mask_and_image_with_transparency() {assert_eq!(run_test("svg/custom/masking/mask/mask-and-image-with-transparency.svg", "ref/custom/masking/mask/mask-and-image-with-transparency.png", "diff/custom/masking/mask/mask-and-image-with-transparency.png", false), 0)}

0 comments on commit 73611a1

Please sign in to comment.