• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

pdiff/H03-May-2022-2,0581,670

reference/H03-May-2022-

COPYINGH A D26-Nov-20201 KiB2719

Makefile.amH A D03-May-202212.1 KiB412318

Makefile.inH A D03-May-20221.1 MiB10,2979,201

Makefile.sourcesH A D26-Nov-202011.4 KiB464447

Makefile.win32H A D26-Nov-20201.6 KiB5639

READMEH A D26-Nov-202011.7 KiB283219

a1-bug.cH A D26-Nov-20201.9 KiB6232

a1-clip.cH A D26-Nov-20204.7 KiB176111

a1-fill.cH A D26-Nov-20202.2 KiB6831

a1-image-sample.cH A D26-Nov-20202.3 KiB7435

a1-mask-sample.cH A D26-Nov-20202.6 KiB8442

a1-mask.cH A D26-Nov-20205.3 KiB203138

a1-rasterisation.cH A D26-Nov-20203.1 KiB10255

a1-sample.cH A D26-Nov-20201.9 KiB6024

a1-traps-sample.cH A D26-Nov-20202 KiB6528

a8-clear.cH A D26-Nov-20202 KiB6529

a8-mask.cH A D26-Nov-20205.4 KiB202134

aliasing.cH A D26-Nov-20203 KiB10160

alpha-similar.cH A D26-Nov-20202.3 KiB7534

any2ppm.cH A D26-Nov-202020.1 KiB899700

api-special-cases.cH A D26-Nov-202052.1 KiB1,9901,544

arc-direction.cH A D26-Nov-20203.2 KiB10664

arc-infinite-loop.cH A D26-Nov-20202.1 KiB6218

arc-looping-dash.cH A D26-Nov-20202.4 KiB8025

big-empty-box.cH A D26-Nov-20202.1 KiB6521

big-empty-triangle.cH A D26-Nov-20202.3 KiB7629

big-line.cH A D26-Nov-20202.1 KiB6330

big-little-box.cH A D26-Nov-20202.3 KiB7022

big-little-triangle.cH A D26-Nov-20202.4 KiB7730

big-trap.cH A D26-Nov-20203.6 KiB9326

bilevel-image.cH A D26-Nov-20202.1 KiB6429

bitmap-font.cH A D26-Nov-20207.8 KiB227158

buffer-diff.cH A D26-Nov-20208.5 KiB263161

buffer-diff.hH A D26-Nov-20202.5 KiB7425

bug-40410.cH A D26-Nov-20202.4 KiB7328

bug-51910.cH A D26-Nov-20202.6 KiB9249

bug-75705.cH A D26-Nov-2020772 3323

bug-84115.cH A D26-Nov-20201.9 KiB6228

bug-bo-collins.cH A D26-Nov-20202.4 KiB7743

bug-bo-rectangular.cH A D26-Nov-20202.1 KiB6832

bug-bo-ricotz.cH A D26-Nov-20202.6 KiB7538

bug-extents.cH A D26-Nov-20202.1 KiB6025

bug-seams.cH A D26-Nov-20203.9 KiB12158

bug-source-cu.cH A D26-Nov-20202.5 KiB8246

bug-spline.cH A D26-Nov-20202.7 KiB9658

cairo-test-constructors.cH A D28-Nov-202049.7 KiB1,1721,166

cairo-test-private.hH A D26-Nov-20202.3 KiB7330

cairo-test-runner.cH A D26-Nov-202025.8 KiB1,104919

cairo-test-trace.cH A D26-Nov-202039.4 KiB1,7901,403

cairo-test.cH A D26-Nov-202047.2 KiB1,8231,493

cairo-test.hH A D26-Nov-20209.6 KiB329188

caps-joins-alpha.cH A D26-Nov-20202.9 KiB9047

caps-joins-curve.cH A D26-Nov-20203.1 KiB11265

caps-joins.cH A D26-Nov-20204 KiB15198

caps-sub-paths.cH A D26-Nov-20202 KiB6625

caps-tails-curve.cH A D26-Nov-20203.5 KiB12878

caps.cH A D26-Nov-20203.6 KiB13993

check-refs.shH A D26-Nov-20201.9 KiB6445

checkerboard.cH A D26-Nov-20201.7 KiB4915

clear-source.cH A D26-Nov-20204.5 KiB170117

clear.cH A D26-Nov-20202.6 KiB8751

clip-all.cH A D26-Nov-20202.4 KiB7637

clip-complex-bug61592.cH A D26-Nov-20201.9 KiB6128

clip-complex-shape.cH A D26-Nov-20203.5 KiB11575

clip-contexts.cH A D26-Nov-20202.5 KiB7629

clip-device-offset.cH A D26-Nov-20202.5 KiB8041

clip-disjoint-hatching.cH A D26-Nov-20202.7 KiB10561

clip-disjoint-quad.cH A D26-Nov-20202.5 KiB8445

clip-disjoint.cH A D26-Nov-20202.6 KiB9148

clip-double-free.cH A D26-Nov-20203.8 KiB8819

clip-draw-unbounded.cH A D26-Nov-20204.8 KiB185132

clip-empty-group.cH A D26-Nov-20202.1 KiB6629

clip-empty-save.cH A D26-Nov-20202.1 KiB6931

clip-empty.cH A D26-Nov-20202.1 KiB6529

clip-fill-no-op.cH A D26-Nov-20202.2 KiB6826

clip-fill-rule-pixel-aligned.cH A D26-Nov-20202.7 KiB9155

