# FIXME: $(no_undefined) ?

reftest_cflags = []
foreach flag: common_cflags
  if flag not in ['-Werror=missing-prototypes', '-Wmissing-prototypes',
                  '-Werror=missing-declarations', '-Wmissing-declarations']
    reftest_cflags += flag
  endif
endforeach


libgtkreftestprivate = library('gtkreftestprivate',
  sources: [ 'reftest-compare.c', 'reftest-module.c', 'reftest-snapshot.c', ],
  dependencies: libgtk_dep,
  c_args: reftest_cflags)

libreftest = library('reftest',
  sources: [
    'expand-expander.c',
    'frame-inhibitor.c',
    'glarea-gl-only.c',
    'letter-spacing.c',
    'set-default-direction.c',
    'statusbar-remove-all.c',
    'textview-border-windows.c',
    'textview-tags.c',
    'animation-direction.c',
    'icon-theme-hicolor.c',
  ],
  link_with: libgtkreftestprivate,
  c_args: reftest_cflags,
  dependencies : libgtk_dep)

tcdata = configuration_data()
tcdata.set('libexecdir', join_paths(get_option('prefix'), get_option('libexecdir')))

#built_tests = ['reftests', 'reftests-dark', 'reftests-hc', 'reftests-hci']
#foreach t : built_tests
#  configure_file(input : '@0@.test.in'.format(t),
#    output : '@0@.test'.format(t),
#    configuration : tcdata)
#endforeach

gtk_reftest = executable('gtk-reftest',
  sources: 'gtk-reftest.c',
  c_args: common_cflags,
  link_with : [libgtkreftestprivate, libreftest],
  dependencies : libgtk_dep,
)

image_compare = executable('image-compare',
  sources: 'image-compare.c',
  c_args: common_cflags,
  link_with : [libgtkreftestprivate, libreftest],
  dependencies : libgtk_dep)
# Installed data (TODO)

