test_env = environment()
test_env.set('PYTHONPATH', meson.project_source_root() / 'scripts')
test_env.set('PYTHONIOENCODING', 'utf-8')

schemas = [
  'alternate-any.json',
  'alternate-array.json',
  'alternate-base.json',
  'alternate-branch-if-invalid.json',
  'alternate-clash.json',
  'alternate-conflict-dict.json',
  'alternate-conflict-enum-bool.json',
  'alternate-conflict-enum-int.json',
  'alternate-conflict-lists.json',
  'alternate-conflict-string.json',
  'alternate-conflict-bool-string.json',
  'alternate-conflict-num-string.json',
  'alternate-data-invalid.json',
  'alternate-empty.json',
  'alternate-invalid-dict.json',
  'alternate-nested.json',
  'alternate-unknown.json',
  'args-alternate.json',
  'args-any.json',
  'args-array-empty.json',
  'args-array-unknown.json',
  'args-bad-boxed.json',
  'args-boxed-anon.json',
  'args-boxed-string.json',
  'args-if-implicit.json',
  'args-if-unboxed.json',
  'args-int.json',
  'args-invalid.json',
  'args-member-array-bad.json',
  'args-member-case.json',
  'args-member-unknown.json',
  'args-union.json',
  'args-unknown.json',
  'bad-base.json',
  'bad-data.json',
  'bad-ident.json',
  'bad-if.json',
  'bad-if-all.json',
  'bad-if-empty.json',
  'bad-if-empty-list.json',
  'bad-if-key.json',
  'bad-if-keys.json',
  'bad-if-list.json',
  'bad-if-not.json',
  'bad-type-bool.json',
  'bad-type-dict.json',
  'bad-type-int.json',
  'base-cycle-direct.json',
  'base-cycle-indirect.json',
  'command-int.json',
  'comments.json',
  'doc-bad-alternate-member.json',
  'doc-bad-boxed-command-arg.json',
  'doc-bad-command-arg.json',
  'doc-bad-enum-member.json',
  'doc-bad-event-arg.json',
  'doc-bad-feature.json',
  'doc-bad-indent.json',
  'doc-bad-section.json',
  'doc-bad-symbol.json',
  'doc-bad-union-member.json',
  'doc-before-include.json',
  'doc-before-pragma.json',
  'doc-duplicated-arg.json',
  'doc-duplicated-return.json',
  'doc-duplicated-since.json',
  'doc-empty-arg.json',
  'doc-empty-section.json',
  'doc-empty-symbol.json',
  'doc-good.json',
  'doc-interleaved-section.json',
  'doc-invalid-end.json',
  'doc-invalid-end2.json',
  'doc-invalid-return.json',
  'doc-invalid-section.json',
  'doc-invalid-start.json',
  'doc-missing-colon.json',
  'doc-missing-expr.json',
  'doc-missing-space.json',
  'doc-missing.json',
  'doc-no-symbol.json',
  'doc-undoc-feature.json',
  'double-type.json',
  'duplicate-key.json',
  'empty.json',
  'enum-bad-member.json',
  'enum-bad-name.json',
  'enum-bad-prefix.json',
  'enum-clash-member.json',
  'enum-dict-member-unknown.json',
  'enum-if-invalid.json',
  'enum-int-member.json',
  'enum-member-case.json',
  'enum-missing-data.json',
  'enum-wrong-data.json',
  'event-boxed-empty.json',
  'event-case.json',
  'event-member-invalid-dict.json',
  'event-nest-struct.json',
  'features-bad-type.json',
  'features-deprecated-type.json',
  'features-duplicate-name.json',
  'features-if-invalid.json',
  'features-missing-name.json',
  'features-name-bad-type.json',
  'features-no-list.json',
  'features-unknown-key.json',
  'funny-char.json',
  'funny-word.json',
  'ident-with-escape.json',
  'include-before-err.json',
  'include-cycle.json',
  'include-extra-junk.json',
  'include-nested-err.json',
  'include-no-file.json',
  'include-non-file.json',
  'include-repetition.json',
  'include-self-cycle.json',
  'include-simple.json',
  'indented-expr.json',
  'leading-comma-list.json',
  'leading-comma-object.json',
  'missing-array-rsqb.json',
  'missing-colon.json',
  'missing-comma-list.json',
  'missing-comma-object.json',
  'missing-object-member-element.json',
  'missing-type.json',
  'nested-struct-data.json',
  'nested-struct-data-invalid-dict.json',
  'non-objects.json',
  'oob-coroutine.json',
  'oob-test.json',
  'allow-preconfig-test.json',
  'pragma-extra-junk.json',
  'pragma-non-dict.json',
  'pragma-unknown.json',
  'pragma-value-not-bool.json',
  'pragma-value-not-list-of-str.json',
  'pragma-value-not-list.json',
  'qapi-schema-test.json',
  'quoted-structural-chars.json',
  'redefined-command.json',
  'redefined-event.json',
  'redefined-predefined.json',
  'redefined-type.json',
  'reserved-command-q.json',
  'reserved-enum-q.json',
  'reserved-member-has.json',
  'reserved-member-q.json',
  'reserved-member-u.json',
  'reserved-member-underscore.json',
  'reserved-type-list.json',
  'returns-alternate.json',
  'returns-array-bad.json',
  'returns-bad-type.json',
  'returns-dict.json',
  'returns-unknown.json',
  'string-code-point-31.json',
  'string-code-point-127.json',
  'struct-base-clash-deep.json',
  'struct-base-clash.json',
  'struct-data-invalid.json',
  'struct-data-typename.json',
  'struct-member-if-invalid.json',
  'struct-member-invalid-dict.json',
  'struct-member-invalid.json',
  'struct-member-name-clash.json',
  'trailing-comma-list.json',
  'trailing-comma-object.json',
  'type-bypass-bad-gen.json',
  'type-case.json',
  'unclosed-list.json',
  'unclosed-object.json',
  'unclosed-string.json',
  'union-array-branch.json',
  'union-bad-base.json',
  'union-bad-discriminator.json',
  'union-base-any.json',
  'union-base-empty.json',
  'union-base-no-discriminator.json',
  'union-base-union.json',
  'union-branch-if-invalid.json',
  'union-branch-invalid-dict.json',
  'union-clash-member.json',
  'union-discriminator-bad-name.json',
  'union-empty.json',
  'union-inline-invalid-dict.json',
  'union-int-branch.json',
  'union-invalid-base.json',
  'union-invalid-branch-key.json',
  'union-invalid-data.json',
  'union-invalid-discriminator.json',
  'union-invalid-if-discriminator.json',
  'union-invalid-union-subfield.json',
  'union-invalid-union-subtype.json',
  'union-no-base.json',
  'union-optional-discriminator.json',
  'union-string-discriminator.json',
  'union-unknown.json',
  'unknown-escape.json',
  'unknown-expr-key.json',
]
schemas = files(schemas)