clip-fill-rule.cH A D26-Nov-20202.6 KiB8853

clip-fill.cH A D26-Nov-20202.5 KiB7942

clip-group-shapes.cH A D26-Nov-20205.3 KiB189120

clip-image.cH A D26-Nov-20202.9 KiB9652

clip-intersect.cH A D26-Nov-20202.6 KiB9555

clip-mixed-antialias.cH A D26-Nov-20203.8 KiB12966

clip-nesting.cH A D26-Nov-20203.3 KiB11059

clip-operator.cH A D26-Nov-20205.4 KiB189130

clip-polygons.cH A D26-Nov-20203.1 KiB11369

clip-push-group.cH A D26-Nov-20202.2 KiB6826

clip-rectilinear.cH A D26-Nov-20202.4 KiB9149

clip-shape.cH A D26-Nov-20202.3 KiB8746

clip-stroke-no-op.cH A D26-Nov-20202.3 KiB6826

clip-stroke.cH A D26-Nov-20203.4 KiB12274

clip-text.cH A D26-Nov-20202.7 KiB8948

clip-twice-rectangle.cH A D26-Nov-20202.4 KiB7132

clip-twice.cH A D26-Nov-20202.5 KiB7541

clip-unbounded.cH A D26-Nov-20202.4 KiB8138

clip-zero.cH A D26-Nov-20202.3 KiB7334

clipped-group.cH A D26-Nov-20202.7 KiB8943

clipped-surface.cH A D26-Nov-20202.1 KiB6424

close-path-current-point.cH A D26-Nov-20203.1 KiB9654

close-path.cH A D26-Nov-20202.6 KiB7936

composite-integer-translate-over-repeat.cH A D26-Nov-20202.8 KiB8547

composite-integer-translate-over.cH A D26-Nov-20202.2 KiB6229

composite-integer-translate-source.cH A D26-Nov-20202.1 KiB6529

copy-disjoint.cH A D26-Nov-20202.6 KiB8840

copy-path.cH A D26-Nov-20209 KiB315246

coverage.cH A D26-Nov-202013.3 KiB507380

create-for-stream.cH A D26-Nov-20208.3 KiB312220

create-from-broken-png-stream.cH A D26-Nov-20202.9 KiB8847

create-from-png-stream.cH A D26-Nov-20203.4 KiB12069

create-from-png.cH A D26-Nov-202011.4 KiB321254

culled-glyphs.cH A D26-Nov-20202.3 KiB6327

curve-to-as-line-to.cH A D26-Nov-20203.1 KiB9636

dash-caps-joins.cH A D26-Nov-20203.1 KiB10557

dash-curve.cH A D26-Nov-20202.2 KiB6735

dash-infinite-loop.cH A D26-Nov-20203.1 KiB8431

dash-no-dash.cH A D26-Nov-20202.5 KiB8842

dash-offset-negative.cH A D26-Nov-20203 KiB10142

dash-offset.cH A D26-Nov-20203.1 KiB8437

dash-scale.cH A D26-Nov-20203.5 KiB12174

dash-state.cH A D26-Nov-20202.1 KiB6533

dash-zero-length.cH A D26-Nov-20204 KiB11171

degenerate-arc.cH A D26-Nov-20202.4 KiB7536

degenerate-arcs.cH A D26-Nov-20202 KiB5822

degenerate-curve-to.cH A D26-Nov-20202.9 KiB10456

degenerate-dash.cH A D26-Nov-20202.6 KiB9145

degenerate-linear-gradient.cH A D26-Nov-20202.5 KiB8240

degenerate-path.cH A D26-Nov-20203.8 KiB12162

degenerate-pen.cH A D26-Nov-20203.4 KiB10648

degenerate-radial-gradient.cH A D26-Nov-20202.9 KiB9450

degenerate-rel-curve-to.cH A D26-Nov-20202.9 KiB10051

degenerate-solid-dash.cH A D26-Nov-20202.2 KiB7034

device-offset-fractional.cH A D26-Nov-20202.4 KiB7335

device-offset-positive.cH A D26-Nov-20202.7 KiB8342

device-offset-scale.cH A D26-Nov-20202.8 KiB7831

device-offset.cH A D26-Nov-20202.6 KiB8340

drunkard-tails.cH A D26-Nov-20203.6 KiB13681

egl-oversized-surface.cH A D26-Nov-20203.3 KiB11874

egl-surface-source.cH A D26-Nov-20203.4 KiB13689

error-setters.cH A D26-Nov-20203.3 KiB11068

extend-pad-border.cH A D26-Nov-20203.2 KiB9652

extend-pad-similar.cH A D26-Nov-20202.7 KiB8339

extend-pad.cH A D26-Nov-20202.7 KiB8238

extend-reflect-similar.cH A D26-Nov-20201.5 KiB5241

extend-reflect.cH A D26-Nov-2020766 3022

extend-repeat-similar.cH A D26-Nov-20201.5 KiB5241

extend-repeat.cH A D26-Nov-2020726 2820

extended-blend.cH A D26-Nov-20207 KiB254181

fallback-resolution.cH A D26-Nov-202013.8 KiB518381

fallback.cH A D26-Nov-20202.4 KiB8040

fill-alpha-pattern.cH A D26-Nov-20203 KiB8847

fill-alpha.cH A D26-Nov-20202.7 KiB8342

fill-and-stroke-alpha-add.cH A D26-Nov-20203.2 KiB10859

