summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnne Jan Brouwer <brouwer@annejan.com>2017-03-12 21:48:22 +0100
committerGitHub <noreply@github.com>2017-03-12 21:48:22 +0100
commit6c6a57949b024a9d847d1974db16f7feef07751d (patch)
treebfb0c318b0ce157ff467cca8946402058c991548
parent896d8fb9f4e81b13d574d44c30ddf7b3f2949795 (diff)
parented5cc364453a002812e32dea7c0f28fe4eb53085 (diff)
Merge pull request #305 from tezeb/master
Once again, code coverage
-rw-r--r--.appveyor.yml5
-rw-r--r--.codecov.yml4
-rw-r--r--.travis.yml17
-rw-r--r--qtpass.pri5
-rw-r--r--qtpass.pro55
-rw-r--r--src/src.pro11
-rw-r--r--tests/auto/auto.pri2
-rw-r--r--tests/auto/util/util.pro26
-rw-r--r--tests/tests.pri3
-rw-r--r--tests/tests.pro4
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:
diff --git a/qtpass.pri b/qtpass.pri
index 38a0b33f..3e89fe87 100644
--- a/qtpass.pri
+++ b/qtpass.pri
@@ -1,2 +1,7 @@
VERSION = 1.2.0-pre
+TEMPLATE = subdirs
+
+CONFIG(coverage) {
+ QMAKE_LFLAGS += --coverage
+}
diff --git a/qtpass.pro b/qtpass.pro
index 0f059915..6d395496 100644
--- a/qtpass.pro
+++ b/qtpass.pro
@@ -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