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-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-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
