in_house_tests = [
  'aat-trak.tests',
  'aat-morx.tests',
  'arabic-fallback-shaping.tests',
  'arabic-feature-order.tests',
  'arabic-like-joining.tests',
  'arabic-mark-attach.tests',
  'arabic-mark-order.tests',
  'arabic-stch.tests',
  'automatic-fractions.tests',
  'cluster.tests',
  'collections.tests',
  'color-fonts.tests',
  'context-matching.tests',
  'cursive-positioning.tests',
  'default-ignorables.tests',
  'emoji.tests',
  'fallback-positioning.tests',
  'hangul-jamo.tests',
  'hyphens.tests',
  'indic-consonant-with-stacker.tests',
  'indic-decompose.tests',
  'indic-init.tests',
  'indic-joiner-candrabindu.tests',
  'indic-joiners.tests',
  'indic-old-spec.tests',
  'indic-pref-blocking.tests',
  'indic-script-extensions.tests',
  'indic-special-cases.tests',
  'indic-syllable.tests',
  'indic-vowel-letter-spoofing.tests',
  'kern-format2.tests',
  'khmer-mark-order.tests',
  'khmer-misc.tests',
  'language-tags.tests',
  'ligature-id.tests',
  'macos.tests',
  'mark-attachment.tests',
  'mark-filtering-sets.tests',
  'mongolian-variation-selector.tests',
  'myanmar-syllable.tests',
  'myanmar-zawgyi.tests',
  'none-directional.tests',
  'positioning-features.tests',
  'rand.tests',
  'rotation.tests',
  'spaces.tests',
  'simple.tests',
  'sinhala.tests',
  'tibetan-contractions-1.tests',
  'tibetan-contractions-2.tests',
  'tibetan-vowels.tests',
  'use.tests',
  'use-indic3.tests',
  'use-marchen.tests',
  'use-syllable.tests',
  'variations-rvrn.tests',
  'vertical.tests',
  'zero-width-marks.tests',
]

aots_tests = [
  'classdef1_empty.tests',
  'classdef1_multiple.tests',
  'classdef1_single.tests',
  'classdef1.tests',
  'classdef2_empty.tests',
  'classdef2_multiple.tests',
  'classdef2_single.tests',
  'classdef2.tests',
  'gpos_chaining1_boundary.tests',
  'gpos_chaining1_lookupflag.tests',
  'gpos_chaining1_multiple_subrules.tests',
  'gpos_chaining1_next_glyph.tests',
  'gpos_chaining1_simple.tests',
  'gpos_chaining1_successive.tests',
  'gpos_chaining2_boundary.tests',
  'gpos_chaining2_lookupflag.tests',
  'gpos_chaining2_multiple_subrules.tests',
  'gpos_chaining2_next_glyph.tests',
  'gpos_chaining2_simple.tests',
  'gpos_chaining2_successive.tests',
  'gpos_chaining3_boundary.tests',
  'gpos_chaining3_lookupflag.tests',
  'gpos_chaining3_next_glyph.tests',
  'gpos_chaining3_simple.tests',
  'gpos_chaining3_successive.tests',
  'gpos_context1_boundary.tests',
  'gpos_context1_expansion.tests',
  'gpos_context1_lookupflag.tests',
  'gpos_context1_multiple_subrules.tests',
  'gpos_context1_next_glyph.tests',
  'gpos_context1_simple.tests',
  'gpos_context1_successive.tests',
  'gpos_context2_boundary.tests',
  'gpos_context2_classes.tests',
  'gpos_context2_expansion.tests',
  'gpos_context2_lookupflag.tests',
  'gpos_context2_multiple_subrules.tests',
  'gpos_context2_next_glyph.tests',
  'gpos_context2_simple.tests',
  'gpos_context2_successive.tests',
  'gpos_context3_boundary.tests',
  'gpos_context3_lookupflag.tests',
  'gpos_context3_next_glyph.tests',
  'gpos_context3_simple.tests',
  'gpos_context3_successive.tests',
  'gpos1_1_lookupflag.tests',
  'gpos1_1_simple.tests',
  'gpos1_2_lookupflag.tests',
  'gpos1_2.tests',
  'gpos2_1_lookupflag.tests',
  'gpos2_1_next_glyph.tests',
  'gpos2_1_simple.tests',
  'gpos2_1.tests',
  'gpos2_2.tests',
  'gpos3_lookupflag.tests',
  'gpos3.tests',
  'gpos4_lookupflag.tests',
  'gpos4_multiple_anchors.tests',
  'gpos4_simple.tests',
  'gpos5.tests',
  'gpos6.tests',
  'gpos7_1.tests',
  'gpos9.tests',
  'gsub_chaining1_boundary.tests',
  'gsub_chaining1_lookupflag.tests',
  'gsub_chaining1_multiple_subrules.tests',
  'gsub_chaining1_next_glyph.tests',
  'gsub_chaining1_simple.tests',
  'gsub_chaining1_successive.tests',
  'gsub_chaining2_boundary.tests',
  'gsub_chaining2_lookupflag.tests',
  'gsub_chaining2_multiple_subrules.tests',
  'gsub_chaining2_next_glyph.tests',
  'gsub_chaining2_simple.tests',
  'gsub_chaining2_successive.tests',
  'gsub_chaining3_boundary.tests',
  'gsub_chaining3_lookupflag.tests',
  'gsub_chaining3_next_glyph.tests',
  'gsub_chaining3_simple.tests',
  'gsub_chaining3_successive.tests',
  'gsub_context1_boundary.tests',
  'gsub_context1_expansion.tests',
  'gsub_context1_lookupflag.tests',
  'gsub_context1_multiple_subrules.tests',
  'gsub_context1_next_glyph.tests',
  'gsub_context1_simple.tests',
  'gsub_context1_successive.tests',
  'gsub_context2_boundary.tests',
  'gsub_context2_classes.tests',
  'gsub_context2_expansion.tests',
  'gsub_context2_lookupflag.tests',
  'gsub_context2_multiple_subrules.tests',
  'gsub_context2_next_glyph.tests',
  'gsub_context2_simple.tests',
  'gsub_context2_successive.tests',
  'gsub_context3_boundary.tests',
  'gsub_context3_lookupflag.tests',
  'gsub_context3_next_glyph.tests',
  'gsub_context3_simple.tests',
  'gsub_context3_successive.tests',
  'gsub1_1_lookupflag.tests',
  'gsub1_1_modulo.tests',
  'gsub1_1_simple.tests',
  'gsub1_2_lookupflag.tests',
  'gsub1_2_simple.tests',
  'gsub2_1_lookupflag.tests',
  'gsub2_1_multiple_sequences.tests',
  'gsub2_1_simple.tests',
  'gsub3_1_lookupflag.tests',
  'gsub3_1_multiple.tests',
  'gsub3_1_simple.tests',
  'gsub4_1_lookupflag.tests',
  'gsub4_1_multiple_ligatures.tests',
  'gsub4_1_multiple_ligsets.tests',
  'gsub4_1_simple.tests',
  'gsub7.tests',
  'lookupflag_ignore_attach.tests',
  'lookupflag_ignore_base.tests',
  'lookupflag_ignore_combination.tests',
  'lookupflag_ignore_ligatures.tests',
  'lookupflag_ignore_marks.tests',
]