fill-and-stroke-alpha.cH A D26-Nov-20203 KiB10256

fill-and-stroke.cH A D26-Nov-20202 KiB5927

fill-degenerate-sort-order.cH A D26-Nov-20202.7 KiB7825

fill-disjoint.cH A D26-Nov-20202 KiB6421

fill-empty.cH A D26-Nov-20202 KiB6327

fill-image.cH A D26-Nov-20202.9 KiB8444

fill-missed-stop.cH A D26-Nov-20202.5 KiB8422

fill-rule.cH A D26-Nov-20204.2 KiB12850

filter-bilinear-extents.cH A D26-Nov-20203.4 KiB10348

filter-nearest-offset.cH A D26-Nov-20203.5 KiB11065

filter-nearest-transformed.cH A D26-Nov-20203.7 KiB12172

finer-grained-fallbacks.cH A D26-Nov-20205.5 KiB181102

font-face-get-type.cH A D26-Nov-20202.8 KiB8041

font-matrix-translation.cH A D26-Nov-20204.6 KiB14291

font-options.cH A D26-Nov-20204.6 KiB11165

font-variations.cH A D26-Nov-20206.9 KiB206152

ft-font-create-for-ft-face.cH A D26-Nov-20207.2 KiB229149

ft-show-glyphs-positioning.cH A D26-Nov-20206.1 KiB192133

ft-show-glyphs-table.cH A D26-Nov-20203.8 KiB11052

ft-text-antialias-none.cH A D26-Nov-20204.5 KiB14790

ft-text-vertical-layout-type1.cH A D26-Nov-20205.3 KiB168111

ft-text-vertical-layout-type3.cH A D26-Nov-20205.2 KiB167110

generate_refs.shH A D26-Nov-2020338 137

get-and-set.cH A D26-Nov-20204.5 KiB160115

get-clip.cH A D26-Nov-20209.1 KiB265207

get-group-target.cH A D26-Nov-20203.1 KiB8633

get-path-extents.cH A D26-Nov-202017.2 KiB444335

get-xrender-format.cH A D26-Nov-20203.7 KiB12375

gl-device-release.cH A D26-Nov-20205.9 KiB183124

gl-oversized-surface.cH A D26-Nov-20202.8 KiB8950

gl-surface-source.cH A D26-Nov-20202.8 KiB11271

glyph-cache-pressure.cH A D26-Nov-20202.9 KiB8226

gradient-alpha.cH A D26-Nov-20201.9 KiB5724

gradient-constant-alpha.cH A D26-Nov-20202.1 KiB6227

gradient-zero-stops-mask.cH A D26-Nov-20202 KiB6020

gradient-zero-stops.cH A D26-Nov-20202 KiB5921

group-clip.cH A D26-Nov-20202 KiB5826

group-paint.cH A D26-Nov-20201.7 KiB4918

group-state.cH A D26-Nov-20203.1 KiB9751

group-unaligned.cH A D26-Nov-20202 KiB6128

half-coverage.cH A D26-Nov-20204 KiB15680

halo.cH A D26-Nov-20204.4 KiB15999

hatchings.cH A D26-Nov-20203.9 KiB15497

horizontal-clip.cH A D26-Nov-20202.7 KiB7839

huge-linear.cH A D26-Nov-20202.2 KiB6831

huge-radial.cH A D26-Nov-20202.3 KiB7031

image-bug-710072.cH A D26-Nov-20202.7 KiB8139

image-surface-source.cH A D26-Nov-20201.5 KiB4213

imagediff.cH A D26-Nov-20208.3 KiB304213

implicit-close.cH A D26-Nov-20201.8 KiB5522

in-fill-empty-trapezoid.cH A D26-Nov-20203.4 KiB11053

in-fill-trapezoid.cH A D26-Nov-20209.2 KiB280217

infinite-join.cH A D26-Nov-20202.4 KiB7328

invalid-matrix.cH A D26-Nov-202011.7 KiB375252

inverse-text.cH A D26-Nov-20202.4 KiB6830

inverted-clip.cH A D26-Nov-20201.8 KiB5721

joins-loop.cH A D26-Nov-20202.7 KiB10157

joins-retrace.cH A D26-Nov-20203 KiB11064

joins-star.cH A D26-Nov-20202.9 KiB10056

joins.cH A D26-Nov-20203 KiB11065

large-clip.cH A D26-Nov-20201.7 KiB5119

large-font.cH A D26-Nov-20202.5 KiB7424

large-source-roi.cH A D26-Nov-20202.7 KiB7936

large-source.cH A D26-Nov-20203.2 KiB10157

large-twin-antialias-mixed.cH A D26-Nov-20203.2 KiB9858

leaky-dash.cH A D26-Nov-20202.1 KiB6525

leaky-dashed-rectangle.cH A D26-Nov-20203.1 KiB8742

leaky-dashed-stroke.cH A D26-Nov-20206.2 KiB167124

leaky-polygon.cH A D26-Nov-20202.9 KiB8624

line-width-large-overlap.cH A D26-Nov-20204.5 KiB15094

line-width-overlap.cH A D26-Nov-20204.4 KiB15094

line-width-scale.cH A D26-Nov-20205 KiB17999

line-width-tolerance.cH A D26-Nov-20202.3 KiB6720

line-width-zero.cH A D26-Nov-20202.5 KiB7231

line-width.cH A D26-Nov-20202.4 KiB7843

