diff options
author | Anne Jan Brouwer <brouwer@annejan.com> | 2017-03-12 21:48:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-12 21:48:22 +0100 |
commit | 6c6a57949b024a9d847d1974db16f7feef07751d (patch) | |
tree | bfb0c318b0ce157ff467cca8946402058c991548 | |
parent | 896d8fb9f4e81b13d574d44c30ddf7b3f2949795 (diff) | |
parent | ed5cc364453a002812e32dea7c0f28fe4eb53085 (diff) |
Merge pull request #305 from tezeb/master
Once again, code coverage
-rw-r--r-- | .appveyor.yml | 5 | ||||
-rw-r--r-- | .codecov.yml | 4 | ||||
-rw-r--r-- | .travis.yml | 17 | ||||
-rw-r--r-- | qtpass.pri | 5 | ||||
-rw-r--r-- | qtpass.pro | 55 | ||||
-rw-r--r-- | src/src.pro | 11 | ||||
-rw-r--r-- | tests/auto/auto.pri | 2 | ||||
-rw-r--r-- | tests/auto/util/util.pro | 26 | ||||
-rw-r--r-- | tests/tests.pri | 3 | ||||
-rw-r--r-- | tests/tests.pro | 4 |
10 files changed, 98 insertions, 34 deletions
diff --git a/.appveyor.yml b/.appveyor.yml index b2b00b59..f262442f 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -5,14 +5,11 @@ install: build_script: - qmake qtpass.pro CONFIG+=static - mingw32-make + - mingw32-make check #after_build: - cmd: copy README.md src\release\README.txt - cmd: copy LICENSE src\release\LICENSE.txt - iscc qtpass.iss - - cmd: cd tests - - qmake - - mingw32-make - - cmd: auto\util\release\tst_util.exe artifacts: - path: Output\qtpass-*.exe - path: src\release\qtpass.exe diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 00000000..76c9e644 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,4 @@ +coverage: + ignore: + - tests/* + - src/qrc_*.cpp diff --git a/.travis.yml b/.travis.yml index efe5aed9..64532747 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,12 +30,20 @@ install: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then npm install -g appdmg; fi - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq update; fi - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install qt58base qt58tools qt58svg; fi +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then pip install --user codecov; fi +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then gem install coveralls-lcov ; fi +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install lcov; fi before_script: - if [ "$TRAVIS_OS_NAME" = "linux" ]; then source /opt/qt58/bin/qt58-env.sh; fi -script: - qmake -v +script: +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then qmake CONFIG+=coverage -Wall qtpass.pro; fi +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then make -j$(nproc); fi +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then make -j$(nproc) coveralls TESTARGS="--platform offscreen"; fi +- if [ "$TRAVIS_OS_NAME" = "linux" ]; then make distclean; fi - qmake -Wall qtpass.pro - make -j$(nproc) +- make check TESTARGS="--platform offscreen" - if [ "$TRAVIS_OS_NAME" = "osx" ]; then macdeployqt src/QtPass.app; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/FAQ\.md/https:\/\/qtpass.org\/docs\/md_FAQ.html/' < README.md > README.faq; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/CONTRIBUTING\.md/https:\/\/qtpass.org\/docs\/md_CONTRIBUTING.html/' < README.faq > README.contrib; fi @@ -43,13 +51,6 @@ script: - if [ "$TRAVIS_OS_NAME" = "osx" ]; then pandoc --standalone --from=markdown_github --to=rtf --output=README.rtf README.clean; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then appdmg appdmg.json qtpass-$(grep ^VERSION qtpass.pri | cut -d " " -f 6).dmg; fi - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export VERSION=$(grep ^VERSION qtpass.pri | cut -d " " -f 6); fi -- export QT_QPA_PLATFORM=offscreen -- cd tests -- qmake -- make -- if [ "$TRAVIS_OS_NAME" != "osx" ]; then ./auto/util/tst_util; fi -- if [ "$TRAVIS_OS_NAME" = "osx" ]; then ./auto/util/tst_util.app/Contents/MacOS/tst_util; fi -- cd - notifications: irc: channels: @@ -1,2 +1,7 @@ VERSION = 1.2.0-pre +TEMPLATE = subdirs + +CONFIG(coverage) { + QMAKE_LFLAGS += --coverage +} @@ -1,10 +1,7 @@ -TEMPLATE = subdirs +!include(qtpass.pri) { error("Couldn't find the qtpass.pri file!") } -SUBDIRS += src - -CONFIG(debug, debug|release) { - SUBDIRS += tests -} +SUBDIRS += src tests +tests.depends = src OTHER_FILES += LICENSE \ README.md \ @@ -12,3 +9,49 @@ OTHER_FILES += LICENSE \ RESOURCES += resources.qrc +# add Makefile target to generate code coverage using gcov +gcov.target = gcov +gcov.commands += cd src/$$OBJECTS_DIR && gcov "*.gcda" 1>/dev/null $$escape_expand(\\n\\t) +gcov.commands += $$escape_expand(\\n) +gcov.depends = check + +# add Makefile target to generate code coverage using codecov +codecov.target = codecov +codecov.commands += cd src/ && codecov $$escape_expand(\\n\\t) +codecov.commands += $$escape_expand(\\n) +codecov.depends = check + +LCOV_OUTPUT_DIR = src/$$OBJECTS_DIR/lcov/ +# add Makefile target to generate code coverage using lcov +lcov_initial.target = lcov_initial +#lcov_initial.commands = $$escape_expand(\\n\\t) +lcov_initial.commands += rm -rf $$LCOV_OUTPUT_DIR $$escape_expand(\\n\\t) +lcov_initial.commands += mkdir $$LCOV_OUTPUT_DIR $$escape_expand(\\n\\t) +lcov_initial.commands += lcov --quiet --initial --capture --base-directory ./src --directory ./src/$$OBJECTS_DIR/ -o $${LCOV_OUTPUT_DIR}/.lcov.base1 $$escape_expand(\\n\\t) +lcov_initial.commands += $$escape_expand(\\n) +lcov_initial.depends += sub-src + +lcov_prepare.target = lcov_prepare +lcov_prepare.commands += lcov -q -c -b ./src -d ./src/$$OBJECTS_DIR/ -o $${LCOV_OUTPUT_DIR}/.lcov.run1 $$escape_expand(\\n\\t) +lcov_prepare.commands += lcov -q -e $${LCOV_OUTPUT_DIR}/.lcov.base1 -o $${LCOV_OUTPUT_DIR}/.lcov.base $$PWD/src/* $$escape_expand(\\n\\t) +lcov_prepare.commands += lcov -q -e $${LCOV_OUTPUT_DIR}/.lcov.run1 -o $${LCOV_OUTPUT_DIR}/.lcov.run $$PWD/src/* $$escape_expand(\\n\\t) +lcov_prepare.commands += lcov -q -a $${LCOV_OUTPUT_DIR}/.lcov.base -a $${LCOV_OUTPUT_DIR}/.lcov.run -o $${LCOV_OUTPUT_DIR}/.lcov.total $$escape_expand(\\n\\t) +lcov_prepare.commands += $$escape_expand(\\n) +lcov_prepare.depends = lcov_initial check + +lcov.target = lcov +lcov.commands += genhtml --demangle-cpp -o $${LCOV_OUTPUT_DIR}/ $${LCOV_OUTPUT_DIR}/.lcov.total $$escape_expand(\\n\\t) +lcov.commands += @echo -e "xdg-open file:///$${PWD}/$${LCOV_OUTPUT_DIR}/index.html" +lcov.commands += $$escape_expand(\\n) +lcov.depends = lcov_prepare + +coveralls.target = coveralls +coveralls.commands += coveralls-lcov $${LCOV_OUTPUT_DIR}/.lcov.total $$escape_expand(\\n\\t) +coveralls.commands += $$escape_expand(\\n) +coveralls.depends = lcov_prepare + +CONFIG(coverage) { + QMAKE_EXTRA_TARGETS += gcov codecov lcov_initial lcov_prepare lcov coveralls + QMAKE_CLEAN += src/$$OBJECTS_DIR/*.gc?? src/*.gcov + QMAKE_DISTCLEAN += -r src/$$OBJECTS_DIR/lcov/ +} diff --git a/src/src.pro b/src/src.pro index bfd2b678..5cf24593 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,4 +1,4 @@ -!include(../qtpass.pri) { error("Couldn't find the auto.pri file!") } +!include(../qtpass.pri) { error("Couldn't find the qtpass.pri file!") } TEMPLATE = app QT += core gui @@ -8,9 +8,12 @@ CONFIG += c++11 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG(debug, debug|release) { - QMAKE_CXXFLAGS += -g -c -Wall -coverage -O0 - QMAKE_LFLAGS += -coverage -O0 - SUBDIRS += tests + QMAKE_CXXFLAGS += -g -c -Wall -O0 + QMAKE_LFLAGS += -O0 +} + +CONFIG(coverage) { + QMAKE_CXXFLAGS += --coverage } macx { diff --git a/tests/auto/auto.pri b/tests/auto/auto.pri index e391d44f..2c2ed402 100644 --- a/tests/auto/auto.pri +++ b/tests/auto/auto.pri @@ -1,3 +1,5 @@ !include(../tests.pri) { error("Couldn't find the tests.pri file!") } +TEMPLATE = app + !contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_") diff --git a/tests/auto/util/util.pro b/tests/auto/util/util.pro index 1c8ba7cf..7e9c582a 100644 --- a/tests/auto/util/util.pro +++ b/tests/auto/util/util.pro @@ -1,14 +1,17 @@ !include(../auto.pri) { error("Couldn't find the auto.pri file!") } +message($$QMAKE_LINK_OBJECT_MAX) + SOURCES += tst_util.cpp \ - util.cpp \ - qtpasssettings.cpp \ - settingsconstants.cpp \ - pass.cpp \ - realpass.cpp \ - imitatepass.cpp \ - executor.cpp \ - simpletransaction.cpp + +OBJECTS += ../../../src/$(OBJECTS_DIR)/util.o \ + ../../../src/$(OBJECTS_DIR)/qtpasssettings.o \ + ../../../src/$(OBJECTS_DIR)/settingsconstants.o \ + ../../../src/$(OBJECTS_DIR)/pass.o \ + ../../../src/$(OBJECTS_DIR)/realpass.o \ + ../../../src/$(OBJECTS_DIR)/imitatepass.o \ + ../../../src/$(OBJECTS_DIR)/executor.o \ + ../../../src/$(OBJECTS_DIR)/simpletransaction.o HEADERS += util.h \ qtpasssettings.h \ @@ -19,9 +22,16 @@ HEADERS += util.h \ executor.h \ simpletransaction.h +OBJ_PATH += ../../../src/$(OBJECTS_DIR) + VPATH += ../../../src INCLUDEPATH += ../../../src win32 { LIBS += -lbcrypt + RC_FILE = ../../../windows.rc +# temporary workaround for QTBUG-6453 + QMAKE_LINK_OBJECT_MAX=24 +# setting this may also work, but I can't find appropriate value right now +# QMAKE_LINK_OBJECT_SCRIPT = } diff --git a/tests/tests.pri b/tests/tests.pri index 951bc957..ae8302b2 100644 --- a/tests/tests.pri +++ b/tests/tests.pri @@ -1,8 +1,7 @@ -TEMPLATE = app +!include(../qtpass.pri) { error("Couldn't find the qtpass.pri file!") } CONFIG += testcase qt warn_on depend_includepath testcase QT += testlib widgets target.path = $$[QT_INSTALL_TESTS]/qtpass/$$TARGET INSTALLS += target - diff --git a/tests/tests.pro b/tests/tests.pro index 65126941..da7ad3ec 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -1,5 +1,5 @@ -QT += widgets testlib +!include(tests.pri) { error("Couldn't find the tests.pri file!") } + CONFIG += no_docs_target -TEMPLATE = subdirs SUBDIRS += auto exists(manual): SUBDIRS += manual |