text_rendering_tests = [
  'AVAR-1.tests',
  'CFF-1.tests',
  'CFF2-1.tests',
  'CFF-2.tests',
  'CMAP-1.tests',
  'CMAP-2.tests',
  'CVAR-1.tests',
  'CVAR-2.tests',
  'GLYF-1.tests',
  'GPOS-1.tests',
  'GPOS-2.tests',
  'GPOS-3.tests',
  'GPOS-4.tests',
  'GPOS-5.tests',
  'GSUB-1.tests',
  'GSUB-2.tests',
  'GSUB-3.tests',
  'GVAR-1.tests',
  'GVAR-2.tests',
  'GVAR-3.tests',
  'GVAR-4.tests',
  'GVAR-5.tests',
  'GVAR-6.tests',
  'GVAR-7.tests',
  'GVAR-8.tests',
  'GVAR-9.tests',
  'HVAR-1.tests',
  'HVAR-2.tests',
  'KERN-1.tests',
  'KERN-2.tests',
  'MORX-10.tests',
  'MORX-11.tests',
  'MORX-12.tests',
  'MORX-13.tests',
  'MORX-14.tests',
  'MORX-16.tests',
  'MORX-17.tests',
  'MORX-18.tests',
  'MORX-19.tests',
  'MORX-1.tests',
  'MORX-20.tests',
  'MORX-21.tests',
  'MORX-22.tests',
  'MORX-23.tests',
  'MORX-24.tests',
  'MORX-25.tests',
  'MORX-26.tests',
  'MORX-27.tests',
  'MORX-28.tests',
  'MORX-29.tests',
  'MORX-2.tests',
  'MORX-30.tests',
  'MORX-31.tests',
  'MORX-32.tests',
  'MORX-33.tests',
  'MORX-34.tests',
  'MORX-35.tests',
  'MORX-36.tests',
  'MORX-37.tests',
  'MORX-38.tests',
  'MORX-39.tests',
  'MORX-3.tests',
  'MORX-40.tests',
  'MORX-41.tests',
  'MORX-4.tests',
  'MORX-5.tests',
  'MORX-6.tests',
  'MORX-7.tests',
  'MORX-8.tests',
  'MORX-9.tests',
  'SHBALI-3.tests',
  'SHKNDA-1.tests',
]

disabled_text_rendering_tests = [
  'CMAP-3.tests',
  'MORX-31.tests',
  'MORX-41.tests',
  'SHARAN-1.tests',
  'SHBALI-1.tests',
  'SHBALI-2.tests',
  'SHKNDA-2.tests',
  'SHKNDA-3.tests',
]

foreach file_name : in_house_tests
  test_name = file_name.split('.')[0].underscorify()

  test(test_name, python3,
    args: [
      files('run-tests.py')[0],
      hb_shape,
      join_paths(meson.current_source_dir(), 'data/in-house/tests', file_name),
    ],
    workdir: join_paths(meson.current_build_dir(), '..', '..'),
  )
endforeach

foreach file_name : aots_tests
  test_name = file_name.split('.')[0].underscorify()

  test(test_name, python3,
    args: [
      files('run-tests.py')[0],
      hb_shape,
      join_paths(meson.current_source_dir(), 'data/aots/tests', file_name),
    ],
    workdir: join_paths(meson.current_build_dir(), '..', '..'),
  )
endforeach

foreach file_name : text_rendering_tests
  test_name = file_name.split('.')[0].underscorify()

  test(test_name, python3,
    args: [
      files('run-tests.py')[0],
      hb_shape,
      join_paths(meson.current_source_dir(), 'data/text-rendering-tests/tests', file_name),
    ],
    workdir: join_paths(meson.current_build_dir(), '..', '..'),
  )
endforeach