linear-gradient-extend.cH A D26-Nov-20202.7 KiB9349

linear-gradient-large.cH A D26-Nov-20202.4 KiB6931

linear-gradient-one-stop.cH A D26-Nov-20202.7 KiB9148

linear-gradient-reflect.cH A D26-Nov-20202 KiB6830

linear-gradient-subset.cH A D26-Nov-20203.9 KiB12872

linear-gradient.cH A D26-Nov-20203.9 KiB13377

linear-step-function.cH A D26-Nov-20202.1 KiB6126

linear-uniform.cH A D26-Nov-20202.2 KiB6429

long-dashed-lines.cH A D26-Nov-20202.2 KiB6730

long-lines.cH A D26-Nov-20202.8 KiB8646

make-cairo-test-constructors.pyH A D26-Nov-20201.2 KiB3828

make-cairo-test-constructors.shH A D26-Nov-2020490 3218

map-to-image.cH A D26-Nov-20204.7 KiB159110

mask-alpha.cH A D26-Nov-20202.8 KiB8338

mask-ctm.cH A D26-Nov-20202.5 KiB8137

mask-glyphs.cH A D26-Nov-20204.9 KiB188135

mask-surface-ctm.cH A D26-Nov-20202.2 KiB7231

mask-transformed-image.cH A D26-Nov-20203.1 KiB9745

mask-transformed-similar.cH A D26-Nov-20203.1 KiB9947

mask.cH A D26-Nov-20206.6 KiB247172

mesh-pattern-accuracy.cH A D26-Nov-20203.3 KiB10043

mesh-pattern-conical.cH A D26-Nov-20203.8 KiB13686

mesh-pattern-control-points.cH A D26-Nov-20204 KiB11560

mesh-pattern-fold.cH A D26-Nov-20202.7 KiB8338

mesh-pattern-overlap.cH A D26-Nov-20202.5 KiB7734

mesh-pattern-transformed.cH A D26-Nov-20203.6 KiB10854

mesh-pattern.cH A D26-Nov-20203.3 KiB9548

meson.buildH A D26-Nov-202014.1 KiB628580

mime-data.cH A D26-Nov-20208.4 KiB296200

mime-surface-api.cH A D26-Nov-20204.4 KiB152106

mime-unique-id.cH A D26-Nov-202014.8 KiB512357

miter-precision.cH A D26-Nov-20202.5 KiB7335

move-to-show-surface.cH A D26-Nov-20202.6 KiB7928

multi-page.cH A D26-Nov-20205.5 KiB199121

negative-stride-image.cH A D26-Nov-20202.3 KiB7234

new-sub-path.cH A D26-Nov-20202.3 KiB7532

nil-surface.cH A D26-Nov-20205.5 KiB17178

operator-alpha-alpha.cH A D26-Nov-20205 KiB16797

operator-alpha.cH A D26-Nov-20202.1 KiB6631

operator-clear.cH A D26-Nov-20205.7 KiB197138

operator-source.cH A D26-Nov-20207 KiB251180

operator.cH A D26-Nov-20202.1 KiB6631

outline-tolerance.cH A D26-Nov-20201.8 KiB5320

over-above-source.cH A D26-Nov-20202.4 KiB7328

over-around-source.cH A D26-Nov-20202.8 KiB8435

over-below-source.cH A D26-Nov-20202.4 KiB7328

over-between-source.cH A D26-Nov-20202.8 KiB8435

overlapping-boxes.cH A D26-Nov-20202.7 KiB9749

overlapping-dash-caps.cH A D26-Nov-20202.1 KiB6830

overlapping-glyphs.cH A D26-Nov-20204 KiB12476

paint-clip-fill.cH A D26-Nov-20203.4 KiB10768

paint-repeat.cH A D26-Nov-20202.3 KiB6227

paint-source-alpha.cH A D26-Nov-20202.2 KiB6428

paint-with-alpha-group-clip.cH A D26-Nov-20202 KiB6124

paint-with-alpha.cH A D26-Nov-20204.5 KiB14993

paint.cH A D26-Nov-20201.6 KiB4918

partial-clip-text.cH A D26-Nov-20203.1 KiB12174

partial-coverage.cH A D26-Nov-202019 KiB681487

pass-through.cH A D26-Nov-20202.6 KiB9256

path-append.cH A D26-Nov-20202.7 KiB8247

path-currentpoint.cH A D26-Nov-20202.6 KiB9050

path-precision.cH A D26-Nov-20203.4 KiB11266

path-stroke-twice.cH A D26-Nov-20201.9 KiB5520

pattern-get-type.cH A D26-Nov-20202.9 KiB8043

pattern-getters.cH A D26-Nov-20207.4 KiB280201

pdf-features.cH A D26-Nov-20204.9 KiB14996

pdf-isolated-group.cH A D26-Nov-20202.4 KiB7427

pdf-mime-data.cH A D26-Nov-20205.4 KiB188131

pdf-surface-source.cH A D26-Nov-20201.9 KiB5422

pdf-tagged-text.cH A D26-Nov-202011.9 KiB410327

pdf2png.cH A D26-Nov-20203.1 KiB10461

pixman-downscale.cH A D26-Nov-20206.4 KiB204140

pixman-rotate.cH A D26-Nov-20202.8 KiB9351

png-flatten.cH A D26-Nov-20202.4 KiB7840

png.cH A D26-Nov-20205.6 KiB176126

ps-eps.cH A D26-Nov-20209.3 KiB355270