# Intentionally missing schema file test -- not passed through files():
schemas += [meson.current_source_dir() / 'missing-schema.json']

# Because people may want to use test-qapi.py from the command line, we
# are not using the "#! /usr/bin/env python3" trick here.  See
# docs/devel/build-system.rst
test('QAPI schema regression tests', python,
     args: files('test-qapi.py') + schemas,
     env: test_env, suite: ['qapi-schema', 'qapi-frontend'])

diff = find_program('diff')

custom_target('QAPI doc',
              output: ['doc-good-qapi-commands.c', 'doc-good-qapi-commands.h',
                       'doc-good-qapi-emit-events.c', 'doc-good-qapi-emit-events.h',
                       'doc-good-qapi-events.c', 'doc-good-qapi-events.h',
                       'doc-good-qapi-init-commands.c', 'doc-good-qapi-init-commands.h',
                       'doc-good-qapi-introspect.c', 'doc-good-qapi-introspect.h',
                       'doc-good-qapi-types.c', 'doc-good-qapi-types.h',
                       'doc-good-qapi-visit.c', 'doc-good-qapi-visit.h' ],
              input: files('doc-good.json'),
              command: [ qapi_gen, '-o', meson.current_build_dir(),
                         '-p', 'doc-good-', '@INPUT0@' ],
              depend_files: qapi_gen_depends)

if build_docs
  # Test the document-comment document generation code by running a test schema
  # file through Sphinx's plain-text builder and comparing the result against
  # a golden reference. This is in theory susceptible to failures if Sphinx
  # changes its output, but the text output has historically been very stable
  # (no changes between Sphinx 1.6 and 3.0), so it is a better bet than
  # texinfo or HTML generation, both of which have had changes. We might
  # need to add more sophisticated logic here in future for some sort of
  # fuzzy comparison if future Sphinx versions produce different text,
  # but for now the simple comparison suffices.
  qapi_doc_out = custom_target('QAPI rST doc',
                               output: ['doc-good.txt'],
                               input: files('doc-good.json', 'doc-good.rst'),
                               build_by_default: true,
                               depfile: 'docs.d',
                               # We use -E to suppress Sphinx's caching, because
                               # we want it to always really run the QAPI doc
                               # generation code. It also means we don't
                               # clutter up the build dir with the cache.
                               command: [SPHINX_ARGS,
                                         '-b', 'text', '-E',
                                         '-c', meson.project_source_root() / 'docs',
                                         '-D', 'master_doc=doc-good',
                                         '-Ddepfile=@DEPFILE@',
                                         '-Ddepfile_stamp=doc-good.stamp',
                                         meson.current_source_dir(),
                                         meson.current_build_dir()])

  # Fix possible inconsistency in line endings in generated output and
  # in the golden reference (which could otherwise cause test failures
  # on Windows hosts). Unfortunately diff --strip-trailing-cr
  # is GNU-diff only. The odd-looking python is because we must avoid
  # using an explicit '\' character in the command arguments to
  # a custom_target(), as Meson will unhelpfully replace it with a '/'
  # (https://github.com/mesonbuild/meson/issues/1564)
  remove_cr = [python, '-c', 'import sys;[sys.stdout.write(line.replace(chr(13), "")) for line in sys.stdin]']
  qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
                                    output: ['doc-good.txt.nocr'],
                                    input: qapi_doc_out[0],
                                    build_by_default: true,
                                    command: [remove_cr, '@INPUT@'],
                                    capture: true)

  qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized',
                                    output: ['doc-good.ref.nocr'],
                                    input: files('doc-good.txt'),
                                    build_by_default: true,
                                    command: [remove_cr, '@INPUT@'],
                                    capture: true)

  test('QAPI rST doc', diff, args: ['-u', qapi_doc_ref_nocr[0], qapi_doc_out_nocr[0]],
       suite: ['qapi-schema', 'qapi-doc'])
endif
