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-symbol.json',
  'doc-bad-union-member.json',
  'doc-before-include.json',
  'doc-before-pragma.json',
  'doc-duplicate-features.json',
  'doc-duplicated-arg.json',
  'doc-duplicated-return.json',
  'doc-duplicated-since.json',
  'doc-empty-arg.json',
  'doc-empty-features.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-return2.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-too-many.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],
                                    capture: true,
                                    feed: 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],
                                    capture: true,
                                    feed: true)

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