added tests for deployUtils

This commit is contained in:
Andrei Yankovich 2019-01-26 15:34:39 +03:00
parent da943a9fd0
commit ac1adbe38d
14 changed files with 338 additions and 39 deletions

View File

@ -9,7 +9,10 @@ TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += QuasarAppLib \
CQtDeployer
Deploy \
CQtDeployer \
UnitTests
contains(DEFINES, WITH_TESTS) {
SUBDIRS += \
@ -19,7 +22,18 @@ contains(DEFINES, WITH_TESTS) {
}
CQtDeployer.depends=QuasarAppLib
CQtDeployer.depends=Deploy
QuasarAppLib.file = $$PWD/QuasarAppLib/QuasarApp.pro
win32:include('$$PWD/CQtDeployerWinBuild.pri')
DISTFILES += \
snapBuild.sh \
staticBuild.sh \
snap/snapcraft.yaml \
README.md \
sharedBuild.sh \
README.md \
staticBuildCrossWin.sh \
sharedBuild.bat

View File

@ -22,51 +22,18 @@ DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG(release, debug|release): {
DESTDIR="$$PWD/../build/release"
DESTDIR="$$PWD/build/release"
} else {
DESTDIR="$$PWD/../build/debug"
DESTDIR="$$PWD/build/debug"
}
isEmpty(PREFIX){
PREFIX=$$PWD/../distro
}
include('$$PWD/../QuasarAppLib/QuasarLib.pri')
include('$$PWD/../QuasarAppLib/Etalons/qmake/install_prefix.pri')
win32:include('$$PWD/CQtDeployerWinBuild.pri')
install_data.files += $$DESTDIR/$$runfiletype
install_data.files += $$QUASARAPP_LIB_OUTPUT_DIR/$$libfiletype
include('$$PWD/../Deploy/Deploy.pri')
TARGET = cqtdeployer
SOURCES += \
main.cpp \
deploy.cpp \
deployutils.cpp \
windependenciesscanner.cpp \
../qtTools/src/windeployqt/elfreader.cpp \
../qtTools/src/windeployqt/utils.cpp
HEADERS += \
deploy.h \
deployutils.h \
windependenciesscanner.h \
../qtTools/src/windeployqt/elfreader.h \
../qtTools/src/windeployqt/utils.h
DISTFILES += \
../snapBuild.sh \
../staticBuild.sh \
../snap/snapcraft.yaml \
../README.md \
../sharedBuild.sh \
../README.md \
../staticBuildCrossWin.sh \
../sharedBuild.bat
win32: LIBS += -lshlwapi
win32: RC_ICONS = $$PWD/../res/icon.ico

23
Deploy/Deploy.pri Normal file
View File

@ -0,0 +1,23 @@
#
# Copyright (C) 2018-2019 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.
#
!isEmpty(DEPLOY_LIB):error("Deploy.pri already included")
DEPLOY_LIB = 1
#DEPENDS
CONFIG(release, debug|release): {
DEPLOY_LIB_OUTPUT_DIR="$$PWD/build/release"
} else {
DEPLOY_LIB_OUTPUT_DIR="$$PWD/build/debug"
}
LIBS += -L$$DEPLOY_LIB_OUTPUT_DIR -lDeploy
INCLUDEPATH += "$$PWD/"

57
Deploy/Deploy.pro Normal file
View File

@ -0,0 +1,57 @@
#
# Copyright (C) 2018-2019 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.
#
#-------------------------------------------------
#
# Project created by QtCreator 2019-01-26T13:55:47
#
#-------------------------------------------------
QT -= gui
TARGET = Deploy
TEMPLATE = lib
DEFINES += DEPLOY_LIBRARY
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG(release, debug|release): {
DESTDIR="$$PWD/build/release"
} else {
DESTDIR="$$PWD/build/debug"
}
include('$$PWD/../QuasarAppLib/QuasarLib.pri')
SOURCES += \
deploy.cpp \
deployutils.cpp \
windependenciesscanner.cpp \
../qtTools/src/windeployqt/elfreader.cpp \
../qtTools/src/windeployqt/utils.cpp
HEADERS += \
deploy.h \
deploy_global.h \
deployutils.h \
windependenciesscanner.h\
../qtTools/src/windeployqt/elfreader.h \
../qtTools/src/windeployqt/utils.h
win32: LIBS += -lshlwapi

19
Deploy/deploy_global.h Normal file
View File

@ -0,0 +1,19 @@
/*
* Copyright (C) 2018-2019 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.
*/
#ifndef DEPLOY_GLOBAL_H
#define DEPLOY_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(DEPLOY_LIBRARY)
# define DEPLOYSHARED_EXPORT Q_DECL_EXPORT
#else
# define DEPLOYSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // DEPLOY_GLOBAL_H

View File

@ -165,7 +165,7 @@ bool DeployUtils::parseQt(Deploy *deploy) {
bool DeployUtils::isQtLib(const QString &lib) {
QFileInfo info(lib);
return !qtDir.isEmpty() && info.absolutePath().contains(qtDir);
return !qtDir.isEmpty() && info.absoluteFilePath().contains(qtDir);
}
@ -173,7 +173,7 @@ bool DeployUtils::isExtraLib(const QString &lib) {
QFileInfo info(lib);
for (auto i : extraPaths) {
if (info.absolutePath().contains(i)) {
if (info.absoluteFilePath().contains(i)) {
return true;
}
}

73
UnitTests/.gitignore vendored Normal file
View File

@ -0,0 +1,73 @@
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe

26
UnitTests/UnitTests.pro Normal file
View File

@ -0,0 +1,26 @@
#
# Copyright (C) 2018-2019 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.
#
QT += testlib
QT -= gui
CONFIG(release, debug|release): {
DESTDIR="$$PWD/build/release"
} else {
DESTDIR="$$PWD/build/debug"
}
include('$$PWD/../QuasarAppLib/QuasarLib.pri')
include('$$PWD/../Deploy/Deploy.pri')
CONFIG += qt console warn_on depend_includepath testcase
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += tst_deploytest.cpp

View File

@ -0,0 +1,120 @@
/*
* Copyright (C) 2018-2019 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 <QtTest>
#include <quasarapp.h>
#include <deployutils.h>
#include <deploy.h>
#include <windependenciesscanner.h>
#include <QDir>
// add necessary includes here
class deploytest : public QObject
{
Q_OBJECT
public:
deploytest();
~deploytest();
private slots:
void initTestCase();
void cleanupTestCase();
void testDeployUtils();
void testDeploy();
void testDeployScaner();
};
deploytest::deploytest(){}
deploytest::~deploytest(){}
void deploytest::initTestCase() {
QDir qt;
qt.mkpath("./test/Qt/5.12/");
qt.mkpath("./test/extraPath/");
qt.mkpath("./test/extra/");
qt.mkpath("./test/warning/");
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();
}
}
void deploytest::cleanupTestCase() {
QDir qt("./test");
qt.removeRecursively();
}
void deploytest::testDeployUtils() {
QString qtDir = "./test/Qt/5.12/";
QStringList extraPathes = QStringList() << QFileInfo("./test/extraPath/").absoluteFilePath();
DeployUtils::qtDir = QFileInfo(qtDir).absoluteFilePath();
DeployUtils::extraPaths = extraPathes;
// qt Dir
QVERIFY(DeployUtils::isQtLib("./test/Qt/5.12/myLib.so"));
QVERIFY(!DeployUtils::isQtLib("/myQtDur/Qt/5.11/myLib.so"));
QVERIFY(!DeployUtils::isQtLib("/mQtDur/Qt/5.12/myLib.so"));
QVERIFY(DeployUtils::isQtLib("./test/Qt/5.12/myLib/testlibs/mylib.so"));
// extra Dir
QVERIFY(!DeployUtils::isExtraLib("./test/Qt/5.12/myLib.so"));
QVERIFY(!DeployUtils::isExtraLib("/myQtDur/Qt/5.11/myLib.so"));
QVERIFY(!DeployUtils::isExtraLib("/mQtDur/Qt/5.12/myLib.so"));
QVERIFY(!DeployUtils::isExtraLib("./test/Qt/5.12/myLib/testlibs/mylib.so"));
QVERIFY(DeployUtils::isExtraLib("./test/extraPath/Qt/5.12/myLib.so"));
QVERIFY(DeployUtils::isExtraLib("./test/extraPath/Qt/5/myLib.so"));
QVERIFY(DeployUtils::isExtraLib("./test/extraPath/myLib.so"));
QVERIFY(DeployUtils::isExtraLib("./test/extraPath/Qt/5.12/myLib/testlibs/mylib.so"));
//getLibPriority
QVERIFY(DeployUtils::getLibPriority("./tst/Qt/5.12/generalLib.so") == 0);
QVERIFY(DeployUtils::getLibPriority("./test/Qt/5.12/generalLib.so") == 3);
QVERIFY(DeployUtils::getLibPriority("./test/extraPath/ExtraLib.so") == 2);
QVERIFY(DeployUtils::getLibPriority("./test/extra/ExtraLib.so") == 1);
}
void deploytest::testDeploy() {
}
void deploytest::testDeployScaner() {
}
QTEST_APPLESS_MAIN(deploytest)
#include "tst_deploytest.moc"