Test cairo-ps in CI

This adds the necessary dependencies for testing cairo-ps to CI and sets
up jobs for testing the ps2 and ps3 backends.

Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter 2021-08-15 18:12:04 +02:00
parent 0e56ea9d5c
commit c1aaaff880
6 changed files with 864 additions and 1 deletions

View file

@ -8,7 +8,7 @@ include:
variables: variables:
FDO_UPSTREAM_REPO: 'cairo/cairo' FDO_UPSTREAM_REPO: 'cairo/cairo'
FDO_DISTRIBUTION_VERSION: '34' FDO_DISTRIBUTION_VERSION: '34'
FDO_DISTRIBUTION_TAG: '2021-08-26.0' FDO_DISTRIBUTION_TAG: '2021-09-20.0'
# TODO: should probably get its own image at some point instead of reusing the GStreamer one # TODO: should probably get its own image at some point instead of reusing the GStreamer one
# See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-image-tags.yml for latest # See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-image-tags.yml for latest
@ -73,6 +73,8 @@ fedora image:
librsvg2-devel librsvg2-devel
gtk2-devel gtk2-devel
poppler-glib-devel poppler-glib-devel
libspectre-devel
ghostscript
pixman-devel pixman-devel
systemd-devel systemd-devel
systemd-udev systemd-udev
@ -138,6 +140,24 @@ test fedora autotools pdf:
- export CAIRO_TEST_TARGET=pdf - export CAIRO_TEST_TARGET=pdf
- xvfb-run make check V=1 VERBOSE=1 - xvfb-run make check V=1 VERBOSE=1
test fedora autotools ps2:
extends: '.test fedora autotools'
script:
- export CAIRO_TEST_IGNORE_ps2_argb32=$(tr '\n' ',' < .gitlab-ci/ignore-ps2-argb32.txt)
- export CAIRO_TEST_IGNORE_ps2_rgb24=$(tr '\n' ',' < .gitlab-ci/ignore-ps2-rgb24.txt)
- export CAIRO_TEST_TARGET=ps2
- export CAIRO_TEST_UGLY_HACK_TO_IGNORE_PS_FAILURES=1
- xvfb-run make check V=1 VERBOSE=1
test fedora autotools ps3:
extends: '.test fedora autotools'
script:
- export CAIRO_TEST_IGNORE_ps3_argb32=$(tr '\n' ',' < .gitlab-ci/ignore-ps3-argb32.txt)
- export CAIRO_TEST_IGNORE_ps3_rgb24=$(tr '\n' ',' < .gitlab-ci/ignore-ps3-rgb24.txt)
- export CAIRO_TEST_TARGET=ps3
- export CAIRO_TEST_UGLY_HACK_TO_IGNORE_PS_FAILURES=1
- xvfb-run make check V=1 VERBOSE=1
test fedora autotools script: test fedora autotools script:
extends: '.test fedora autotools' extends: '.test fedora autotools'
script: script:

View file