testdata = [
  '721800-0px-dotted-border.css',
  '721800-0px-dotted-border.ref.ui',
  '721800-0px-dotted-border.ui',
  'actionbar.css',
  'actionbar.ref.ui',
  'actionbar.ui',
  'animation-direction.css',
  'animation-direction.ref.ui',
  'animation-direction.ui',
  'animation-fill-mode-iteration-count.css',
  'animation-fill-mode-iteration-count.ref.ui',
  'animation-fill-mode-iteration-count.ui',
  'background-area.css',
  'background-area.ref.ui',
  'background-area.ui',
  'background-blend-mode-clip-interaction.css',
  'background-blend-mode-clip-interaction.ref.ui',
  'background-blend-mode-clip-interaction.ui',
  'background-color-transparent.css',
  'background-color-transparent.ref.ui',
  'background-color-transparent.ui',
  'background-image-multiple.css',
  'background-image-multiple.ref.ui',
  'background-image-multiple.ui',
  'background-origin.css',
  'background-origin.ref.ui',
  'background-origin.ui',
  'background-positioning-area-empty.ref.ui',
  'background-positioning-area-empty.ui',
  'background-position.css',
  'background-position.ref.ui',
  'background-position.ui',
  'background-position-repeat.css',
  'background-position-repeat.ref.ui',
  'background-position-repeat.ui',
  'background-position-repeat-bg.png',
  'background-position-simple.css',
  'background-position-simple.ref.ui',
  'background-position-simple.ui',
  'background-repeat-clip.css',
  'background-repeat-clip.ref.ui',
  'background-repeat-clip.ui',
  'background-size.css',
  'background-size.ref.ui',
  'background-size.ui',
  'background-size-keywords.css',
  'background-size-keywords.ref.ui',
  'background-size-keywords.ui',
  'background-size-zero.css',
  'background-size-zero.ref.ui',
  'background-size-zero.ui',
  'background-window-transparent.css',
  'background-window-transparent.ref.ui',
  'background-window-transparent.ui',
  'bad-color-names.css',
  'bad-color-names.ref.ui',
  'bad-color-names.ui',
  'reference-background-origin.png',
  'border-color-default.css',
  'border-color-default.ref.ui',
  'border-color-default.ui',
  'border-corner-zero-width-rendering.css',
  'border-corner-zero-width-rendering.ref.ui',
  'border-corner-zero-width-rendering.ui',
  'border-half-pixel.css',
  'border-half-pixel.ref.ui',
  'border-half-pixel.ui',
  'border-image-ball-green.png',
  'border-image-ball-red.png',
  'border-image-ball-yellow.png',
  'border-image-balls.png',
  'border-image-3-balls-green.png',
  'border-image-3-balls-green-squished.png',
  'border-image-3-balls-yellow.png',
  'border-image-3-balls-yellow-squished.png',
  'border-image-excess-size.css',
  'border-image-excess-size.ref.ui',
  'border-image-excess-size.ui',
  'border-image-url-scaled.css',
  'border-image-url-scaled.ref.ui',
  'border-image-url-scaled.ui',
  'border-image-url.css',
  'border-image-url.ref.ui',
  'border-image-url.ui',
  'border-radius-clamp.css',
  'border-radius-clamp.ref.ui',
  'border-radius-clamp.ui',
  'border-rgb.png',
  'border-rgb@2.png',
  'border-style-none.css',
  'border-style-none.ref.ui',
  'border-style-none.ui',
  'border-style.css',
  'border-style.ref.ui',
  'border-style.ui',
  'boxlayout-invisible-child.ref.ui',
  'boxlayout-invisible-child.ui',
  'box-pseudo-classes.css',
  'box-pseudo-classes.ref.ui',
  'box-pseudo-classes.ui',
  'box-shadow-changes-modify-clip.css',
  'box-shadow-changes-modify-clip.ref.ui',
  'box-shadow-changes-modify-clip.ui',
  'box-shadow-spec-inset.css',
  'box-shadow-spec-inset.ref.ui',
  'box-shadow-spec-inset.ui',
  'box-shadow-spread.css',
  'box-shadow-spread.ref.ui',
  'box-shadow-spread.ui',
  'box-shadow-with-blend-mode.css',
  'box-shadow-with-blend-mode.ref.ui',
  'box-shadow-with-blend-mode.ui',
  'button-wrapping.ui',
  'button-wrapping.ref.ui',
  'center-center-100x100-picture-in-100x200.css',
  'center-center-100x100-picture-in-100x200-overlay.css',
  'center-center-100x100-picture-in-100x200.ref.ui',
  'center-center-100x100-picture-in-100x200-overlay.ref.ui',
  'center-center-100x100-picture-in-100x200.ui',
  'center-center-100x100-picture-in-100x200-overlay.ui',
  'center-center-100x100-picture-in-200x100.css',
  'center-center-100x100-picture-in-200x100-overlay.css',
  'center-center-100x100-picture-in-200x100.ref.ui',
  'center-center-100x100-picture-in-200x100-overlay.ref.ui',
  'center-center-100x100-picture-in-200x100.ui',
  'center-center-100x100-picture-in-200x100-overlay.ui',
  'center-center-150x150-picture-in-100x200.css',
  'center-center-150x150-picture-in-100x200-overlay.css',
  'center-center-150x150-picture-in-100x200.ref.ui',
  'center-center-150x150-picture-in-100x200-overlay.ref.ui',
  'center-center-150x150-picture-in-100x200.ui',
  'center-center-150x150-picture-in-100x200-overlay.ui',
  'center-center-150x150-picture-in-200x100.css',
  'center-center-150x150-picture-in-200x100-overlay.css',
  'center-center-150x150-picture-in-200x100.ref.ui',
  'center-center-150x150-picture-in-200x100-overlay.ref.ui',
  'center-center-150x150-picture-in-200x100.ui',
  'center-center-150x150-picture-in-200x100-overlay.ui',
  'center-center-200x200-picture-in-100x200.css',
  'center-center-200x200-picture-in-100x200-overlay.css',
  'center-center-200x200-picture-in-100x200.ref.ui',
  'center-center-200x200-picture-in-100x200-overlay.ref.ui',
  'center-center-200x200-picture-in-100x200.ui',
  'center-center-200x200-picture-in-100x200-overlay.ui',
  'center-center-200x200-picture-in-200x100.css',
  'center-center-200x200-picture-in-200x100-overlay.css',
  'center-center-200x200-picture-in-200x100.ref.ui',
  'center-center-200x200-picture-in-200x100-overlay.ref.ui',
  'center-center-200x200-picture-in-200x100.ui',
  'center-center-200x200-picture-in-200x100-overlay.ui',
  'center-center-20x20-picture-in-100x200.css',
  'center-center-20x20-picture-in-100x200-overlay.css',
  'center-center-20x20-picture-in-100x200.ref.ui',
  'center-center-20x20-picture-in-100x200-overlay.ref.ui',
  'center-center-20x20-picture-in-100x200.ui',
  'center-center-20x20-picture-in-100x200-overlay.ui',
  'center-center-20x20-picture-in-200x100.css',
  'center-center-20x20-picture-in-200x100-overlay.css',
  'center-center-20x20-picture-in-200x100.ref.ui',
  'center-center-20x20-picture-in-200x100-overlay.ref.ui',
  'center-center-20x20-picture-in-200x100.ui',
  'center-center-20x20-picture-in-200x100-overlay.ui',
  'center-center-300x300-picture-in-100x200.css',
  'center-center-300x300-picture-in-100x200-overlay.css',
  'center-center-300x300-picture-in-100x200.ref.ui',
  'center-center-300x300-picture-in-100x200-overlay.ref.ui',
  'center-center-300x300-picture-in-100x200.ui',
  'center-center-300x300-picture-in-100x200-overlay.ui',
  'center-center-300x300-picture-in-200x100.css',
  'center-center-300x300-picture-in-200x100-overlay.css',
  'center-center-300x300-picture-in-200x100.ref.ui',
  'center-center-300x300-picture-in-200x100-overlay.ref.ui',
  'center-center-300x300-picture-in-200x100.ui',
  'center-center-300x300-picture-in-200x100-overlay.ui',
  'centerlayout-invisible-child.css',
  'centerlayout-invisible-child.ref.ui',
  'centerlayout-invisible-child.ui',
  'centerlayout-minsize.css',
  'centerlayout-minsize.ref.ui',
  'centerlayout-minsize.ui',
  'color-transition.css',
  'color-transition.ref.ui',
  'color-transition.ui',
  'cross-fade-syntax.css',
  'cross-fade-syntax.ref.ui',
  'cross-fade-syntax.ui',
  'css-em-label-size.css',
  'css-em-label-size.ui',
  'css-em-label-size.ref.ui',
  'css-currentcolor-alpha.css',
  'css-currentcolor-alpha.ui',
  'css-currentcolor-alpha.ref.ui',
  'css-image-aspect-ratio.css',
  'css-image-aspect-ratio.ui',
  'css-image-aspect-ratio.ref.ui',
  'css-image-broken-url.css',
  'css-image-broken-url.ref.ui',
  'css-image-broken-url.ui',
  'css-image-color-aspect-ratio.css',
  'css-image-color-aspect-ratio.ui',
  'css-image-color-aspect-ratio.ref.ui',
  'css-match-class.css',
  'css-match-class.ref.ui',
  'css-match-class.ui',
  'css-match-descendant-later.css',
  'css-match-descendant-later.ref.ui',
  'css-match-descendant-later.ui',
  'css-match-exact.css',
  'css-match-exact.ref.ui',
  'css-match-exact.ui',
  'css-match-import.css',
  'css-match-import-import.css',
  'css-match-import.ui',
  'css-match-import.ref.ui',
  'css-match-inherit.css',
  'css-match-inherit.ref.ui',
  'css-match-inherit.ui',
  'css-match-inherit-different-state.css',
  'css-match-inherit-different-state.ref.ui',
  'css-match-inherit-different-state.ui',
  'css-match-name.css',
  'css-match-name.ref.ui',
  'css-match-name.ui',
  'css-match-siblings.css',
  'css-match-siblings.ref.ui',
  'css-match-siblings.ui',
  'css-match-type.css',
  'css-match-type.ref.ui',
  'css-match-type.ui',
  'css-multi-state.css',
  'css-multi-state.ref.ui',
  'css-multi-state.ui',
  'css-radial-gradient-colorstop-crash.css',
  'css-radial-gradient-colorstop-crash.ref.ui',
  'css-radial-gradient-colorstop-crash.ui',
  'data-url.css',
  'data-url.ref.ui',
  'data-url.ui',
  'default-size-too-small.ref.ui',
  'default-size-too-small.ui',
  'default-size-undecorated.ui',
  'default-size-undecorated.ref.ui',
  'default-size-with-titlebar.ui',
  'default-size-with-titlebar.ref.ui',
  'default-size-without-titlebar.ui',
  'default-size-without-titlebar.ref.ui',
  'fixed-widget-stacking.ref.ui',
  'fixed-widget-stacking.ui',
  'flipping-icons.ref.ui',
  'flipping-icons.ui',
  'font-sizes-names.css',
  'font-sizes-names.ref.ui',
  'font-sizes-names.ui',
  'glarea-gl-only.css',
  'glarea-gl-only.ref.ui',
  'glarea-gl-only.ui',
  'gtk-image-effect-inherit.css',
  'gtk-image-effect-inherit.ref.ui',
  'gtk-image-effect-inherit.ui',
  'gradient-hard-stop.css',
  'gradient-hard-stop.ref.ui',
  'gradient-hard-stop.ui',
  'green-20x20.png',
  'gridlayout-invisible-child.ref.ui',
  'gridlayout-invisible-child.ui',
  'grid-empty-with-spacing.ref.ui',
  'grid-empty-with-spacing.ui',
  'grid-expand.css',
  'grid-expand.ref.ui',
  'grid-expand.ui',
  'grid-wfh.ui',
  'grid-wfh.ref.ui',
  'grid-homogeneous.css',
  'grid-homogeneous.ref.ui',
  'grid-homogeneous.ui',
  'grid-spacing1.ref.ui',
  'grid-spacing1.ui',
  'grid-spacing2.ref.ui',
  'grid-spacing2.ui',
  'grid-spacing3.css',
  'grid-spacing3.ref.ui',
  'grid-spacing3.ui',
  'gtk-icontheme-sizing.css',
  'gtk-icontheme-sizing.ref.ui',
  'gtk-icontheme-sizing.ui',
  'hbox-with-ellipsizing-label.ref.ui',
  'hbox-with-ellipsizing-label.ui',
  'hbox-with-ellipsizing-wrapping-label.ref.ui',
  'hbox-with-ellipsizing-wrapping-label.ui',
  'icon-effect-missing.css',
  'icon-effect-missing.ref.ui',
  'icon-effect-missing.ui',
  'icon-shadow-no-transform.css',
  'icon-shadow-no-transform.ref.ui',
  'icon-shadow-no-transform.ui',
  'icon-style-basics.css',
  'icon-style-basics.ref.ui',
  'icon-style-basics.ui',
  'icon-vfuncs.css',
  'icon-vfuncs.ref.ui',
  'icon-vfuncs.ui',
  'iconview-empty.css',
  'iconview-empty.ui',
  'iconview-empty.ref.ui',
  'image-icon-name-use-fallback.ui',
  'image-icon-name-use-fallback.ref.ui',
  'image-icon-shadow-clipping.css',
  'image-icon-shadow-clipping.ref.ui',
  'image-icon-shadow-clipping.ui',
  'image-load-from-file.css',
  'image-load-from-file.ref.ui',
  'image-load-from-file.ui',
  'inscription-markup.ref.ui',
  'inscription-markup.ui',
  'inscription-overflow.ref.ui',
  'inscription-overflow.ui',
  'inscription-overflow-multiline.ref.ui',
  'inscription-overflow-multiline.ui',
  'inscription-overflow-yalign.ref.ui',
  'inscription-overflow-yalign.ui',
  'inscription-xalign.ref.ui',
  'inscription-xalign.ui',
  'inscription-xalign-rtl.ref.ui',
  'inscription-xalign-rtl.ui',
  'label-attribute-preference.css',
  'label-attribute-preference.ref.ui',
  'label-attribute-preference.ui',
  'label-background.css',
  'label-background.ref.ui',
  'label-background.ui',
  'label-box-shadow-clip.css',
  'label-box-shadow-clip.ref.ui',
  'label-box-shadow-clip.ui',
  'label-clipping.css',
  'label-clipping.ref.ui',
  'label-clipping.ui',
  'label-ellipsize-small.ref.ui',
  'label-ellipsize-small.ui',
  'label-ellipsize-with-big.ref.ui',
  'label-ellipsize-with-big.ui',
  'label-fonts.css',
  'label-fonts.ref.ui',
  'label-fonts.ui',
  'label-huge-max-width-chars.ref.ui',
  'label-huge-max-width-chars.ui',
  'label-max-width-chars-and-halign-and-infinite-width.ui',
  'label-max-width-chars-and-halign-and-infinite-width.ref.ui',
  'label-overdraw-horizontal.ref.ui',
  'label-overdraw-horizontal.ui',
  'label-overdraw-vertical.ref.ui',
  'label-overdraw-vertical.ui',
  'label-shadows.css',
  'label-shadows.ref.ui',
  'label-shadows.ui',
  'label-sizing.css',
  'label-sizing.ref.ui',
  'label-sizing.ui',
  'label-small-ellipsized.ref.ui',
  'label-small-ellipsized.ui',
  'label-small-max-width-chars.ref.ui',
  'label-small-max-width-chars.ui',
  'label-text-shadow-clipping.css',
  'label-text-shadow-clipping.ref.ui',
  'label-text-shadow-clipping.ui',
  'label-text-shadow-changes-modify-clip.css',
  'label-text-shadow-changes-modify-clip.ref.ui',
  'label-text-shadow-changes-modify-clip.ui',
  'label-width-chars-dont-shrink.ref.ui',
  'label-width-chars-dont-shrink.ui',
  'label-wrap-width-chars.ref.ui',
  'label-wrap-width-chars.ui',
  'label-wrap-word-char-natural-size.ref.ui',
  'label-wrap-word-char-natural-size.ui',
  'label-wrapped-huge-max-width-chars.ref.ui',
  'label-wrapped-huge-max-width-chars.ui',
  'label-wrap-justify.ref.ui',
  'label-wrap-justify.ui',
  'late-binding.ui',
  'late-binding.ref.ui',
  'late-property.ui',
  'late-property.ref.ui',
  'letter-spacing.css',
  'letter-spacing.ui',
  'letter-spacing.ref.ui',
  'linear-gradient.css',
  'linear-gradient.ref.ui',
  'linear-gradient.ui',
  'linear-gradient-transition-to-other.css',
  'linear-gradient-transition-to-other.ref.ui',
  'linear-gradient-transition-to-other.ui',
  'link-coloring.css',
  'link-coloring.ref.ui',
  'link-coloring.ui',
  'listview-margin.css',
  'listview-margin.ref.ui',
  'listview-margin.ui',
  'listview-with-wrapped-labels.ref.ui',
  'listview-with-wrapped-labels.ui',
  'marble.xpm',
  'messagedialog-secondarytext.ui',
  'messagedialog-secondarytext.ref.ui',
  'named-colors.css',
  'named-colors.ref.ui',
  'named-colors.ui',
  'no-colors.css',
  'no-colors.ref.ui',
  'no-colors.ui',
  'nonresizable-size.ref.ui',
  'nonresizable-size.ui',
  'notebook-tab-position.css',
  'notebook-tab-position.ui',
  'notebook-tab-position.ref.ui',
  'nth-child.css',
  'nth-child.ref.ui',
  'nth-child.ui',
  'opacity.css',
  'opacity.ui',
  'opacity.ref.ui',
  'opacity-initial.css',
  'opacity-initial.ref.ui',
  'opacity-initial.ui',
  'overlay-no-main-widget.ref.ui',
  'overlay-no-main-widget.ui',
  'paned-handle-size.css',
  'paned-handle-size.ref.ui',
  'paned-handle-size.ui',
  'paned-undersized.css',
  'paned-undersized.ref.ui',
  'paned-undersized.ui',
  'partial-rounded-border.css',
  'partial-rounded-border.ref.ui',
  'partial-rounded-border.ui',
  'picture-content-fit-contain.css',
  'picture-content-fit-contain.ref.ui',
  'picture-content-fit-contain.ui',
  'picture-content-fit-cover.css',
  'picture-content-fit-cover.ref.ui',
  'picture-content-fit-cover.ui',
  'picture-content-fit-fill.css',
  'picture-content-fit-fill.ref.ui',
  'picture-content-fit-fill.ui',
  'picture-content-fit-scale-down.css',
  'picture-content-fit-scale-down.ref.ui',
  'picture-content-fit-scale-down.ui',
  'picture-load-invalid-file.ui',
  'picture-load-invalid-file.ref.ui',
  'pixbuf-icon.ref.ui',
  'pixbuf-icon.ui',
  'pseudoclass-on-box.css',
  'pseudoclass-on-box.ref.ui',
  'pseudoclass-on-box.ui',
  'pseudoclass-on-parent.css',
  'pseudoclass-on-parent.ref.ui',
  'pseudoclass-on-parent.ui',
  'repeating-radial-gradient-at-beginning.css',
  'repeating-radial-gradient-at-beginning.ref.ui',
  'repeating-radial-gradient-at-beginning.ui',
  'reset-to-defaults.css',
  'revealer-extra-size.ref.ui',
  'revealer-extra-size.ui',
  'revealer-wrappable-contents.ref.ui',
  'revealer-wrappable-contents.ui',
  'rotated-layout.ref.ui',
  'rotated-layout.ui',
  'separator-size.css',
  'separator-size.ref.ui',
  'separator-size.ui',
  'set-default-direction.ui',
  'set-default-direction.ref.ui',
  'shadow-clip-rounding.css',
  'shadow-clip-rounding.ref.ui',
  'shadow-clip-rounding.ui',
  'shorthand-entry-border.css',
  'shorthand-entry-border.ref.ui',
  'shorthand-entry-border.ui',
  'sibling-pseudoclasses.css',
  'sibling-pseudoclasses.ref.ui',
  'sibling-pseudoclasses.ui',
  'simple.ref.ui',
  'simple.ui',
  'sizegroups-basics.css',
  'sizegroups-basics.ui',
  'sizegroups-basics.ref.ui',
  'sizegroups-evolution-identity-page.ui',
  'sizegroups-evolution-identity-page.ref.ui',
  'sizegroups-get-preferred-null.ui',
  'sizegroups-get-preferred-null.ref.ui',
  'statusbar-remove-all.ref.ui',
  'statusbar-remove-all.ui',
  'style-context-save-inheritance.css',
  'style-context-save-inheritance.ref.ui',
  'style-context-save-inheritance.ui',
  'style-properties-only-child.css',
  'style-properties-only-child.ref.ui',
  'style-properties-only-child.ui',
  'symbolic-icon-translucent-color.css',
  'symbolic-icon-translucent-color.ref.ui',
  'symbolic-icon-translucent-color.ui',
  'texture-icon.ref.ui',
  'texture-icon.ui',
  'textview-border-windows.css',
  'textview-border-windows.ref.ui',
  'textview-border-windows.ui',
  'textview-margins.css',
  'textview-margins.ref.ui',
  'textview-margins.ui',
  'textview-tags.ref.ui',
  'textview-tags.ui',
  'treeview-crash-too-wide.ref.ui',
  'treeview-crash-too-wide.ui',
  'treeview-fixed-height.css',
  'treeview-fixed-height.ref.ui',
  'treeview-fixed-height.ui',
  'treeview-headers-hidden.ref.ui',
  'treeview-headers-hidden.ui',
  'unresolvable.css',
  'unresolvable.ref.ui',
  'unresolvable.ui',
  'vbox-with-2-wrapping-labels-where-one-should-wrap.ref.ui',
  'vbox-with-2-wrapping-labels-where-one-should-wrap.ui',
  'vbox-with-max-width-chars-label.ref.ui',
  'vbox-with-max-width-chars-label.ui',
  'window-border-width.ref.ui',
  'window-border-width.ui',
  'window-default-size.ref.ui',
  'window-default-size.ui',
  'window-height-for-width.ref.ui',
  'window-height-for-width.ui',
  'window-show-contents-on-map.ref.ui',
  'window-show-contents-on-map.ui',
  'wrap-margin-align-critical.ref.ui',
  'wrap-margin-align-critical.ui',
  'wrapping-in-boxes-in-boxes.ref.ui',
  'wrapping-in-boxes-in-boxes.ui',
]

