!have_target: return()

# qt_build_config.prf disables execptions for all Qt modules which don't
# explicitly turn it on again, while the qmake default is to build with
# exceptions. As we want tests to be built like 3rd party applications,
# qt_build_config tells us to re-enable exceptions here.
testcase_exceptions: CONFIG += exceptions

# Set in qt_build_config.prf
testcase_no_bundle: CONFIG -= app_bundle

# cmdline may have been specified and not processed yet
cmdline: CONFIG -= app_bundle

# Allow testcases to mark themselves as not supporting high-DPI
testcase_lowdpi {
    macos {
        !isEmpty(QMAKE_INFO_PLIST): \
            error("QMAKE_INFO_PLIST already set, can't apply testcase_lowdpi")

        QMAKE_INFO_PLIST = $$QMAKESPEC/Info.plist.disable_highdpi
    } else {
        # TODO: Add support for other platforms if possible
    }
}

benchmark: type = benchmark
else: type = check

$${type}.files =
$${type}.path = .

# Make sure we explicitly load the debug version of the Qt libraries if needed
macos {
    dyld_image_suffix.name = DYLD_IMAGE_SUFFIX
    dyld_image_suffix.value = $$qtPlatformTargetSuffix()
    QT_TOOL_ENV += dyld_image_suffix
}

# Add environment for non-installed builds. Do this first, so the
# 'make' variable expansions don't end up in a batch file/script.
QT_TOOL_NAME = target
qtAddTargetEnv($${type}.commands, QT)

# If the test ends up in a different directory, we should cd to that directory.
TESTRUN_CWD = $$DESTDIR

debug_and_release:debug_and_release_target {
    # But in debug-and-release-target mode we don't want to cd into the debug/release
    # directory (e.g. if the test goes to foo/release/tst_thing.exe, we want to do
    # 'cd foo && release/tst_thing.exe', not 'cd foo/release && tst_thing.exe').

    TESTRUN_CWD ~= s/(release|debug)$//
    TEST_TARGET_DIR = $$relative_path($$absolute_path($$DESTDIR, $$OUT_PWD), $$absolute_path($$TESTRUN_CWD, $$OUT_PWD))
}

# Allow for a custom test runner script

android: isEmpty($(TESTRUNNER)) {
    APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk)
    qtPrepareTool(ANDROIDTESTRUNNER, androidtestrunner)
    qtPrepareTool(ANDROIDDEPLOYQT, androiddeployqt)
    isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json
    contains(QMAKE_HOST.os, Windows): extension = .exe
    $${type}.commands  = $$ANDROIDTESTRUNNER --androiddeployqt \"$$ANDROIDDEPLOYQT --input $$ANDROID_DEPLOYMENT_SETTINGS_FILE\"
    $${type}.commands += --path \"$$OUT_PWD/android-build\"
    $${type}.commands += --adb \"$$shell_path($${ANDROID_SDK_ROOT}$${QMAKE_DIR_SEP}platform-tools$${QMAKE_DIR_SEP}adb$${extension})\"
    $${type}.commands += --make \"$(MAKE) -f $(MAKEFILE)\"
    $${type}.commands += --apk $$APK_PATH
} else: $${type}.commands += $(TESTRUNNER)

unix {
    isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = .

    app_bundle: \
        $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
    else: !android: \
        $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET)
} else {
    # Windows
    !isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $$shell_path($$TEST_TARGET_DIR)$${QMAKE_DIR_SEP}
    $${type}.commands += $${TEST_TARGET_DIR}$(TARGET)
}

# Allow for custom arguments to tests
$${type}.commands += $(TESTARGS)

!isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD, ^\\./?): \
    $${type}.commands = $$QMAKE_CD $$shell_path($$TESTRUN_CWD) && $$eval($${type}.commands)

# If the test is marked as insignificant, discard the exit code
insignificant_test: $${type}.commands = -$$eval($${type}.commands)

QMAKE_EXTRA_TARGETS *= $${type}

isEmpty(BUILDS)|build_pass {
    $${type}.depends = first
} else {
    # For exclusive builds, only run the test once.
    $${type}.CONFIG = recursive
    $${type}.target = $${type}_all
    $${type}.recurse_target = $${type}
    $${type}.commands =

    $${type}_first.depends = $$eval($$first(BUILDS).target)-$${type}
    $${type}_first.target = $${type}
    QMAKE_EXTRA_TARGETS += $${type}_first
}

!no_testcase_installs:!contains(INSTALLS, target) {
    # Install tests unless no_testcase_installs is set, or there is already
    # a `target' in INSTALLS.
    #
    # Tests are installed under a directory named after their source folder
    # so that each test has its own directory for testdata etc.
    #
    TEST_FOLDER = $$basename(_PRO_FILE_PWD_)
    target.path = $$[QT_INSTALL_TESTS]/$$TEST_FOLDER
    INSTALLS += target
}