ps-features.cH A D26-Nov-20205.7 KiB167111

ps-surface-source.cH A D26-Nov-20201.9 KiB5422

ps2png.cH A D26-Nov-20203.5 KiB11473

pthread-same-source.cH A D26-Nov-20205.6 KiB193138

pthread-show-text.cH A D26-Nov-20204 KiB14388

pthread-similar.cH A D26-Nov-20203 KiB10764

push-group-color.cH A D26-Nov-20204.4 KiB14286

push-group-path-offset.cH A D26-Nov-20202.5 KiB7830

push-group.cH A D26-Nov-20203.9 KiB11465

quartz-surface-source.cH A D26-Nov-20201.6 KiB4314

radial-gradient-extend.cH A D26-Nov-20202.7 KiB9349

radial-gradient.cH A D26-Nov-20207.1 KiB257152

radial-outer-focus.cH A D26-Nov-20202.2 KiB7336

random-clips.cH A D26-Nov-20205.1 KiB233147

random-intersections-curves-eo.cH A D26-Nov-20202.7 KiB8549

random-intersections-curves-nz.cH A D26-Nov-20202.7 KiB8649

random-intersections-eo.cH A D26-Nov-20202.4 KiB7942

random-intersections-nonzero.cH A D26-Nov-20202.4 KiB8042

raster-source.cH A D26-Nov-20204.2 KiB14896

record-extend.cH A D26-Nov-20207.9 KiB289206

record-mesh.cH A D26-Nov-20204.9 KiB167101

record-neg-extents.cH A D26-Nov-20206.8 KiB218141

record-replay-extend.cH A D26-Nov-20207.3 KiB228161

record.cH A D26-Nov-202013.6 KiB503364

record1414x.cH A D26-Nov-202013.5 KiB499360

record2x.cH A D26-Nov-202013.2 KiB494356

record90.cH A D26-Nov-202013.3 KiB496358

recordflip.cH A D26-Nov-202019.6 KiB734562

recording-ink-extents.cH A D26-Nov-20204.6 KiB173113

recording-surface-extend.cH A D26-Nov-20205.3 KiB175118

recording-surface-pattern.cH A D26-Nov-20205 KiB163105

rectangle-rounding-error.cH A D26-Nov-20202.2 KiB6526

rectilinear-dash-scale.cH A D26-Nov-20205.6 KiB197116

rectilinear-dash.cH A D26-Nov-20205.1 KiB17798

rectilinear-fill.cH A D26-Nov-20202.5 KiB8540

rectilinear-grid.cH A D26-Nov-20202.8 KiB9342

rectilinear-miter-limit.cH A D26-Nov-20202.7 KiB7328

rectilinear-stroke.cH A D26-Nov-20204.4 KiB14068

reflected-stroke.cH A D26-Nov-20202.7 KiB9254

rel-path.cH A D26-Nov-20203.7 KiB13085

rgb24-ignore-alpha.cH A D26-Nov-20202 KiB6125

rotate-image-surface-paint.cH A D26-Nov-20205.4 KiB173104

rotate-stroke-box.cH A D26-Nov-20201.7 KiB5020

rotated-clip.cH A D26-Nov-20203.5 KiB11164

rounded-rectangle-fill.cH A D26-Nov-20202.3 KiB6630

rounded-rectangle-stroke.cH A D26-Nov-20202.3 KiB6529

run-cairo-test-suite.shH A D26-Nov-2020359 1911

sample.cH A D26-Nov-20203.4 KiB11869

scale-down-source-surface-paint.cH A D26-Nov-20202.4 KiB6629

scale-offset-image.cH A D26-Nov-20204.2 KiB14492

scale-offset-similar.cH A D26-Nov-20204.2 KiB14493

scale-source-surface-paint.cH A D26-Nov-20202.2 KiB6127

scaled-font-zero-matrix.cH A D26-Nov-20202.3 KiB6432

select-font-face.cH A D26-Nov-20202.3 KiB6630

select-font-no-show-text.cH A D26-Nov-20202 KiB6016

self-copy-overlap.cH A D26-Nov-20202.1 KiB5517

self-copy.cH A D26-Nov-20202.8 KiB8537

self-intersecting.cH A D26-Nov-20203.2 KiB8832

set-source.cH A D26-Nov-20202.6 KiB8246

shape-general-convex.cH A D26-Nov-20202.5 KiB8946

shape-sierpinski.cH A D26-Nov-20202.3 KiB8644

show-glyphs-advance.cH A D26-Nov-20203.1 KiB10861

show-glyphs-many.cH A D26-Nov-20205.4 KiB17782

show-text-current-point.cH A D26-Nov-20202.1 KiB6026

simple.cH A D26-Nov-20209.6 KiB348267

skew-extreme.cH A D26-Nov-20203.2 KiB11954

smask-fill.cH A D26-Nov-20202.6 KiB7439

smask-image-mask.cH A D26-Nov-20203 KiB8649

smask-mask.cH A D26-Nov-20203.4 KiB9758

smask-paint.cH A D26-Nov-20203 KiB8246

smask-stroke.cH A D26-Nov-20202.6 KiB7439

smask-text.cH A D26-Nov-20203 KiB8448

smask.cH A D26-Nov-20204.5 KiB12480

smp-glyph.cH A D26-Nov-20202 KiB5722

solid-pattern-cache-stress.cH A D26-Nov-20205.3 KiB213147