@ -0,0 +1,206 @@
arc-direction
arc-looping-dash
bug-448
bug-51910
bug-bo-ricotz
bug-extents
bug-spline
caps
caps-05
caps-1
caps-2
caps-joins
caps-joins-05
caps-joins-1
caps-joins-2
caps-joins-curve
caps-sub-paths
caps-tails-curve
clear-source
clip-complex-bug61592
clip-disjoint
clip-fill
clip-fill-rule
clip-group-shapes-circles
clip-image
clip-nesting
clip-push-group
clip-rotate-image-surface-paint
clip-shape
clip-stroke
clip-text
clip-twice
clip-unbounded
close-path
close-path-current-point
copy-path
culled-glyphs
curve-to-as-line-to
dash-caps-joins
dash-curve
dash-infinite-loop
dash-no-dash
dash-offset
dash-offset-negative
dash-scale
dash-state
dash-zero-length
degenerate-arc
degenerate-curve-to
degenerate-dash
degenerate-path
degenerate-pen
degenerate-rel-curve-to
degenerate-solid-dash
drunkard-tails
extend-reflect
extend-reflect-similar
extended-blend
extended-blend-alpha-mask
extended-blend-solid
fallback
fill-and-stroke
fill-degenerate-sort-order
fill-image
fill-rule
filter-nearest-offset
finer-grained-fallbacks
font-matrix-translation
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
group-unaligned
hairline
hairline-anisotropic
hairline-anisotropic-incorrect
hairline-big
hairline-scaled
halo
halo-transform
horizontal-clip
inverse-text
joins
joins-loop
joins-retrace
joins-star
large-font
leaky-dash
leaky-dashed-rectangle
leaky-dashed-stroke
leaky-polygon
line-width
line-width-large-overlap-dashed
line-width-overlap
line-width-overlap-dashed
line-width-overlap-flipped
line-width-overlap-flopped
line-width-overlap-offset
line-width-scale
line-width-tolerance
long-dashed-lines
miter-precision
new-sub-path
operator-www
over-above-source
over-around-source
over-below-source
over-between-source
overlapping-glyphs
path-append
path-stroke-twice
pixman-downscale-fast-95
pixman-downscale-nearest-95
pixman-rotate
pthread-same-source
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
random-clip
random-intersections-curves-eo
random-intersections-curves-nz
random-intersections-eo
random-intersections-nonzero
record-extend-reflect
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-self-intersecting
record-text-transform
record1414x-fill-alpha
record1414x-select-font-face
record1414x-self-intersecting
record1414x-text-transform
record2x-select-font-face
record2x-self-intersecting
record2x-text-transform
record90-select-font-face
record90-self-intersecting
record90-text-transform
recordflip-select-font-face
recordflip-self-intersecting
recordflip-text-transform
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
rectilinear-dash
rectilinear-dash-scale
rectilinear-dash-scale-unaligned
rectilinear-grid
rectilinear-miter-limit
rectilinear-stroke
reflected-stroke
rotate-clip-image-surface-paint
rotate-image-surface-paint
rotate-stroke-box
rotated-clip
round-join-bug-520-bevel
round-join-bug-520-round
rounded-rectangle-fill
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
stroke-ctm-caps
stroke-clipped
stroke-image
stroke-open-box
select-font-face
self-copy-overlap
self-intersecting
shape-general-convex
shape-sierpinski
show-glyphs-advance
show-text-current-point
smask
smask-text
smp-glyph
spline-decomposition
stroke-clipped
stroke-ctm-caps
stroke-image
stroke-open-box
surface-pattern
surface-pattern-scale-down
surface-pattern-scale-down-extend-reflect
surface-pattern-scale-up
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tiger
transforms
trap-clip
twin
unclosed-strokes
user-font
user-font-color
user-font-mask
user-font-proxy
user-font-rescale
user-font-subpixel
world-map
world-map-fill
world-map-stroke

View file

