From 45b56d86bb6bdbc96a04b21587b8c9bc24087113 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Wed, 8 Apr 2020 14:07:21 +0300 Subject: Fix running qml tests on Android MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First and foremost the condition was wrong ... In order to help running qml test cases on Android without any android specific hack on user's .pro files we copy the entire project folder to assets. I copy the entire folder and not only the tst_*.qml files because it might contain data which is needed by the tests to run. Change-Id: I06323d9d52904317410dd2f440de65a0766a48b5 Reviewed-by: Tor Arne Vestbø Reviewed-by: Ville Voutilainen --- mkspecs/features/qmltestcase.prf | 8 ++++-- mkspecs/features/testcase.prf | 58 +++++++++++++++++++++++----------------- 2 files changed, 39 insertions(+), 27 deletions(-) (limited to 'mkspecs') diff --git a/mkspecs/features/qmltestcase.prf b/mkspecs/features/qmltestcase.prf index ae4ebef513..95e20a8a4f 100644 --- a/mkspecs/features/qmltestcase.prf +++ b/mkspecs/features/qmltestcase.prf @@ -5,8 +5,12 @@ contains(TEMPLATE, vc.*): DEFINES += QUICK_TEST_SOURCE_DIR=\"$$_PRO_FILE_PWD_\" else: DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\"$$_PRO_FILE_PWD_\") } else { - !isEmpty(RESOURCES): warning("The RESOURCES qmake variable is empty, the test will probably fail to run") - DEFINES += QUICK_TEST_SOURCE_DIR=\":/\" + isEmpty(RESOURCES) { + ANDROID_EXTRA_PLUGINS *= $$_PRO_FILE_PWD_ + DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\"assets:/$$basename(_PRO_FILE_PWD_)\") + } else { + DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\":/\") + } } } else { diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf index 4cce55fe04..53704c8787 100644 --- a/mkspecs/features/testcase.prf +++ b/mkspecs/features/testcase.prf @@ -63,33 +63,41 @@ debug_and_release:debug_and_release_target { # 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) + build_pass { + 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 --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) apk\" + $${type}.commands += --apk $$APK_PATH + # Allow for custom arguments to tests + !catch: $${type}.commands += $(TESTARGS) + $${type}.commands += "--" + for(import, IMPORTPATH): $${type}.commands *= -import \"assets:/$$basename(_PRO_FILE_PWD_)/$$import\" + } else { + $${type}.commands = "echo \"Pass\"" + } } else { - # Windows - !isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $$shell_path($$TEST_TARGET_DIR)$${QMAKE_DIR_SEP} - $${type}.commands += $${TEST_TARGET_DIR}$(TARGET) -} + $${type}.commands += $(TESTRUNNER) + + unix { + isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = . -# Allow for custom arguments to tests -!catch: $${type}.commands += $(TESTARGS) + 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 + !catch: $${type}.commands += $(TESTARGS) +} !isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD, ^\\./?): \ $${type}.commands = $$QMAKE_CD $$shell_path($$TESTRUN_CWD) && $$eval($${type}.commands) -- cgit v1.2.3