tests = [
  'basics',
  'full-font',
  'cff-full-font',
  'japanese',
  'cff-japanese',
  'cff.notoserifmyanmar',
  'glyf_bug_3131',
  'layout',
  'layout.gpos',
  'layout.gpos2',
  'layout.gpos3',
  'layout.gpos4',
  'layout.gpos5',
  'layout.gpos6',
  'layout.gpos8',
  'layout.gpos8.amiri',
  'layout.gpos9',
  'layout.gsub3',
  'layout.gsub5',
  'layout.gsub6',
  'layout.gsub8',
  'layout.gdef',
  'layout.khmer',
  'layout.context',
  'layout.gdef-varstore',
  'layout.gdef-attachlist',
  'layout.notonastaliqurdu',
  'layout.tinos',
  'layout.duplicate_features',
  'cmap',
  'cmap14',
  'sbix',
  'colr',
  'math',
# TODO: re-enable once colrv1 subsetting is stabilized.
# 'colrv1.notoemoji',
  'colrv1',
  'colr_with_components',
  'cbdt',
  'variable',
  'glyph_names',
]

repack_tests = [
  'basic',
  'prioritization',
  'table_duplication',
  'isolation',
]


run_test = find_program('run-tests.py')

foreach t : tests
  fname = '@0@.tests'.format(t)

  test(t, run_test,
    args: [
      hb_subset,
      join_paths(meson.current_source_dir(), 'data', 'tests', fname),
    ],
    # as the tests are ran concurrently let's raise acceptable time here
    # ideally better to break and let meson handles them in parallel
    timeout: 500,
    workdir: join_paths(meson.current_build_dir(), '..', '..'),
    suite: 'subset',
  )
endforeach

run_repack_test = find_program('run-repack-tests.py')

foreach t : repack_tests
  fname = '@0@.tests'.format(t)

  test(t, run_repack_test,
    args: [
      hb_subset,
      join_paths(meson.current_source_dir(), 'data', 'repack_tests', fname),
    ],
    workdir: join_paths(meson.current_build_dir(), '..', '..'),
    suite: ['subset', 'repack'],
  )
endforeach
