# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0.  If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.

dns_tests = [
    'acl',
    'badcache',
    'db',
    'dbdiff',
    'dbiterator',
    'dbversion',
    'dispatch',
    'dns64',
    'dst',
    'ede',
    'keytable',
    'master',
    'name',
    'nametree',
    'nsec3',
    'nsec3param',
    'private',
    'qp',
    'qpdb',
    'qpmulti',
    'qpzone',
    'rdata',
    'rdataset',
    'rdatasetstats',
    'resconf',
    'resolver',
    'rsa',
    'sigs',
    'time',
    'transport',
    'tsig',
    'unreachcache',
    'update',
    'zonefile',
    'zonemd',
    'zonemgr',
    'zt',
]

if config.has('HAVE_GEOIP2')
    dns_tests += 'geoip'
endif

if config.has('HAVE_DNSTAP')
    dns_tests += 'dnstap'
endif

master_data = []
subdir('testdata/master')

foreach unit : dns_tests
    test_bin = executable(
        unit,
        files(f'@unit@_test.c'),
        build_by_default: false,
        export_dynamic: true,
        install: false,
        c_args: [
            '-DBUILDDIR="@0@"'.format(meson.current_build_dir()),
            '-DSRCDIR="@0@"'.format(meson.current_source_dir()),
            '-DTESTS_DIR="@0@"'.format(meson.current_source_dir()),
            '-DTEST_GEOIP_DATA="@0@"'.format(
                meson.project_source_root() / 'bin' / 'tests' / 'system' / 'geoip2' / 'data',
            ),
        ],
        dependencies: [
            libisc_dep,
            libdns_dep,
            libns_dep,
            libtest_dep,

            openssl_dep,

            cmocka_dep,
            dnstap_dep,
            maxminddb_dep,
        ],
    )

    test(
        unit,
        test_bin,
        depends: master_data,
        suite: 'dns',
        timeout: 300,
        workdir: meson.current_source_dir(),
    )
endforeach