@ -0,0 +1,197 @@
arc-direction
arc-looping-dash
bug-361
bug-431
bug-448
bug-51910
bug-bo-ricotz
bug-extents
bug-spline
caps
caps-05
caps-1
caps-2
caps-joins
caps-joins-05
caps-joins-1
caps-joins-2
caps-joins-curve
caps-sub-paths
caps-tails-curve
clear-source
clip-complex-bug61592
clip-fill
clip-fill-rule
clip-group-shapes-circles
clip-image
clip-nesting
clip-push-group
clip-rotate-image-surface-paint
clip-shape
clip-stroke
clip-text
clip-twice
close-path
close-path-current-point
copy-path
culled-glyphs
curve-to-as-line-to
dash-caps-joins
dash-curve
dash-infinite-loop
dash-no-dash
dash-offset
dash-offset-negative
dash-scale
dash-state
dash-zero-length
degenerate-arc
degenerate-curve-to
degenerate-dash
degenerate-path
degenerate-pen
degenerate-rel-curve-to
degenerate-solid-dash
drunkard-tails
extend-reflect
extend-reflect-similar
extended-blend-alpha-mask
fill-and-stroke
fill-degenerate-sort-order
fill-image
fill-rule
filter-nearest-offset
font-matrix-translation
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-constant-alpha
gradient-zero-stops
group-unaligned
hairline
hairline-anisotropic
hairline-anisotropic-incorrect
hairline-big
hairline-scaled
halo
halo-transform
horizontal-clip
image-surface-source
inverse-text
joins
joins-loop
joins-retrace
joins-star
large-font
leaky-dash
leaky-dashed-rectangle
leaky-dashed-stroke
leaky-polygon
line-width
line-width-large-overlap-dashed
line-width-overlap
line-width-overlap-dashed
line-width-overlap-flipped
line-width-overlap-flopped
line-width-overlap-offset
line-width-scale
line-width-tolerance
long-dashed-lines
miter-precision
new-sub-path
overlapping-glyphs
path-append
path-stroke-twice
pdf-surface-source
pixman-downscale-fast-95
pixman-downscale-nearest-95
pixman-rotate
ps-surface-source
pthread-same-source
radial-gradient-source
random-intersections-curves-eo
random-intersections-curves-nz
random-intersections-eo
random-intersections-nonzero
record-extend-reflect
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-self-intersecting
record-text-transform
record1414x-fill-alpha
record1414x-select-font-face
record1414x-self-intersecting
record1414x-text-transform
record2x-select-font-face
record2x-self-intersecting
record2x-text-transform
record90-select-font-face
record90-self-intersecting
record90-text-transform
recordflip-select-font-face
recordflip-self-intersecting
recordflip-text-transform
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
rectilinear-dash
rectilinear-dash-scale
rectilinear-dash-scale-unaligned
rectilinear-grid
rectilinear-miter-limit
rectilinear-stroke
reflected-stroke
rel-path
rotate-clip-image-surface-paint
rotate-image-surface-paint
rotate-stroke-box
round-join-bug-520-bevel
round-join-bug-520-round
rounded-rectangle-fill
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
scale-source-surface-paint
select-font-face
self-intersecting
set-source
shape-general-convex
shape-sierpinski
show-glyphs-advance
show-text-current-point
smask
smask-text
smp-glyph
source-surface-scale-paint
spline-decomposition
stroke-clipped
stroke-ctm-caps
stroke-image
stroke-open-box
surface-pattern
surface-pattern-scale-down
surface-pattern-scale-down-extend-reflect
surface-pattern-scale-up
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tiger
transforms
twin
unclosed-strokes
user-font
user-font-mask
user-font-proxy
user-font-rescale
user-font-subpixel
world-map
world-map-fill
world-map-stroke
xcb-surface-source
xlib-surface-source

View file

