Skip to content

Commit

Permalink
Merge pull request #305 from tezeb/master
Browse files Browse the repository at this point in the history
Once again, code coverage
  • Loading branch information
annejan committed Mar 12, 2017
2 parents 896d8fb + ed5cc36 commit 6c6a579
Show file tree
Hide file tree
Showing 10 changed files with 98 additions and 34 deletions.
5 changes: 1 addition & 4 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
coverage:
ignore:
- tests/*
- src/qrc_*.cpp
17 changes: 9 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,26 +30,27 @@ 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
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then sed 's/\[\!.*//' < README.contrib > README.clean; fi
- 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:
Expand Down
5 changes: 5 additions & 0 deletions qtpass.pri
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
VERSION = 1.2.0-pre

TEMPLATE = subdirs

CONFIG(coverage) {
QMAKE_LFLAGS += --coverage
}
55 changes: 49 additions & 6 deletions qtpass.pro
Original file line number Diff line number Diff line change
@@ -1,14 +1,57 @@
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 \
qtpass.1

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/
}
11 changes: 7 additions & 4 deletions src/src.pro
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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 {
Expand Down
2 changes: 2 additions & 0 deletions tests/auto/auto.pri
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
!include(../tests.pri) { error("Couldn't find the tests.pri file!") }

TEMPLATE = app

!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_")
26 changes: 18 additions & 8 deletions tests/auto/util/util.pro
Original file line number Diff line number Diff line change
@@ -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 \
Expand All @@ -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 =
}
3 changes: 1 addition & 2 deletions tests/tests.pri
Original file line number Diff line number Diff line change
@@ -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

4 changes: 2 additions & 2 deletions tests/tests.pro
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 6c6a579

Please sign in to comment.