source-clip-scale.cH A D26-Nov-20202.8 KiB8338

source-clip.cH A D26-Nov-20202.5 KiB7835

source-surface-scale-paint.cH A D26-Nov-20202.2 KiB6027

spline-decomposition.cH A D26-Nov-202011.4 KiB472351

stride-12-image.cH A D26-Nov-20202.3 KiB7234

stroke-clipped.cH A D26-Nov-20201.7 KiB5524

stroke-ctm-caps.cH A D26-Nov-20202.6 KiB7933

stroke-image.cH A D26-Nov-20202.6 KiB7436

stroke-open-box.cH A D26-Nov-20201.8 KiB5220

stroke-pattern.cH A D26-Nov-20202.1 KiB6931

subsurface-image-repeat.cH A D26-Nov-20202.7 KiB7134

subsurface-modify-child.cH A D26-Nov-20203.5 KiB9954

subsurface-modify-parent.cH A D26-Nov-20202.8 KiB7938

subsurface-outside-target.cH A D26-Nov-20205.7 KiB178109

subsurface-pad.cH A D26-Nov-20202.7 KiB7738

subsurface-reflect.cH A D26-Nov-20202.7 KiB7738

subsurface-repeat.cH A D26-Nov-20202.7 KiB7738

subsurface-scale.cH A D26-Nov-20203.1 KiB9454

subsurface-similar-repeat.cH A D26-Nov-20203 KiB8746

subsurface.cH A D26-Nov-20202.8 KiB8648

surface-finish-twice.cH A D26-Nov-20202.7 KiB8029

surface-pattern-big-scale-down.cH A D26-Nov-20203.7 KiB12668

surface-pattern-operator.cH A D26-Nov-20203.8 KiB12074

surface-pattern-scale-down-extend.cH A D26-Nov-20204.2 KiB12171

surface-pattern-scale-down.cH A D26-Nov-20203 KiB8951

surface-pattern-scale-up.cH A D26-Nov-20203.2 KiB9451

surface-pattern.cH A D26-Nov-20203.1 KiB9151

surface-source.cH A D26-Nov-20205.4 KiB171112

svg-clip.cH A D26-Nov-20204.7 KiB15381

svg-surface-source.cH A D26-Nov-20201.9 KiB5523

svg-surface.cH A D26-Nov-20203.8 KiB13780

svg2png.cH A D26-Nov-20202.7 KiB8645

text-antialias-subpixel.cH A D26-Nov-20204 KiB12477

text-antialias.cH A D26-Nov-20203.5 KiB10766

text-cache-crash.cH A D26-Nov-20203.4 KiB9422

text-glyph-range.cH A D26-Nov-20204.3 KiB12656

text-pattern.cH A D26-Nov-20202.3 KiB7436

text-rotate.cH A D26-Nov-20206.3 KiB19081

text-subpixel.cH A D26-Nov-20202.3 KiB6935

text-transform.cH A D26-Nov-20203.1 KiB10557

text-unhinted-metrics.cH A D26-Nov-20202.5 KiB7435

text-zero-len.cH A D26-Nov-20207.6 KiB204139

thin-lines.cH A D26-Nov-20202.9 KiB9654

tiger.cH A D26-Nov-20202.4 KiB8654

tiger.incH A D26-Nov-2020114.9 KiB2,3172,316

tighten-bounds.cH A D26-Nov-20204.4 KiB173116

toy-font-face.cH A D26-Nov-20206.2 KiB150104

transforms.cH A D26-Nov-20202.7 KiB11370

translate-show-surface.cH A D26-Nov-20202.6 KiB8032

trap-clip.cH A D26-Nov-20205.8 KiB214157

twin-antialias-gray.cH A D26-Nov-20202.4 KiB7235

twin-antialias-mixed.cH A D26-Nov-20203.2 KiB9858

twin-antialias-none.cH A D26-Nov-20202.4 KiB7235

twin-antialias-subpixel.cH A D26-Nov-20202.4 KiB7235

twin.cH A D26-Nov-20202 KiB6229

unaligned-box.cH A D26-Nov-20202.2 KiB7435

unantialiased-shapes.cH A D26-Nov-20203.1 KiB9954

unbounded-operator.cH A D26-Nov-20205.4 KiB186128

unclosed-strokes.cH A D26-Nov-20202.5 KiB8444

user-data.cH A D26-Nov-20203.1 KiB11165

user-font-mask.cH A D26-Nov-20207.9 KiB254171

user-font-proxy.cH A D26-Nov-20207 KiB223151

user-font-rescale.cH A D26-Nov-202010.7 KiB369270

user-font.cH A D26-Nov-20208.1 KiB268178

white-in-noop.cH A D26-Nov-20201.7 KiB5319

world-map.cH A D26-Nov-20203.8 KiB152109

world-map.hH A D26-Nov-2020428.5 KiB197180

xcb-huge-image-shm.cH A D26-Nov-20202.3 KiB6828

xcb-huge-subimage.cH A D26-Nov-20202.7 KiB8240

xcb-snapshot-assert.cH A D26-Nov-20202.4 KiB7633

xcb-stress-cache.cH A D26-Nov-20204.1 KiB11949

xcb-surface-source.cH A D26-Nov-20204 KiB15099

xcomposite-projection.cH A D26-Nov-20203.4 KiB11050

xlib-expose-event.cH A D26-Nov-20205.5 KiB197133

xlib-surface-source.cH A D26-Nov-20202.9 KiB10160

