diff --git a/.gitignore b/.gitignore index 79be220..83aacf2 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,4 @@ install_manifest.txt compile_commands.json CTestTestfile.cmake _deps +src/LibDeploy/src/deploy_global.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b3502c..f1b66c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,34 +29,35 @@ if (NOT QT_VERSION_MAJOR) endif() find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Test QUIET) -include(submodules/CMake/QuasarApp.cmake) +include(submodules/QuasarAppLib/CMake/QuasarApp.cmake) updateGitVars() -set(CQtDeployer_VERSION "0.${GIT_COMMIT_COUNT}.${GIT_COMMIT_HASH}") -set(CQtDeployer_PACKAGE_ID "quasarapp.core.CQtDeployer") +set(CQT_DEPLOYER_VERSION "1.6.${GIT_COMMIT_COUNT}.${GIT_COMMIT_HASH}") -option(CQtDeployer_TESTS "This option disables or enables tests of the ${PROJECT_NAME} project" ON) -option(CQtDeployer_EXAMPLE "This option disables or enables example app of the ${PROJECT_NAME} project" ON) +option(CQT_DEPLOYER_TESTS "This option disables or enables tests of the ${PROJECT_NAME} project" ON) +option(CQT_DEPLOYER_TOOL "This option disables or enables example app of the ${PROJECT_NAME} project" ON) if (ANDROID OR IOS OR NOT QT_VERSION_MAJOR OR QA_WASM32) - set(CQtDeployer_TESTS OFF CACHE BOOL "This option force disbled for ANDROID IOS QA_WASM32 and Not Qt projects" FORCE) + set(CQT_DEPLOYER_TESTS OFF CACHE BOOL "This option force disbled for ANDROID IOS QA_WASM32 and Not Qt projects" FORCE) endif() if (NOT QT_VERSION_MAJOR) - set(CQtDeployer_EXAMPLE OFF CACHE BOOL "This option force disbled for Not Qt projects" FORCE) + set(CQT_DEPLOYER_TOOL OFF CACHE BOOL "This option force disbled for Not Qt projects" FORCE) endif() make_directory(Distro) initAll() -add_subdirectory(src/Library) +add_subdirectory(submodules/QuasarAppLib) -if (DEFINED CQtDeployer_EXAMPLE) - add_subdirectory(src/Example) +add_subdirectory(src/LibDeploy) + +if (DEFINED CQT_DEPLOYER_TOOL) + add_subdirectory(src/CQtDeployer) endif() -if (CQtDeployer_TESTS) +if (CQT_DEPLOYER_TESTS) add_subdirectory(tests) else() message("The ${PROJECT_NAME} tests is disabled.") diff --git a/src/CQtDeployer/CMakeLists.txt b/src/CQtDeployer/CMakeLists.txt index 9ab9beb..ee013e0 100644 --- a/src/CQtDeployer/CMakeLists.txt +++ b/src/CQtDeployer/CMakeLists.txt @@ -43,7 +43,7 @@ else() endif() -target_link_libraries(${CURRENT_PROJECT} PUBLIC ${PROJECT_NAME}Library) +target_link_libraries(${CURRENT_PROJECT} PUBLIC ${PROJECT_NAME}LibDeploy) target_include_directories(${CURRENT_PROJECT} PUBLIC ${PUBLIC_INCUDE_DIR}) target_include_directories(${CURRENT_PROJECT} PRIVATE ${PRIVATE_INCUDE_DIR}) @@ -51,79 +51,6 @@ target_include_directories(${CURRENT_PROJECT} PRIVATE ${PRIVATE_INCUDE_DIR}) SET(TARGET_DIR "${CMAKE_SOURCE_DIR}/Distro") file(MAKE_DIRECTORY ${TARGET_DIR}) -if (ANDROID) - - set(ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android CACHE INTERNAL "") - set(ENV{ANDROID_API_VERSION} 31) - set(ANDROID_API_VERSION $ENV{ANDROID_API_VERSION}) - set(OPENSSL_ROOT_PATH "$ENV{OPENSSL_ROOT_DIR}") - - set(CQtDeployer_EXTRA_LIBS - ${PROJECT_NAME}Library -# libName - ) - -# find_package(Qt${QT_VERSION_MAJOR} COMPONENTS AndroidExtras REQUIRED) -# target_link_libraries(${CURRENT_PROJECT} PRIVATE Qt${QT_VERSION_MAJOR}::AndroidExtras) - - if (SIGN_APP) - message("SIGN_APP") - addDeploySignedAPK(${CURRENT_PROJECT} - "${CMAKE_CURRENT_LIST_DIR}/android" - "QuasarAppProject" - "${SIGPATH}/quasarapp.keystore" - "${SIGPASS_QUASARAPP}" - "${TARGET_DIR}" - "${CQtDeployer_EXTRA_LIBS}") - - else() - message("NO_SIGN_APP") - - addDeployAPK(${CURRENT_PROJECT} - "${CMAKE_CURRENT_LIST_DIR}/android" - "${TARGET_DIR}" - "${CQtDeployer_EXTRA_LIBS}") - - endif() - set(manifest_file "${CMAKE_CURRENT_SOURCE_DIR}/android/AndroidManifest.xml") - configure_file("${manifest_file}.in" ${manifest_file} @ONLY) - - set(gradle_file "${CMAKE_CURRENT_SOURCE_DIR}/android/build.gradle") - configure_file("${gradle_file}.in" ${gradle_file} @ONLY) - - file(GLOB java_files - "android/src/com/quasarapp/androidtools/*.java" - "android/*.xml" - "android/*.gradle" - "android/gradlew" - "android/gradle.*" - - ) - - add_custom_target(${name}Android - SOURCES ${java_files} - ) - -elseif(IOS) -# set_xcode_property(${CURRENT_PROJECT} PRODUCT_BUNDLE_IDENTIFIER ${CHEATCARD_PACKAGE_ID} All) - - set_target_properties(${CURRENT_PROJECT} PROPERTIES - MACOSX_BUNDLE_GUI_IDENTIFIER ${CQtDeployer_PACKAGE_ID} - MACOSX_BUNDLE_BUNDLE_VERSION ${CQtDeployer_VERSION} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${CQtDeployer_VERSION} - ) -else() - # Desctop deploying - - message(GIT_COMMIT_COUNT = ${GIT_COMMIT_COUNT}) - - set(DeployFile "${CMAKE_CURRENT_SOURCE_DIR}/Deploy/CQtDeployer.json") - configure_file("${DeployFile}.in" ${DeployFile} @ONLY) - - addDeployFromCustomFile("CQtDeployer" ${DeployFile}) - -endif() - if(QT_VERSION_MAJOR EQUAL 6) # Add This line if your project use the Quick module # qt_import_qml_plugins(${CURRENT_PROJECT}) diff --git a/src/CQtDeployer/Deploy/CQtDeployer.json b/src/CQtDeployer/Deploy/CQtDeployer.json index 1cd88b0..c12e5c2 100644 --- a/src/CQtDeployer/Deploy/CQtDeployer.json +++ b/src/CQtDeployer/Deploy/CQtDeployer.json @@ -4,11 +4,11 @@ "src/build/Debug/CQtDeployerEaxample.exe" ], "clear": true, - "binPrefix": "/media/D/builds/build-CMakeProject-Desktop_Qt_6_1_3_GCC_64bit-Debug", + "binPrefix": "/media/D/builds/build-CQtDeployerCmakePort-Desktop_Qt_5_15_2_GCC_64bit-Debug", "libDir": [ - "/media/D/builds/CMakeProject", + "/media/D/builds/CQtDeployerCmakePort", "/home/andrei/Qt/5.15.2/gcc_64", - "/media/D/builds/build-CMakeProject-Desktop_Qt_6_1_3_GCC_64bit-Debug" + "/media/D/builds/build-CQtDeployerCmakePort-Desktop_Qt_5_15_2_GCC_64bit-Debug" ], "recursiveDepth": "10", "deploySystem": false, @@ -17,11 +17,11 @@ "qif": true, "zip": true, "ignoreEnv": [ - "/media/D/builds/CMakeProject/Distro" + "/media/D/builds/CQtDeployerCmakePort/Distro" ], "extraLib": "crypto", - "targetDir": "/media/D/builds/CMakeProject/Distro", - "deployVersion": "0.84.1a139e7", + "targetDir": "/media/D/builds/CQtDeployerCmakePort/Distro", + "deployVersion": "", } diff --git a/src/Deploy/CMakeLists.txt b/src/LibDeploy/CMakeLists.txt similarity index 63% rename from src/Deploy/CMakeLists.txt rename to src/LibDeploy/CMakeLists.txt index 5f18653..c6731ec 100644 --- a/src/Deploy/CMakeLists.txt +++ b/src/LibDeploy/CMakeLists.txt @@ -10,33 +10,31 @@ cmake_minimum_required(VERSION 3.18) get_filename_component(CURRENT_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR} NAME) set(CURRENT_PROJECT "${PROJECT_NAME}${CURRENT_PROJECT_DIR}") -add_definitions(-DCQtDeployer_LIBRARY) +add_definitions(-DCQT_DEPLOYER_LIBRARY) file(GLOB_RECURSE SOURCE_CPP "src/*.cpp" "src/*.h" + + "src/Distributions/*.cpp" + "src/Distributions/*.h" + ) -if (${QT_VERSION_MAJOR}) - file(GLOB_RECURSE SOURCE_QRC - "*.qrc" - ) +file(GLOB_RECURSE SOURCE_QRC + "*.qrc" + "src/*.qrc" +) -endif() - -set(PUBLIC_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/public") -set(PRIVATE_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/private") +set(PUBLIC_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") add_library(${CURRENT_PROJECT} ${SOURCE_CPP} ${SOURCE_QRC}) -if (${QT_VERSION_MAJOR}) - target_link_libraries(${CURRENT_PROJECT} PUBLIC Qt${QT_VERSION_MAJOR}::Core ) -endif() +target_link_libraries(${CURRENT_PROJECT} PUBLIC QuasarApp ) target_include_directories(${CURRENT_PROJECT} PUBLIC ${PUBLIC_INCUDE_DIR}) -target_include_directories(${CURRENT_PROJECT} PRIVATE ${PRIVATE_INCUDE_DIR}) set(LANGS ${CMAKE_CURRENT_SOURCE_DIR}/languages/en.ts) @@ -45,5 +43,5 @@ prepareQM(${CURRENT_PROJECT} ${CMAKE_CURRENT_SOURCE_DIR} "${LANGS}") set(QML_IMPORT_PATH ${QML_IMPORT_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/src" CACHE STRING "" FORCE) -set(global_file "${CMAKE_CURRENT_SOURCE_DIR}/src/public/CQtDeployer/global.h") +set(global_file "${CMAKE_CURRENT_SOURCE_DIR}/src/deploy_global.h") configure_file("${global_file}.in" ${global_file} @ONLY) diff --git a/src/Deploy/CQtDeployer.qrc b/src/LibDeploy/CQtDeployer.qrc similarity index 100% rename from src/Deploy/CQtDeployer.qrc rename to src/LibDeploy/CQtDeployer.qrc diff --git a/src/Deploy/languages/en.ts b/src/LibDeploy/languages/en.ts similarity index 100% rename from src/Deploy/languages/en.ts rename to src/LibDeploy/languages/en.ts diff --git a/src/Deploy/src/DeployResources.qrc b/src/LibDeploy/src/DeployResources.qrc similarity index 100% rename from src/Deploy/src/DeployResources.qrc rename to src/LibDeploy/src/DeployResources.qrc diff --git a/src/Deploy/src/Distributions/Templates/Icon.ico b/src/LibDeploy/src/Distributions/Templates/Icon.ico similarity index 100% rename from src/Deploy/src/Distributions/Templates/Icon.ico rename to src/LibDeploy/src/Distributions/Templates/Icon.ico diff --git a/src/Deploy/src/Distributions/Templates/Icon.png b/src/LibDeploy/src/Distributions/Templates/Icon.png similarity index 100% rename from src/Deploy/src/Distributions/Templates/Icon.png rename to src/LibDeploy/src/Distributions/Templates/Icon.png diff --git a/src/Deploy/src/Distributions/Templates/deb/DEBIAN/control b/src/LibDeploy/src/Distributions/Templates/deb/DEBIAN/control similarity index 100% rename from src/Deploy/src/Distributions/Templates/deb/DEBIAN/control rename to src/LibDeploy/src/Distributions/Templates/deb/DEBIAN/control diff --git a/src/Deploy/src/Distributions/Templates/deb/DEBIAN/postinst b/src/LibDeploy/src/Distributions/Templates/deb/DEBIAN/postinst similarity index 100% rename from src/Deploy/src/Distributions/Templates/deb/DEBIAN/postinst rename to src/LibDeploy/src/Distributions/Templates/deb/DEBIAN/postinst diff --git a/src/Deploy/src/Distributions/Templates/deb/DEBIAN/prerm b/src/LibDeploy/src/Distributions/Templates/deb/DEBIAN/prerm similarity index 100% rename from src/Deploy/src/Distributions/Templates/deb/DEBIAN/prerm rename to src/LibDeploy/src/Distributions/Templates/deb/DEBIAN/prerm diff --git a/src/Deploy/src/Distributions/Templates/qif/Styles/quasar.css b/src/LibDeploy/src/Distributions/Templates/qif/Styles/quasar.css similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/Styles/quasar.css rename to src/LibDeploy/src/Distributions/Templates/qif/Styles/quasar.css diff --git a/src/Deploy/src/Distributions/Templates/qif/Styles/quasarDark.css b/src/LibDeploy/src/Distributions/Templates/qif/Styles/quasarDark.css similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/Styles/quasarDark.css rename to src/LibDeploy/src/Distributions/Templates/qif/Styles/quasarDark.css diff --git a/src/Deploy/src/Distributions/Templates/qif/config custom designe/config.xml b/src/LibDeploy/src/Distributions/Templates/qif/config custom designe/config.xml similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/config custom designe/config.xml rename to src/LibDeploy/src/Distributions/Templates/qif/config custom designe/config.xml diff --git a/src/Deploy/src/Distributions/Templates/qif/config custom designe/controlScript.qs b/src/LibDeploy/src/Distributions/Templates/qif/config custom designe/controlScript.qs similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/config custom designe/controlScript.qs rename to src/LibDeploy/src/Distributions/Templates/qif/config custom designe/controlScript.qs diff --git a/src/Deploy/src/Distributions/Templates/qif/config custom designe/style.css b/src/LibDeploy/src/Distributions/Templates/qif/config custom designe/style.css similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/config custom designe/style.css rename to src/LibDeploy/src/Distributions/Templates/qif/config custom designe/style.css diff --git a/src/Deploy/src/Distributions/Templates/qif/config/config.xml b/src/LibDeploy/src/Distributions/Templates/qif/config/config.xml similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/config/config.xml rename to src/LibDeploy/src/Distributions/Templates/qif/config/config.xml diff --git a/src/Deploy/src/Distributions/Templates/qif/config/controlScript.qs b/src/LibDeploy/src/Distributions/Templates/qif/config/controlScript.qs similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/config/controlScript.qs rename to src/LibDeploy/src/Distributions/Templates/qif/config/controlScript.qs diff --git a/src/Deploy/src/Distributions/Templates/qif/packages/default/meta/installscript.qs b/src/LibDeploy/src/Distributions/Templates/qif/packages/default/meta/installscript.qs similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/packages/default/meta/installscript.qs rename to src/LibDeploy/src/Distributions/Templates/qif/packages/default/meta/installscript.qs diff --git a/src/Deploy/src/Distributions/Templates/qif/packages/default/meta/package.xml b/src/LibDeploy/src/Distributions/Templates/qif/packages/default/meta/package.xml similarity index 100% rename from src/Deploy/src/Distributions/Templates/qif/packages/default/meta/package.xml rename to src/LibDeploy/src/Distributions/Templates/qif/packages/default/meta/package.xml diff --git a/src/Deploy/src/Distributions/configures/Init multiPackage configuration.json b/src/LibDeploy/src/Distributions/configures/Init multiPackage configuration.json similarity index 100% rename from src/Deploy/src/Distributions/configures/Init multiPackage configuration.json rename to src/LibDeploy/src/Distributions/configures/Init multiPackage configuration.json diff --git a/src/Deploy/src/Distributions/configures/Init single configuration.json b/src/LibDeploy/src/Distributions/configures/Init single configuration.json similarity index 100% rename from src/Deploy/src/Distributions/configures/Init single configuration.json rename to src/LibDeploy/src/Distributions/configures/Init single configuration.json diff --git a/src/Deploy/src/Distributions/configures/Init.json b/src/LibDeploy/src/Distributions/configures/Init.json similarity index 100% rename from src/Deploy/src/Distributions/configures/Init.json rename to src/LibDeploy/src/Distributions/configures/Init.json diff --git a/src/Deploy/src/Distributions/deb.cpp b/src/LibDeploy/src/Distributions/deb.cpp similarity index 100% rename from src/Deploy/src/Distributions/deb.cpp rename to src/LibDeploy/src/Distributions/deb.cpp diff --git a/src/Deploy/src/Distributions/deb.h b/src/LibDeploy/src/Distributions/deb.h similarity index 100% rename from src/Deploy/src/Distributions/deb.h rename to src/LibDeploy/src/Distributions/deb.h diff --git a/src/Deploy/src/Distributions/defaultdistro.cpp b/src/LibDeploy/src/Distributions/defaultdistro.cpp similarity index 100% rename from src/Deploy/src/Distributions/defaultdistro.cpp rename to src/LibDeploy/src/Distributions/defaultdistro.cpp diff --git a/src/Deploy/src/Distributions/defaultdistro.h b/src/LibDeploy/src/Distributions/defaultdistro.h similarity index 100% rename from src/Deploy/src/Distributions/defaultdistro.h rename to src/LibDeploy/src/Distributions/defaultdistro.h diff --git a/src/Deploy/src/Distributions/idistribution.cpp b/src/LibDeploy/src/Distributions/idistribution.cpp similarity index 100% rename from src/Deploy/src/Distributions/idistribution.cpp rename to src/LibDeploy/src/Distributions/idistribution.cpp diff --git a/src/Deploy/src/Distributions/idistribution.h b/src/LibDeploy/src/Distributions/idistribution.h similarity index 100% rename from src/Deploy/src/Distributions/idistribution.h rename to src/LibDeploy/src/Distributions/idistribution.h diff --git a/src/Deploy/src/Distributions/qif.cpp b/src/LibDeploy/src/Distributions/qif.cpp similarity index 100% rename from src/Deploy/src/Distributions/qif.cpp rename to src/LibDeploy/src/Distributions/qif.cpp diff --git a/src/Deploy/src/Distributions/qif.h b/src/LibDeploy/src/Distributions/qif.h similarity index 100% rename from src/Deploy/src/Distributions/qif.h rename to src/LibDeploy/src/Distributions/qif.h diff --git a/src/Deploy/src/Distributions/templateinfo.cpp b/src/LibDeploy/src/Distributions/templateinfo.cpp similarity index 100% rename from src/Deploy/src/Distributions/templateinfo.cpp rename to src/LibDeploy/src/Distributions/templateinfo.cpp diff --git a/src/Deploy/src/Distributions/templateinfo.h b/src/LibDeploy/src/Distributions/templateinfo.h similarity index 100% rename from src/Deploy/src/Distributions/templateinfo.h rename to src/LibDeploy/src/Distributions/templateinfo.h diff --git a/src/Deploy/src/Distributions/ziparhive.cpp b/src/LibDeploy/src/Distributions/ziparhive.cpp similarity index 100% rename from src/Deploy/src/Distributions/ziparhive.cpp rename to src/LibDeploy/src/Distributions/ziparhive.cpp diff --git a/src/Deploy/src/Distributions/ziparhive.h b/src/LibDeploy/src/Distributions/ziparhive.h similarity index 100% rename from src/Deploy/src/Distributions/ziparhive.h rename to src/LibDeploy/src/Distributions/ziparhive.h diff --git a/src/Deploy/src/ScriptsTemplates/linux.sh b/src/LibDeploy/src/ScriptsTemplates/linux.sh similarity index 100% rename from src/Deploy/src/ScriptsTemplates/linux.sh rename to src/LibDeploy/src/ScriptsTemplates/linux.sh diff --git a/src/Deploy/src/ScriptsTemplates/windows.bat b/src/LibDeploy/src/ScriptsTemplates/windows.bat similarity index 100% rename from src/Deploy/src/ScriptsTemplates/windows.bat rename to src/LibDeploy/src/ScriptsTemplates/windows.bat diff --git a/src/Deploy/src/configparser.cpp b/src/LibDeploy/src/configparser.cpp similarity index 100% rename from src/Deploy/src/configparser.cpp rename to src/LibDeploy/src/configparser.cpp diff --git a/src/Deploy/src/configparser.h b/src/LibDeploy/src/configparser.h similarity index 95% rename from src/Deploy/src/configparser.h rename to src/LibDeploy/src/configparser.h index 8abf05a..f278a43 100644 --- a/src/Deploy/src/configparser.h +++ b/src/LibDeploy/src/configparser.h @@ -7,12 +7,7 @@ #ifndef CQT_H #define CQT_H -#include "deployconfig.h" #include "distrostruct.h" -#include "envirement.h" -#include "ignorerule.h" -#include "targetdata.h" -#include "targetinfo.h" #include #include @@ -36,7 +31,7 @@ public: bool smartMoveTargets(); const DeployConfig* config() const; - friend class deploytest; + friend class DeployTargetTest; private: diff --git a/src/Deploy/src/defines.h b/src/LibDeploy/src/defines.h similarity index 100% rename from src/Deploy/src/defines.h rename to src/LibDeploy/src/defines.h diff --git a/src/Deploy/src/dependenciesscanner.cpp b/src/LibDeploy/src/dependenciesscanner.cpp similarity index 100% rename from src/Deploy/src/dependenciesscanner.cpp rename to src/LibDeploy/src/dependenciesscanner.cpp diff --git a/src/Deploy/src/dependenciesscanner.h b/src/LibDeploy/src/dependenciesscanner.h similarity index 100% rename from src/Deploy/src/dependenciesscanner.h rename to src/LibDeploy/src/dependenciesscanner.h diff --git a/src/Deploy/src/dependencymap.cpp b/src/LibDeploy/src/dependencymap.cpp similarity index 100% rename from src/Deploy/src/dependencymap.cpp rename to src/LibDeploy/src/dependencymap.cpp diff --git a/src/Deploy/src/dependencymap.h b/src/LibDeploy/src/dependencymap.h similarity index 100% rename from src/Deploy/src/dependencymap.h rename to src/LibDeploy/src/dependencymap.h diff --git a/src/Deploy/src/deploy.cpp b/src/LibDeploy/src/deploy.cpp similarity index 100% rename from src/Deploy/src/deploy.cpp rename to src/LibDeploy/src/deploy.cpp diff --git a/src/Deploy/src/deploy.h b/src/LibDeploy/src/deploy.h similarity index 100% rename from src/Deploy/src/deploy.h rename to src/LibDeploy/src/deploy.h diff --git a/src/Deploy/src/deploy_global.h b/src/LibDeploy/src/deploy_global.h.in similarity index 87% rename from src/Deploy/src/deploy_global.h rename to src/LibDeploy/src/deploy_global.h.in index c3cb527..feac3fb 100644 --- a/src/Deploy/src/deploy_global.h +++ b/src/LibDeploy/src/deploy_global.h.in @@ -12,9 +12,10 @@ #define DEFAULT_COFIGURATION_FILE QString("CQtDeployer.json") #define DISTRO_DIR QString("DistributionKit") +#define CQT_DEPLOYER_VERSION "@CQT_DEPLOYER_VERSION@" -#if defined(DEPLOY_LIBRARY) +#if defined(CQT_DEPLOYER_LIBRARY) # define DEPLOYSHARED_EXPORT Q_DECL_EXPORT #else # define DEPLOYSHARED_EXPORT Q_DECL_IMPORT diff --git a/src/Deploy/src/deployconfig.cpp b/src/LibDeploy/src/deployconfig.cpp similarity index 100% rename from src/Deploy/src/deployconfig.cpp rename to src/LibDeploy/src/deployconfig.cpp diff --git a/src/Deploy/src/deployconfig.h b/src/LibDeploy/src/deployconfig.h similarity index 100% rename from src/Deploy/src/deployconfig.h rename to src/LibDeploy/src/deployconfig.h diff --git a/src/Deploy/src/deploycore.cpp b/src/LibDeploy/src/deploycore.cpp similarity index 100% rename from src/Deploy/src/deploycore.cpp rename to src/LibDeploy/src/deploycore.cpp diff --git a/src/Deploy/src/deploycore.h b/src/LibDeploy/src/deploycore.h similarity index 99% rename from src/Deploy/src/deploycore.h rename to src/LibDeploy/src/deploycore.h index d0fd2ea..79cb872 100644 --- a/src/Deploy/src/deploycore.h +++ b/src/LibDeploy/src/deploycore.h @@ -12,8 +12,7 @@ #include #include #include "deploy_global.h" -#include "defines.h" -#include "quasarapp.h" +#include enum MSVCVersion: int { MSVC_Unknown = 0x0, diff --git a/src/Deploy/src/distromodule.cpp b/src/LibDeploy/src/distromodule.cpp similarity index 100% rename from src/Deploy/src/distromodule.cpp rename to src/LibDeploy/src/distromodule.cpp diff --git a/src/Deploy/src/distromodule.h b/src/LibDeploy/src/distromodule.h similarity index 100% rename from src/Deploy/src/distromodule.h rename to src/LibDeploy/src/distromodule.h diff --git a/src/Deploy/src/distrostruct.cpp b/src/LibDeploy/src/distrostruct.cpp similarity index 100% rename from src/Deploy/src/distrostruct.cpp rename to src/LibDeploy/src/distrostruct.cpp diff --git a/src/Deploy/src/distrostruct.h b/src/LibDeploy/src/distrostruct.h similarity index 100% rename from src/Deploy/src/distrostruct.h rename to src/LibDeploy/src/distrostruct.h diff --git a/src/Deploy/src/elf_type.cpp b/src/LibDeploy/src/elf_type.cpp similarity index 100% rename from src/Deploy/src/elf_type.cpp rename to src/LibDeploy/src/elf_type.cpp diff --git a/src/Deploy/src/elf_type.h b/src/LibDeploy/src/elf_type.h similarity index 100% rename from src/Deploy/src/elf_type.h rename to src/LibDeploy/src/elf_type.h diff --git a/src/Deploy/src/envirement.cpp b/src/LibDeploy/src/envirement.cpp similarity index 100% rename from src/Deploy/src/envirement.cpp rename to src/LibDeploy/src/envirement.cpp diff --git a/src/Deploy/src/envirement.h b/src/LibDeploy/src/envirement.h similarity index 100% rename from src/Deploy/src/envirement.h rename to src/LibDeploy/src/envirement.h diff --git a/src/Deploy/src/extra.cpp b/src/LibDeploy/src/extra.cpp similarity index 100% rename from src/Deploy/src/extra.cpp rename to src/LibDeploy/src/extra.cpp diff --git a/src/Deploy/src/extra.h b/src/LibDeploy/src/extra.h similarity index 100% rename from src/Deploy/src/extra.h rename to src/LibDeploy/src/extra.h diff --git a/src/Deploy/src/extracter.cpp b/src/LibDeploy/src/extracter.cpp similarity index 100% rename from src/Deploy/src/extracter.cpp rename to src/LibDeploy/src/extracter.cpp diff --git a/src/Deploy/src/extracter.h b/src/LibDeploy/src/extracter.h similarity index 100% rename from src/Deploy/src/extracter.h rename to src/LibDeploy/src/extracter.h diff --git a/src/Deploy/src/filemanager.cpp b/src/LibDeploy/src/filemanager.cpp similarity index 100% rename from src/Deploy/src/filemanager.cpp rename to src/LibDeploy/src/filemanager.cpp diff --git a/src/Deploy/src/filemanager.h b/src/LibDeploy/src/filemanager.h similarity index 100% rename from src/Deploy/src/filemanager.h rename to src/LibDeploy/src/filemanager.h diff --git a/src/Deploy/src/generalfiles_type.cpp b/src/LibDeploy/src/generalfiles_type.cpp similarity index 100% rename from src/Deploy/src/generalfiles_type.cpp rename to src/LibDeploy/src/generalfiles_type.cpp diff --git a/src/Deploy/src/generalfiles_type.h b/src/LibDeploy/src/generalfiles_type.h similarity index 100% rename from src/Deploy/src/generalfiles_type.h rename to src/LibDeploy/src/generalfiles_type.h diff --git a/src/Deploy/src/igetlibinfo.cpp b/src/LibDeploy/src/igetlibinfo.cpp similarity index 100% rename from src/Deploy/src/igetlibinfo.cpp rename to src/LibDeploy/src/igetlibinfo.cpp diff --git a/src/Deploy/src/igetlibinfo.h b/src/LibDeploy/src/igetlibinfo.h similarity index 100% rename from src/Deploy/src/igetlibinfo.h rename to src/LibDeploy/src/igetlibinfo.h diff --git a/src/Deploy/src/ignorerule.cpp b/src/LibDeploy/src/ignorerule.cpp similarity index 100% rename from src/Deploy/src/ignorerule.cpp rename to src/LibDeploy/src/ignorerule.cpp diff --git a/src/Deploy/src/ignorerule.h b/src/LibDeploy/src/ignorerule.h similarity index 100% rename from src/Deploy/src/ignorerule.h rename to src/LibDeploy/src/ignorerule.h diff --git a/src/Deploy/src/libinfo.cpp b/src/LibDeploy/src/libinfo.cpp similarity index 100% rename from src/Deploy/src/libinfo.cpp rename to src/LibDeploy/src/libinfo.cpp diff --git a/src/Deploy/src/libinfo.h b/src/LibDeploy/src/libinfo.h similarity index 100% rename from src/Deploy/src/libinfo.h rename to src/LibDeploy/src/libinfo.h diff --git a/src/Deploy/src/metafilemanager.cpp b/src/LibDeploy/src/metafilemanager.cpp similarity index 100% rename from src/Deploy/src/metafilemanager.cpp rename to src/LibDeploy/src/metafilemanager.cpp diff --git a/src/Deploy/src/metafilemanager.h b/src/LibDeploy/src/metafilemanager.h similarity index 100% rename from src/Deploy/src/metafilemanager.h rename to src/LibDeploy/src/metafilemanager.h diff --git a/src/Deploy/src/packagecontrol.cpp b/src/LibDeploy/src/packagecontrol.cpp similarity index 100% rename from src/Deploy/src/packagecontrol.cpp rename to src/LibDeploy/src/packagecontrol.cpp diff --git a/src/Deploy/src/packagecontrol.h b/src/LibDeploy/src/packagecontrol.h similarity index 100% rename from src/Deploy/src/packagecontrol.h rename to src/LibDeploy/src/packagecontrol.h diff --git a/src/Deploy/src/packing.cpp b/src/LibDeploy/src/packing.cpp similarity index 100% rename from src/Deploy/src/packing.cpp rename to src/LibDeploy/src/packing.cpp diff --git a/src/Deploy/src/packing.h b/src/LibDeploy/src/packing.h similarity index 100% rename from src/Deploy/src/packing.h rename to src/LibDeploy/src/packing.h diff --git a/src/Deploy/src/pathutils.cpp b/src/LibDeploy/src/pathutils.cpp similarity index 100% rename from src/Deploy/src/pathutils.cpp rename to src/LibDeploy/src/pathutils.cpp diff --git a/src/Deploy/src/pathutils.h b/src/LibDeploy/src/pathutils.h similarity index 100% rename from src/Deploy/src/pathutils.h rename to src/LibDeploy/src/pathutils.h diff --git a/src/Deploy/src/pe_type.cpp b/src/LibDeploy/src/pe_type.cpp similarity index 100% rename from src/Deploy/src/pe_type.cpp rename to src/LibDeploy/src/pe_type.cpp diff --git a/src/Deploy/src/pe_type.h b/src/LibDeploy/src/pe_type.h similarity index 100% rename from src/Deploy/src/pe_type.h rename to src/LibDeploy/src/pe_type.h diff --git a/src/Deploy/src/pluginsparser.cpp b/src/LibDeploy/src/pluginsparser.cpp similarity index 100% rename from src/Deploy/src/pluginsparser.cpp rename to src/LibDeploy/src/pluginsparser.cpp diff --git a/src/Deploy/src/pluginsparser.h b/src/LibDeploy/src/pluginsparser.h similarity index 100% rename from src/Deploy/src/pluginsparser.h rename to src/LibDeploy/src/pluginsparser.h diff --git a/src/Deploy/src/qml.cpp b/src/LibDeploy/src/qml.cpp similarity index 100% rename from src/Deploy/src/qml.cpp rename to src/LibDeploy/src/qml.cpp diff --git a/src/Deploy/src/qml.h b/src/LibDeploy/src/qml.h similarity index 100% rename from src/Deploy/src/qml.h rename to src/LibDeploy/src/qml.h diff --git a/src/Deploy/src/qtdir.cpp b/src/LibDeploy/src/qtdir.cpp similarity index 100% rename from src/Deploy/src/qtdir.cpp rename to src/LibDeploy/src/qtdir.cpp diff --git a/src/Deploy/src/qtdir.h b/src/LibDeploy/src/qtdir.h similarity index 100% rename from src/Deploy/src/qtdir.h rename to src/LibDeploy/src/qtdir.h diff --git a/src/Deploy/src/targetdata.cpp b/src/LibDeploy/src/targetdata.cpp similarity index 100% rename from src/Deploy/src/targetdata.cpp rename to src/LibDeploy/src/targetdata.cpp diff --git a/src/Deploy/src/targetdata.h b/src/LibDeploy/src/targetdata.h similarity index 100% rename from src/Deploy/src/targetdata.h rename to src/LibDeploy/src/targetdata.h diff --git a/src/Deploy/src/targetinfo.cpp b/src/LibDeploy/src/targetinfo.cpp similarity index 100% rename from src/Deploy/src/targetinfo.cpp rename to src/LibDeploy/src/targetinfo.cpp diff --git a/src/Deploy/src/targetinfo.h b/src/LibDeploy/src/targetinfo.h similarity index 100% rename from src/Deploy/src/targetinfo.h rename to src/LibDeploy/src/targetinfo.h diff --git a/src/Deploy/src/zipcompresser.cpp b/src/LibDeploy/src/zipcompresser.cpp similarity index 100% rename from src/Deploy/src/zipcompresser.cpp rename to src/LibDeploy/src/zipcompresser.cpp diff --git a/src/Deploy/src/zipcompresser.h b/src/LibDeploy/src/zipcompresser.h similarity index 100% rename from src/Deploy/src/zipcompresser.h rename to src/LibDeploy/src/zipcompresser.h diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0a2cbb0..d42ab42 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -18,9 +18,13 @@ file(GLOB_RECURSE SOURCE_CPP set(PUBLIC_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") set(PUBLIC_INCUDE_DIR ${PUBLIC_INCUDE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/units") +get_filename_component(QT_QT_ROOT "${Qt${QT_VERSION_MAJOR}Core_DIR}/../../.." ABSOLUTE) + +add_definitions(-DQT_BASE_DIR="${QT_QT_ROOT}") +add_definitions(-DTEST_BIN_DIR="${CMAKE_CURRENT_LIST_DIR}") add_executable(${CURRENT_PROJECT} ${SOURCE_CPP}) -target_link_libraries(${CURRENT_PROJECT} PRIVATE Qt${QT_VERSION_MAJOR}::Test ${PROJECT_NAME}Library) +target_link_libraries(${CURRENT_PROJECT} PRIVATE Qt${QT_VERSION_MAJOR}::Test ${PROJECT_NAME}LibDeploy) target_include_directories(${CURRENT_PROJECT} PUBLIC ${PUBLIC_INCUDE_DIR}) diff --git a/tests/units/deploytargettest.cpp b/tests/units/deploytargettest.cpp new file mode 100644 index 0000000..2c90dc1 --- /dev/null +++ b/tests/units/deploytargettest.cpp @@ -0,0 +1,71 @@ +//# +//# Copyright (C) 2020-2022 QuasarApp. +//# Distributed under the GPLv3 software license, see the accompanying +//# Everyone is permitted to copy and distribute verbatim copies +//# of this license document, but changing it is not allowed. +//# + + +#include "deploytargettest.h" + +#include +#include +#include +#include +#include + + +DeployTargetTest::DeployTargetTest() { + +} + +DeployTargetTest::~DeployTargetTest() { + +} + + +void DeployTargetTest::test() { + FileManager file; + DependenciesScanner scan; + Packing pac(&file); + PluginsParser _pluginParser; + + ConfigParser *deploy = new ConfigParser(&file, &_pluginParser, &scan, &pac); + + QStringList targets; + targets << "./test/bins/execTarget.exe"; + QVERIFY(deploy->setTargets(targets)); + delete deploy; + targets.clear(); + + deploy = new ConfigParser(&file, &_pluginParser, &scan, &pac); + targets << "./test/bins/execTarget"; + QVERIFY(deploy->setTargets(targets)); + delete deploy; + targets.clear(); + + deploy = new ConfigParser(&file, &_pluginParser, &scan, &pac); + targets << "./test/bins/execTarget.exe" << "./test/bins/execTarget"; + QVERIFY(deploy->setTargets(targets)); + delete deploy; + targets.clear(); + + deploy = new ConfigParser(&file, &_pluginParser, &scan, &pac); + targets << "./test/bns/execTarget.exe"; + QVERIFY(!deploy->setTargets(targets)); + delete deploy; + targets.clear(); + + deploy = new ConfigParser(&file, &_pluginParser, &scan, &pac); + targets << "./test/bins/"; + QVERIFY(deploy->setTargets(targets)); + delete deploy; + targets.clear(); + + deploy = new ConfigParser(&file, &_pluginParser, &scan, &pac); + targets << "./test/bins/" << "./test/warning/"; + QVERIFY(deploy->setTargets(targets)); + + delete deploy; + targets.clear(); +} diff --git a/tests/units/deploytargettest.h b/tests/units/deploytargettest.h new file mode 100644 index 0000000..91b9298 --- /dev/null +++ b/tests/units/deploytargettest.h @@ -0,0 +1,26 @@ +//# +//# Copyright (C) 2020-2022 QuasarApp. +//# Distributed under the GPLv3 software license, see the accompanying +//# Everyone is permitted to copy and distribute verbatim copies +//# of this license document, but changing it is not allowed. +//# + + +#ifndef DeployTarget_TEST_H +#define DeployTarget_TEST_H +#include "testbase.h" +#include "testutils.h" + +#include + +class DeployTargetTest: public TestBase, protected TestUtils +{ +public: + DeployTargetTest(); + ~DeployTargetTest(); + + void test(); + +}; + +#endif // DeployTarget_TEST_H diff --git a/tests/units/tst_deploytest.cpp b/tests/units/deploytest.cpp similarity index 99% rename from tests/units/tst_deploytest.cpp rename to tests/units/deploytest.cpp index 37ebdac..b3f4bb4 100644 --- a/tests/units/tst_deploytest.cpp +++ b/tests/units/deploytest.cpp @@ -5,6 +5,7 @@ * of this license document, but changing it is not allowed. */ +#include "deploytest.h" #include #include #include diff --git a/tests/units/deploytest.h b/tests/units/deploytest.h new file mode 100644 index 0000000..787c9a0 --- /dev/null +++ b/tests/units/deploytest.h @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2018-2022 QuasarApp. + * Distributed under the lgplv3 software license, see the accompanying + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. + */ + +#include +#include +#include + + +#include +#include +#include +#include + +// add necessary includes here + + +static const QString TestBinDir = TEST_BIN_DIR; +static const QString TestQtDir = QT_BASE_DIR; + +class deploytest : public QObject +{ + Q_OBJECT + +private: + QSet filesTree; + + void runTestParams(QStringList list, + QSet *tree = nullptr, + bool noWarnings = false, + bool onlySize = false, + exitCodes exitCode = exitCodes::Good, + const std::function &cb = {}); + + void checkResults(const QSet &tree, + bool noWarnings, + bool onlySize = false); + + void createTree(const QStringList& tree); + +public: + deploytest(); + /** + * @brief generateLib + * @param paath + * @return size of lib + */ + int generateLib(const QString& paath); + void deleteLib(const QString& paath); + + ~deploytest(); + +private slots: + void initTestCase(); + void cleanupTestCase(); + + // old tests (not valid) + void testDeployTarget(); + void testStrip(); + void testExtractLib(); + void testRelativeLink(); + void testCheckQt(); + + void testQmlExtrct(); + void testSetTargetDir(); + + // void mainTests(); + + // end old tests + + // tested flags customScript + + void testZip(); + void costomScript(); + void testDistroStruct(); + + // tested flags clear noOvervrite + void testOverwrite(); + void testOverwriteWithPacking(); + + // tested flags binDir + void testextraData(); + + // tested flags qmlDir qmake + void testQt(); + + + void testWebEngine(); + + // tested flags confFile + void testConfFile(); + + // tested flags targetPackage + void testPackages(); + + // tested clear force clear in clear mode + void testClear(); + + // tested flags ignore + void testIgnore(); + + // tested flags ignore ignoreEnv + void testIgnoreEnv(); + + // tested flags libDir recursiveDepth + void testLibDir(); + + // tested flag extraPlugin + void testExtraPlugins(); + + // tested flag targetDir + void testTargetDir(); + + // tested flag noLibc deploySystem + void testSystemLib(); + + // tested flag qmlOut libOut trOut pluginOut binOut + void testOutDirs(); + + void testMSVC(); + + // qif flags + void testQIF(); + void testQIFMulti(); + void testQIFCustom(); + + // zip flags + void testZIP(); + void testZIPMulti(); + + // deb flags + void testDEB(); + void testDEBMulti(); + void testDEBCustom(); + + // qif and zip flags + void testMultiPacking(); + + // init flags + void testInit(); + + void testDependencyMap(); + + void testQmlScaner(); + + void testPrefix(); + // test configure empty packages + void testallowEmptyPackages(); + // test skip empty packages + void testEmptyPackages(); + + void testRunScripts(); + void testOverridingDefaultTemplateQIF(); + void testOverridingDefaultTemplateDEB(); + + void testDeployGeneralFiles(); + void testTr(); + void testVirtualKeyBoard(); + // Attention! This test only covers 40% of icon functions + void testIcons(); + void testPathUtils(); + void testBinPrefix(); + + void testMd5(); + + void testDisableShortcuts(); + void testDisableRunScripts(); + void testQifOut(); + void testIgnoreEnvWithLibDir(); + + // note: this test checking in manual mode only. + void testInstallDirsOptions(); + + void testQIFResources(); + + void testCustomPlatform(); + void testQifArchiveFormat(); + void testQifBinaryCreator(); + + void customTest(); +}; diff --git a/tests/units/testbase.cpp b/tests/units/testbase.cpp new file mode 100644 index 0000000..4cb1907 --- /dev/null +++ b/tests/units/testbase.cpp @@ -0,0 +1,275 @@ +#include "testbase.h" +#include +#include "testutils.h" +#include +#include +#include + +static const QString TestBinDir = TEST_BIN_DIR; +static const QString TestQtDir = QT_BASE_DIR; + +TestBase::TestBase() +{ + +} + +void TestBase::deploytest() { + + qputenv("QTEST_FUNCTION_TIMEOUT", "1800000"); + QString qifwPath = qgetenv("PATH") + DeployCore::getEnvSeparator() + TestQtDir + "../../Tools/QtInstallerFramework/4.0/bin/"; + qifwPath += qifwPath + DeployCore::getEnvSeparator() + TestQtDir + "../../Tools/QtInstallerFramework/4.1/bin/"; + qifwPath += qifwPath + DeployCore::getEnvSeparator() + TestQtDir + "../../Tools/QtInstallerFramework/4.2/bin/"; + qifwPath += qifwPath + DeployCore::getEnvSeparator() + TestQtDir + "../../Tools/QtInstallerFramework/4.3/bin/"; + + qputenv("PATH", qifwPath.toLatin1().data()); + TestUtils utils; + + QStringList pathList = QProcessEnvironment::systemEnvironment(). + value("PATH").split(DeployCore::getEnvSeparator()); + + for (const auto& path: qAsConst(pathList)) { + filesTree += utils.getFilesSet(path, 1); + } + + filesTree += utils.getFilesSet(TestQtDir); + +} + +int TestBase::generateLib(const QString &paath) { + QDir dir; + dir.mkpath(QFileInfo(paath).absolutePath()); + QFile testLib (paath); + + int size = 0; + + if (testLib.open(QIODevice::ReadWrite| QIODevice::Truncate)) { + QFile resData(":/debugLib"); + if (resData.open(QIODevice::ReadOnly)) { + QByteArray tempData = resData.readAll(); + size = tempData.size(); + testLib.write(tempData.data(), tempData.size()); + resData.close(); + } + + testLib.close(); + } + + return size; +} + +void TestBase::deleteLib(const QString &paath) { + QFileInfo info(paath); + if (info.isDir()) { + QFile::remove(info.absoluteFilePath()); + } else { + QDir qt(info.absoluteFilePath()); + qt.removeRecursively(); + } +} + +void TestBase::initTestCase() { + QDir qt; + + QDir("./" + DISTRO_DIR).removeRecursively(); + + qt.mkpath("./test/Qt/5.12/"); + qt.mkpath("./test/extraPath/"); + qt.mkpath("./test/extra/"); + qt.mkpath("./test/warning/"); + qt.mkpath("./test/bins/"); + + QFile f( "./test/Qt/5.12/generalLib.so"); + if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) { + f.write("lib", 3); + f.close(); + } + + f.setFileName("./test/extraPath/ExtraLib.so"); + if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) { + f.write("lib", 3); + f.close(); + } + + f.setFileName("./test/extra/ExtraLib.so"); + if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) { + f.write("lib", 3); + f.close(); + } + + f.setFileName("./test/warning/WarningLib.so"); + if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) { + f.write("lib", 3); + f.close(); + } + + f.setFileName("./test/bins/execTarget.exe"); + if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) { + f.write("exec", 3); + f.close(); + } + + f.setFileName("./test/bins/execTarget"); + if (f.open(QIODevice::WriteOnly| QIODevice::Truncate)) { + f.write("exec", 3); + f.close(); + } +} + +void TestBase::cleanupTestCase() { + QDir qt("./test"); + qt.removeRecursively(); + +} + +void TestBase::checkResults(const QSet &tree, bool noWarnings, bool onlySize) { + TestUtils utils; + + QVERIFY(DeployCore::_config); + QVERIFY(!DeployCore::_config->getTargetDir().isEmpty()); + + auto resultTree = utils.getTree(DeployCore::_config->getTargetDir()); + +#ifdef Q_OS_WIN + // Remove all API-MS-Win libs, because each OS Windows have a own bundle of this api libs. + // See the https://github.com/QuasarApp/CQtDeployer/issues/481#issuecomment-755156875 post for more information. + resultTree = TestModule.ignoreFilter(resultTree, "API-MS-Win"); + +#endif + + + auto comapre = utils.compareTree(resultTree, tree); + + if (onlySize) { + QVERIFY(resultTree.size() > tree.size()); + return; + } + + if (comapre.size() != 0) { + + bool bug = false; + QJsonObject comapreResult; + + for (auto i = comapre.begin(); i != comapre.end(); ++i) { + + if (i.value() == 1) { + comapreResult[ i.key()] = "Added unnecessary file"; + qCritical() << "added unnecessary file : " + i.key(); + bug = true; + } else if (filesTree.contains(QFileInfo(i.key()).fileName())) { + comapreResult[ i.key()] = "Missing"; + qCritical() << "Missing file : " + i.key(); + bug = true; + } else if (noWarnings) { + comapreResult[ i.key()] = " not exits in qt Dir"; + + qCritical() << "File : " + i.key() + " not exits in qt Dir"; + bug = true; + } else { + comapreResult[ i.key()] = " not exits in qt Dir"; + qWarning() << "File : " + i.key() + " not exits in qt Dir"; + } + } + + if (!bug) { + return; + } + + QJsonObject obj; + for (const auto &i : qAsConst(resultTree)) { + obj[i]; + } + + QJsonDocument doc(obj); + + QFile lasttree("./LastTree.json"); + lasttree.open(QIODevice::WriteOnly| QIODevice::Truncate); + + lasttree.write(doc.toJson()); + lasttree.close(); + + lasttree.setFileName("./CompareTree.json"); + lasttree.open(QIODevice::WriteOnly| QIODevice::Truncate); + + lasttree.write(QJsonDocument(comapreResult).toJson()); + lasttree.close(); + + QVERIFY2(false, "runTestParams fail"); + + + } + +} + +void TestBase::costomScript() { + TestUtils utils; + +#ifdef Q_OS_UNIX + QFile f("./" + DISTRO_DIR + "/bin/TestOnlyC"); + auto comapareTree = utils.createTree( + {"./" + DISTRO_DIR + "/bin/TestOnlyC", + "./" + DISTRO_DIR + "/bin/qt.conf", + "./" + DISTRO_DIR + "/TestOnlyC.sh"}); + QString bin = TestBinDir + "TestOnlyC"; + QString scriptPath = "./" + DISTRO_DIR + "/TestOnlyC.sh"; + +#else + QFile f("./" + DISTRO_DIR + "/TestOnlyC.exe"); + auto comapareTree = utils.createTree( + {"./" + DISTRO_DIR + "/TestOnlyC.exe", + "./" + DISTRO_DIR + "/TestOnlyC.bat", + "./" + DISTRO_DIR + "/qt.conf"}); + QString bin = TestBinDir + "TestOnlyC.exe"; + QString scriptPath = "./" + DISTRO_DIR + "/TestOnlyC.bat"; + + +#endif + + runTestParams({"-bin", bin, "force-clear", "noOverwrite", "-libOut", "lib"}, &comapareTree); + + QFile script(scriptPath); + QVERIFY(script.open(QIODevice::ReadOnly)); + auto scriptText = script.readAll(); + + QVERIFY(!scriptText.contains("Begin Custom Script")); + + script.close(); + + runTestParams({"-bin", bin, "force-clear", "noOverwrite", + "-libOut", "lib", + "-customScript", "echo 'this is test script'"}, &comapareTree); + + QVERIFY(script.open(QIODevice::ReadOnly)); + + scriptText = script.readAll(); + + QVERIFY(scriptText.contains("Begin Custom Script")); + QVERIFY(scriptText.contains("echo 'this is test script'")); + QVERIFY(scriptText.contains("End Custom Script")); + + script.close(); + + + + +} + +void TestBase::runTestParams(QStringList list, QSet *tree, bool noWarnings, bool onlySize, exitCodes exitCode, const std::function &cb) { + + QuasarAppUtils::Params::parseParams(list); + + Deploy deploy; + int code = deploy.run(); + if (code != exitCode) { + qDebug() << "Needed exit Code = " << exitCode; + qDebug() << "Exit Code = " << code; + + QVERIFY(false && "exit code not valid"); + } + + if (tree) { + checkResults(*tree, noWarnings, onlySize); + } + + if (cb) + cb(DeployCore::_config); +} diff --git a/tests/units/testbase.h b/tests/units/testbase.h new file mode 100644 index 0000000..da79a61 --- /dev/null +++ b/tests/units/testbase.h @@ -0,0 +1,41 @@ +#ifndef TESTBASE_H +#define TESTBASE_H + +#include "deploy.h" +#include "test.h" +#include +#include + + + +class TestBase: public Test +{ +public: + TestBase(); + + void deploytest(); + int generateLib(const QString &paath); + void deleteLib(const QString &paath); + void initTestCase(); + + void cleanupTestCase(); + + void checkResults(const QSet &tree, + bool noWarnings, + bool onlySize); + + void costomScript(); + + void runTestParams(QStringList list, + QSet *tree = nullptr, + bool noWarnings = false, + bool onlySize = false, + exitCodes exitCode = exitCodes::Good, + const std::function &cb = {}); + +private: + QSet filesTree; + +}; + +#endif // TESTBASE_H