@ -0,0 +1,217 @@
arc-direction
arc-looping-dash
bug-448
bug-51910
bug-bo-ricotz
bug-extents
bug-image-compositor
bug-spline
caps
caps-05
caps-1
caps-2
caps-joins
caps-joins-05
caps-joins-1
caps-joins-2
caps-joins-curve
caps-sub-paths
caps-tails-curve
clear-source
clip-complex-bug61592
clip-disjoint
clip-fill
clip-fill-rule
clip-group-shapes-circles
clip-image
clip-nesting
clip-push-group
clip-rotate-image-surface-paint
clip-shape
clip-stroke
clip-text
clip-twice
clip-unbounded
close-path
close-path-current-point
copy-path
culled-glyphs
curve-to-as-line-to
dash-caps-joins
dash-curve
dash-infinite-loop
dash-no-dash
dash-offset
dash-offset-negative
dash-scale
dash-state
dash-zero-length
degenerate-arc
degenerate-curve-to
degenerate-dash
degenerate-path
degenerate-pen
degenerate-rel-curve-to
degenerate-solid-dash
drunkard-tails
extend-reflect
extend-reflect-similar
extended-blend
extended-blend-alpha-mask
extended-blend-solid
fallback
fill-and-stroke
fill-degenerate-sort-order
fill-image
fill-rule
filter-nearest-offset
filter-nearest-transformed
finer-grained-fallbacks
font-matrix-translation
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-constant-alpha
group-unaligned
hairline
hairline-anisotropic
hairline-anisotropic-incorrect
hairline-big
hairline-scaled
halo
halo-transform
horizontal-clip
inverse-text
joins
joins-loop
joins-retrace
joins-star
large-font
leaky-dash
leaky-dashed-rectangle
leaky-dashed-stroke
leaky-polygon
line-width
line-width-large-overlap-dashed
line-width-overlap
line-width-overlap-dashed
line-width-overlap-flipped
line-width-overlap-flopped
line-width-overlap-offset
line-width-scale
line-width-tolerance
linear-gradient
linear-gradient-reflect
linear-gradient-subset
long-dashed-lines
mask-transformed-image
mesh-pattern-conical
mesh-pattern-control-points
mesh-pattern-fold
mesh-pattern-overlap
miter-precision
new-sub-path
operator-www
over-around-source
over-below-source
overlapping-glyphs
path-append
path-stroke-twice
pixman-downscale-fast-95
pixman-downscale-nearest-95
pixman-rotate
pthread-same-source
push-group-color
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
radial-gradient-one-stop
random-clip
random-intersections-curves-eo
random-intersections-curves-nz
random-intersections-eo
random-intersections-nonzero
record-extend-reflect
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-self-intersecting
record-text-transform
record1414x-fill-alpha
record1414x-select-font-face
record1414x-self-intersecting
record1414x-text-transform
record2x-select-font-face
record2x-self-intersecting
record2x-text-transform
record90-select-font-face
record90-self-intersecting
record90-text-transform
recordflip-select-font-face
recordflip-self-intersecting
recordflip-text-transform
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
rectilinear-dash
rectilinear-dash-scale
rectilinear-dash-scale-unaligned
rectilinear-grid
rectilinear-miter-limit
rectilinear-stroke
reflected-stroke
rotate-clip-image-surface-paint
rotate-image-surface-paint
rotate-stroke-box
rotated-clip
round-join-bug-520-bevel
round-join-bug-520-round
rounded-rectangle-fill
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
stroke-ctm-caps
stroke-clipped
stroke-image
stroke-open-box
select-font-face
self-copy-overlap
self-intersecting
shape-general-convex
shape-sierpinski
show-glyphs-advance
show-text-current-point
smask
smask-text
smp-glyph
spline-decomposition
stroke-clipped
stroke-ctm-caps
stroke-image
stroke-open-box
surface-pattern
surface-pattern-scale-down
surface-pattern-scale-down-extend-reflect
surface-pattern-scale-up
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tiger
transforms
trap-clip
twin
unclosed-strokes
user-font
user-font-color
user-font-mask
user-font-proxy
user-font-rescale
user-font-subpixel
world-map
world-map-fill
world-map-stroke

View file