xlib-surface.cH A D26-Nov-20208.7 KiB354253

zero-alpha.cH A D26-Nov-20203.3 KiB9639

zero-mask.cH A D26-Nov-20205.8 KiB199132

README

1Regression test suite for cairo.
2
3How to use cairo's test suite
4=============================
5Using this test should be as simple as running:
6
7	make test
8
9assuming that the cairo distribution in the directory above has been
10configured and built. The test suite here goes through some effort to
11run against the locally compiled library rather than any installed
12version, but those efforts may fall short depending on the level of your
13libtool madness.
14
15The results of the test suite run are summarized in an index.html
16file, which, when viewed in a web browser makes it quite easy to
17visually see any failed renderings alongside the corresponding
18reference image, (and a diff image as well).
19
20The test suite needs to be run before any code is committed and before
21any release. See below for hints and rules governing the use of the suite.
22
23The test suite is built as a single binary, which allows you to choose
24individual or categories of tests to run. For example, to run specific tests:
25    ./cairo-test-suite record-neg-extents-unbounded record-neg-extents-bounded
26Or if you want to run all paint.* related tests you can use:
27    ./cairo-test-suite paint
28Or if you want to check the current status of known failures:
29    ./cairo-test-suite XFAIL
30Or to run a subset of tests, use the -k option to run only the tests
31that include the given keyword:
32    ./cairo-test-suite -k downscale
33The binary also permits controlling which backend is used via the
34CAIRO_TEST_TARGET environment variable, so for instance:
35    CAIRO_TEST_TARGET=gl ./cairo-test-suite -k blur
36This binary should be backwards-compatible with all library versions,
37allowing you to compare current versus past behaviour for any test.
38
39Tailoring tests running
40-----------------------
41There are some mechanisms to limit the tests run during "make test".
42These come very handy when doing development, but should not be used
43to circumvent the "pass" requirements listed below.
44
45make's TARGETS environment variable can be used to limit the backends when
46running the tests. It should contain a (space-, comma-separated) list of
47backends. CAIRO_TESTS environment variable, which is a comma-, space-seperated
48lists, can be used to limit the tests run.
49For example:
50
51  CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps
52
53make's FORMAT variable can also be used to limit the content formats when
54running the tests. It should contain a (space-, comma-separated) list of
55content formats to test.
56For example:
57
58  CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps FORMAT="rgb,rgba"
59
60Another very handy mechanism when trying to fix bugs is:
61
62  make retest
63
64This will re-run the test suite, but only on tests that failed on the
65last run. So this is a much faster way of checking if changes actually
66fix bugs rather than running the entire test suite again.
67
68The test suite first compares the output from the current run against the
69previous in order to skip more expensive image comparisons . If you think
70this is interfering with the results, you can clear the cached results using:
71
72  make clean-caches
73
74Running tests under modified environments or tools
75-------------------------------------------------
76To run tests under a tool like gdb, one can use the run target and
77the TOOL variable.  For example:
78
79  CAIRO_TESTS=user-font make run TOOL=gdb TARGETS=pdf
80
81If you want to run under valgrind, there is a specific target for that
82that also sets a bunch of useful valgrind options.  Try:
83
84  CAIRO_TESTS=user-font make check-valgrind
85
86You can run tests under a modified environment you can use the ENV
87make variable.  However, that environment will also affect the libtool
88wrapper of the tests.  To only affect the actual test binaries, pass
89such environment as TOOL:
90
91  CAIRO_TESTS=user-font make run TOOL="LD_PRELOAD=/path/to/something.so"
92
93Getting the elusive zero failures
94---------------------------------
95It's generally been very difficult to achieve a test run with zero
96failures. The difficulties stem from the various versions of the many
97libraries that the test suite depends on, (it depends on a lot more
98than cairo itself), as well as fonts and other system-specific
99settings. If your system differs significantly from the system on
100which the reference images were generated, then you will likely see
101the test suite reporting "failures", (even if cairo is working just
102fine).
103
104We are constantly working to reduce the number of variables that need
105to be tweaked to get a clean run, (for example, by bundling fonts with
106the test suite itself), and also working to more carefully document
107the software configuration used to generate the reference images.
108
109Here are some of the relevant details:
110
111  * Your system must have a copy of the DejaVu font, the sha1sum of
112    the version used are listed in [...].  These are
113      "DejaVu Sans" (DejaVuSans.ttf) [e9831ee4fd2e1d0ac54508a548c6a449545eba3f];
114      "DejaVu Sans Mono" (DejaVuSansMono.ttf) [25d854fbd0450a372615a26a8ef9a1024bd3efc6];
115      "DejaVu Serif" (DejaVuSerif.ttf) [78a81850dc7883969042cf3d6dfd18eea7e43e2f];
116      [the DejaVu fonts can be installed from the fonts-dejavu-core 2.34-1 Debian package]
117    and also
118      "Nimbus Sans L" (n019003l.pfb)
119      [which can be found in the gsfonts Debian package].
120
121  * Currently, you must be using a build of cairo using freetype
122    (cairo-ft) as the default font backend. Otherwise all tests
123    involving text are likely to fail.
124
125  * To test the pdf backend, you will want the very latest version of
126    poppler as made available via git:
127
128	git clone git://anongit.freedesktop.org/git/poppler/poppler
129
130    As of this writing, no released version of poppler contains all
131    the fixes you will need to avoid false negatives from the test
132    suite.
133
134  * To test the ps backend, you will need ghostscript version 9.06.
135
136  * Testing the xlib backend is problematic since many X server
137    drivers have bugs that are exercised by the test suite. (Or, if
138    not actual bugs, differ slightly in their output in such a way
139    that the test suite will report errors.) This can be quite handy
140    if you want to debug an X server driver, but since most people
141    don't want to do that, another option is to run against a headless
142    X server that uses only software for all rendering. One such X
143    server is Xvfb which can be started like this:
144
145	Xvfb -screen 0 1680x1024x24 -ac -nolisten tcp :2
146
147    after which the test suite can be run against it like so:
148
149	DISPLAY=:2 make test
150
151    We have been using Xvfb for testing cairo releases and ensuring
152    that all tests behave as expected with this X server.
153
154What if I can't make my system match?
155-------------------------------------
156For one reason or another, you may be unable to get a clean run of the
157test suite even if cairo is working properly, (for example, you might
158be on a system without freetype). In this case, it's still useful to
159be able to determine if code changes you make to cairo result in any
160regressions to the test suite. But it's hard to notice regressions if
161there are many failures both before and after your changes.
162
163For this scenario, you can capture the output of a run of the test
164suite before your changes, and then use the CAIRO_REF_DIR environment
165variable to use that output as the reference images for a run after
166your changes. The process looks like this:
167
168        # Before code change there may be failures we don't care about
169        make test
170
171        # Let's save those output images
172        mkdir /some/directory/
173        cp -r test/output /some/directory/
174
175        # hack, hack, hack
176
177        # Now to see if nothing changed:
178        CAIRO_REF_DIR=/some/directory/ make test
179
180Best practices for cairo developers
181===================================
182If we all follow the guidelines below, then both the test suite and
183cairo itself will stay much healthier, and we'll all have a lot more
184fun hacking on cairo.
185
186Before committing
187-----------------
188All tests should return a result of PASS or XFAIL. The XFAIL results
189indicate known bugs. The final message should be one of the following:
190
191	All XX tests behaved as expected (YY expected failures)
192	All XX tests passed
193
194If any tests have a status of FAIL, then the new code has caused a
195regression error which should be fixed before the code is committed.
196
197When a new bug is found
198-----------------------
199A new test case should be added by imitating the style of an existing
200test. This means adding the following files:
201
202	new-bug.c
203	reference/new-bug.ref.png
204	reference/new-bug.xfail.png
205
206Where new-bug.c is a minimal program to demonstrate the bug, following
207the style of existing tests. The new-bug.ref.png image should contain
208the desired result of new-bug.c if the bug were fixed while
209new-bug.xfail.png contains the current results of the test.
210
211Makefile.sources should be edited by adding new-bug.c to test_sources.
212And last but not least, don't forget to "git add" the new files.
213
214When a new feature is added
215---------------------------
216It's important for the regression suite to keep pace with development
217of the library. So a new test should be added for each new feature.
218The work involved is similar the work described above for new bugs.
219The only distinction is that the test is expected to pass so it
220should not need a new-bug.xfail.png file.
221
222While working on a test
223-----------------------
224Before a bugfix or feature is ready, it may be useful to compare
225output from different builds. For convenience, you can set
226CAIRO_REF_DIR to point at a previous test directory, relative
227to the current test directory, and any previous output will be
228used by preference as reference images.
229
230When a bug is fixed
231-------------------
232The fix should be verified by running the test suite which should
233result in an "unexpected pass" for the test of interest. Rejoice as
234appropriate, then remove the relevant xfail.png file from git.
235
236Before releasing
237----------------
238All tests should return a result of PASS for all supported (those enabled by
239default) backends, meaning all known bugs are fixed, resulting in the happy
240message:
241
242	All XX tests passed
243
244Some notes on limitations in poppler
245====================================
246One of the difficulties of our current test infrastructure is that we
247rely on external tools to convert cairo's vector output (PDF,
248PostScript, and SVG), into an image that can be used for the image
249comparison. This means that any bugs in that conversion tool will
250result in false negatives in the test suite.
251
252We've identified several such bugs in the poppler library which is
253used to convert PDF to an image. This is particularly discouraging
254because 1) poppler is free software that will be used by *many* cairo
255users, and 2) poppler calls into cairo for its rendering so it should
256be able to do a 100% faithful conversion.
257
258So we have an interest in ensuring that these poppler bugs get fixed
259sooner rather than later. As such, we're trying to be good citizens by
260reporting all such poppler bugs that we identify to the poppler
261bugzilla. Here's a tracking bug explaining the situation:
262
263	Poppler does not yet handle everything in the cairo test suite
264	https://bugs.freedesktop.org/show_bug.cgi?id=12143
265
266Here's the rule: If a cairo-pdf test reports a failure, but viewing
267the resulting PDF file with acroread suggests that the PDF itself is
268correct, then there's likely a bug in poppler. In this case, we can
269simply report the poppler bug, (making it block 12143 above), post the
270PDF result from the test suite, and list the bug in this file. Once
271we've done this, we can capture poppler's buggy output as a
272pdf-specific reference image (as reference/*.xfail.png) so that the
273test suite will regard the test as passing, (and we'll ensure there
274is no regression).
275
276Once the poppler bug gets fixed, the test suite will start reporting a
277false negative again, and this will be easy to fix by simply removing
278the pdf-specific reference image.
279
280Here are the reported poppler bugs and the tests they affect:
281
282[Newest was closed in 2009.]
283