xfails = [
  # needs to be fixed but the issue hasn't been tracked down
  'sizegroups-evolution-identity-page.ui',
  # the NGL renderer can't deal with non-integer sizes
  'border-half-pixel.ui',

  # makes assumptions about text positioning that are not
  # valid with subpixel positioning
  'border-image-url.ui',
  'label-background.ui',
  'label-wrap-justify.ui',

  # https://gitlab.freedesktop.org/mesa/mesa/-/issues/11773
  'glarea-gl-only.ui',
]

flaky = [
  # these tests need a better way to perform delayed actions
  # they are not in xfails since they succeed on some platforms
  'textview-margins.ui',
  'textview-tags.ui',
  'window-show-contents-on-map.ui',
  # this test fails with an off-by-one in ci too frequently
  # to be left enabled. Remove it until somebody figures out
  # what is going on there.
  'treeview-headers-hidden.ui',
  # this consistently times out in the ci
  'shorthand-entry-border.ui',
  # blinking cursors and timing issues make this unreliable
  'fixed-widget-stacking.ui',
]

reftest_env = environment()
reftest_env.set('GTK_A11Y', 'test')
reftest_env.set('G_TEST_SRCDIR', meson.current_source_dir())
reftest_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
reftest_env.set('GSETTINGS_BACKEND', 'memory')
reftest_env.set('G_ENABLE_DIAGNOSTIC', '0')
reftest_env.set('REFTEST_MODULE_DIR', meson.current_build_dir())

foreach testname : testdata
  suites = ['reftest']

  if flaky.contains(testname)
    suites += 'flaky'
  endif

  if xfails.contains(testname)
    suites += 'failing'
  endif

  if testname.endswith('.ui') and not testname.endswith('.ref.ui')
    test('reftest ' + testname, gtk_reftest,
      args: [
        '--tap',
        '-k',
        '-o', join_paths(meson.current_build_dir(), 'output'),
        join_paths(meson.current_source_dir(), testname),
      ],
      protocol: 'tap',
      env: reftest_env,
      suite: suites,
    )
  endif
endforeach