@ -0,0 +1,209 @@
arc-direction
arc-looping-dash
bug-361
bug-431
bug-448
bug-51910
bug-bo-ricotz
bug-extents
bug-image-compositor
bug-spline
caps
caps-05
caps-1
caps-2
caps-joins
caps-joins-05
caps-joins-1
caps-joins-2
caps-joins-curve
caps-sub-paths
caps-tails-curve
clear-source
clip-complex-bug61592
clip-fill
clip-fill-rule
clip-group-shapes-circles
clip-image
clip-nesting
clip-push-group
clip-rotate-image-surface-paint
clip-shape
clip-stroke
clip-text
clip-twice
close-path
close-path-current-point
copy-path
culled-glyphs
curve-to-as-line-to
dash-caps-joins
dash-curve
dash-infinite-loop
dash-no-dash
dash-offset
dash-offset-negative
dash-scale
dash-state
dash-zero-length
degenerate-arc
degenerate-curve-to
degenerate-dash
degenerate-path
degenerate-pen
degenerate-rel-curve-to
degenerate-solid-dash
drunkard-tails
extend-reflect
extend-reflect-similar
extended-blend-alpha-mask
fill-and-stroke
fill-degenerate-sort-order
fill-image
fill-rule
filter-nearest-offset
filter-nearest-transformed
font-matrix-translation
ft-color-font
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
gradient-zero-stops
group-unaligned
hairline
hairline-anisotropic
hairline-anisotropic-incorrect
hairline-big
hairline-scaled
halo
halo-transform
horizontal-clip
image-surface-source
inverse-text
joins
joins-loop
joins-retrace
joins-star
large-font
leaky-dash
leaky-dashed-rectangle
leaky-dashed-stroke
leaky-polygon
line-width
line-width-large-overlap-dashed
line-width-overlap
line-width-overlap-dashed
line-width-overlap-flipped
line-width-overlap-flopped
line-width-overlap-offset
line-width-scale
line-width-tolerance
linear-gradient
linear-gradient-reflect
linear-gradient-subset
long-dashed-lines
mask-transformed-image
mesh-pattern-conical
mesh-pattern-control-points
mesh-pattern-fold
mesh-pattern-overlap
miter-precision
new-sub-path
overlapping-glyphs
path-append
path-stroke-twice
pdf-surface-source
pixman-downscale-fast-95
pixman-downscale-nearest-95
pixman-rotate
ps-surface-source
pthread-same-source
push-group-color
radial-gradient-one-stop
radial-gradient-source
random-intersections-curves-eo
random-intersections-curves-nz
random-intersections-eo
random-intersections-nonzero
record-extend-reflect
record-neg-extents-bounded
record-neg-extents-unbounded
record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-self-intersecting
record-text-transform
record1414x-fill-alpha
record1414x-select-font-face
record1414x-self-intersecting
record1414x-text-transform
record2x-select-font-face
record2x-self-intersecting
record2x-text-transform
record90-select-font-face
record90-self-intersecting
record90-text-transform
recordflip-select-font-face
recordflip-self-intersecting
recordflip-text-transform
recordflip-whole-select-font-face
recordflip-whole-self-intersecting
recordflip-whole-text-transform
rectilinear-dash
rectilinear-dash-scale
rectilinear-dash-scale-unaligned
rectilinear-grid
rectilinear-miter-limit
rectilinear-stroke
reflected-stroke
rel-path
rotate-clip-image-surface-paint
rotate-image-surface-paint
rotate-stroke-box
round-join-bug-520-bevel
round-join-bug-520-round
rounded-rectangle-fill
rounded-rectangle-stroke
scale-offset-image
scale-offset-similar
scale-source-surface-paint
select-font-face
self-intersecting
set-source
shape-general-convex
shape-sierpinski
show-glyphs-advance
show-text-current-point
smask
smask-text
smp-glyph
source-surface-scale-paint
spline-decomposition
stroke-clipped
stroke-ctm-caps
stroke-image
stroke-open-box
surface-pattern
surface-pattern-scale-down
surface-pattern-scale-down-extend-reflect
surface-pattern-scale-up
text-glyph-range
text-pattern
text-rotate
text-transform
text-unhinted-metrics
thin-lines
tiger
transforms
trap-clip
twin
unclosed-strokes
user-font
user-font-mask
user-font-proxy
user-font-rescale
user-font-subpixel
world-map
world-map-fill
world-map-stroke
xcb-surface-source
xlib-surface-source

View file

@ -942,6 +942,20 @@ main (int argc, char **argv)
if (ctx.test->preamble != NULL) { if (ctx.test->preamble != NULL) {
status = _cairo_test_runner_preamble (&runner, &ctx); status = _cairo_test_runner_preamble (&runner, &ctx);
if (getenv ("CAIRO_TEST_UGLY_HACK_TO_IGNORE_PS_FAILURES")) {
if (strcmp (ctx.test_name, "ps-eps") == 0 || strcmp (ctx.test_name, "fallback-resolution") == 0) {
if (status == CAIRO_TEST_FAILURE) {
cairo_test_log (&ctx, "Turning FAIL into XFAIL due to env\n");
fprintf (stderr, "Turning FAIL into XFAIL due to env\n");
runner.num_ignored_via_env++;
status = CAIRO_TEST_XFAILURE;
} else {
fprintf (stderr, "Test was expected to fail due to an environment variable, but did not!\n");
fprintf (stderr, "Please update the corresponding CAIRO_TEST_IGNORE_* variable.\n");
status = CAIRO_TEST_ERROR;
}
}
}
switch (status) { switch (status) {
case CAIRO_TEST_SUCCESS: case CAIRO_TEST_SUCCESS:
in_preamble = TRUE; in_preamble = TRUE;