!builtin_testdata:contains(INSTALLS, target) {
    # Install testdata and helpers as well, but only if we're actually installing the test.
    #
    # Testdata is installed relative to the directory containing the testcase
    # binary itself, e.g. this:
    #
    #   CONFIG += testcase
    #   TARGET = tst_qxmlreader
    #
    #   TESTDATA += testdata/test1.xml testdata/test2.xml
    #
    # ... will result in:
    #
    #   /usr/lib/qt5/tests/tst_qxmlreader/tst_qxmlreader
    #   /usr/lib/qt5/tests/tst_qxmlreader/testdata/test1.xml
    #   /usr/lib/qt5/tests/tst_qxmlreader/testdata/test2.xml
    #   ...
    #
    for(file, TESTDATA) {
        tnam = $$file
        tnam ~= s,\\.\\.,dotdot,
        tnam ~= s,[?*],wildcard,
        tnam ~= s,[^A-Za-z0-9],_,
        tdi = testdata_$$tnam

        # TESTDATA consists of the files to install (source)...
        $${tdi}.files = $$file

        # ... and the destination preserves the relative path.
        # Strip any leading ../ from the testdata, so that installation does not escape
        # the test's directory in the case of e.g.
        #
        #  TARGET   = ../tst_qprocess
        #  TESTDATA = ../thing1 ../thing2
        #
        # The testdata should end up at $$[QT_INSTALL_TESTS]/tst_qprocess/thing1,
        # rather than $$[QT_INSTALL_TESTS]/tst_qprocess/../thing1.
        #
        # Note that this does not guarantee the same relative path between test binary
        # and testdata in the build and install tree, but should cover most cases.
        #
        file = $$replace(file, ^(\\.\\./)+, )
        $${tdi}.path = $${target.path}/$$dirname(file)

        INSTALLS += $$tdi
    }

    # Install GENERATED_TESTDATA.
    # Logic is copied from the TESTDATA installation, only difference being that
    # INSTALL target is added with CONFIG = no_check_exist
    for(file, GENERATED_TESTDATA) {
        tnam = $$file
        tnam ~= s,\\.\\.,dotdot,
        tnam ~= s,[?*],wildcard,
        tnam ~= s,[^A-Za-z0-9],_,
        tdi = testdata_$$tnam

        $${tdi}.files = $$file
        $${tdi}.CONFIG = no_check_exist

        file = $$replace(file, ^(\\.\\./)+, )
        $${tdi}.path = $${target.path}/$$dirname(file)

        INSTALLS += $$tdi
    }

    # TEST_HELPER_INSTALLS specifies additional test helper executables for installation.
    #
    # Typical usage is:
    #
    #   TEST_HELPER_INSTALLS += ../some/helper1 ../some/helper2
    #
    # Resulting in the test helpers being installed to:
    #
    #   $$[QT_INSTALL_TESTS]/$$TARGET/some/helper1
    #   $$[QT_INSTALL_TESTS]/$$TARGET/some/helper2
    #
    win32: extension = .exe
    for(test_helper, TEST_HELPER_INSTALLS) {
        test_helper_dir = $$dirname(test_helper)
        output = $$basename(test_helper_dir)
        target = $$basename(test_helper)
        targetName = $$replace(target, ' ', '_') # handle spaces in name
        subTarget = $${targetName}.target
        subInstall = $${targetName}_install
        subConfig = $${subInstall}.CONFIG
        subFiles = $${subInstall}.files
        subPath = $${subInstall}.path
        $$subTarget = $${output}/$${target}$${extension}
        $$subFiles = $${OUT_PWD}/$${test_helper}$${extension}
        $$subPath = $${target.path}/$${output}
        $$subConfig += no_check_exist executable
        INSTALLS += $${subInstall}
    }
}

builtin_testdata {
    # RESOURCES does not support wildcards (for good reasons)
    for (td, TESTDATA): \
        testdata.files += $$files($$absolute_path($$td, $$_PRO_FILE_PWD_))
    # BLACKLIST needs to be added to the testdata
    BLACKLISTPATH = $$_PRO_FILE_PWD_/BLACKLIST
    exists($$BLACKLISTPATH): \
        testdata.files *= $$BLACKLISTPATH
    !isEmpty(testdata.files) {
        testdata.base = $$_PRO_FILE_PWD_
        RESOURCES += testdata
    }

    # Extra compilers don't create wildcards to start with.
    for (td, GENERATED_TESTDATA): \
        gentestdata.files += $$absolute_path($$td, $$OUT_PWD)
    !isEmpty(gentestdata.files) {
        gentestdata.base = $$OUT_PWD
        RESOURCES += gentestdata
    }

    !isEmpty(TEST_HELPER_INSTALLS): \
        error("This platform does not support tests which require helpers.")
}

macx-xcode:bundle:isEmpty(QMAKE_BUNDLE_EXTENSION) {
    QMAKE_PBX_PRODUCT_TYPE = com.apple.product-type.bundle.unit-test
    QMAKE_PBX_BUNDLE_TYPE = wrapper.cfbundle
    QMAKE_BUNDLE_EXTENSION = .xctest
}

