diff --git a/libs/evoral/run-tests.sh b/libs/evoral/run-tests.sh index de2e4005f9..64c36a8fec 100755 --- a/libs/evoral/run-tests.sh +++ b/libs/evoral/run-tests.sh @@ -1,8 +1,29 @@ #!/bin/sh export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../../build/default/libs/evoral -if test -f ./test/testdata/TakeFive.mid -then - ../../build/default/libs/evoral/run-tests -else - echo "This script must be run from within the libs/evoral directory" +if [ ! -f './test/testdata/TakeFive.mid' ]; then + echo "This script must be run from within the libs/evoral directory"; + exit 1; fi + +srcdir=`pwd` + +# Make symlink to TakeFive.mid in build directory +cd ../../build/default/libs/evoral +mkdir -p ./test/testdata +ln -fs $srcdir/test/testdata/TakeFive.mid \ + ./test/testdata/TakeFive.mid + +lcov -d ./src -z +./run-tests +lcov -d ./src -d ./test -b ../../.. -c > coverage.lcov +lcov -r coverage.lcov *boost* *c++* *usr/include* -o coverage.lcov +mkdir -p ./coverage +genhtml -o coverage coverage.lcov +#rm -r coverage/boost +#rm -r coverage/usr +#rm -r coverage/c++ +#rm -r coverage/cppunit +#rm -r coverage/glibmm-2.4 +#rm -r coverage/sigc++-2.0 +echo "Report written to:" +echo "../../build/default/libs/evoral/coverage/index.html" diff --git a/libs/evoral/wscript b/libs/evoral/wscript index 41b93a084d..b03e182d51 100644 --- a/libs/evoral/wscript +++ b/libs/evoral/wscript @@ -70,9 +70,7 @@ def build(bld): libsmf.uselib = 'GLIB' libsmf.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') - # Library - obj = bld.new_task_gen('cxx', 'shlib') - obj.source = ''' + lib_source = ''' src/Control.cpp src/ControlList.cpp src/ControlSet.cpp @@ -84,17 +82,36 @@ def build(bld): src/SMF.cpp src/Sequence.cpp ''' - obj.export_incdirs = ['.'] - obj.includes = ['.', './src'] - obj.name = 'libevoral' - obj.target = 'evoral' - obj.uselib = 'GLIBMM GTHREAD SMF' - obj.uselib_local = 'libsmf' - obj.vnum = EVORAL_LIB_VERSION - obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') - # Unit tests + # Library + obj = bld.new_task_gen('cxx', 'shlib') + obj.source = lib_source + obj.export_incdirs = ['.'] + obj.includes = ['.', './src'] + obj.name = 'libevoral' + obj.target = 'evoral' + obj.uselib = 'GLIBMM GTHREAD SMF' + obj.uselib_local = 'libsmf' + obj.vnum = EVORAL_LIB_VERSION + obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') + if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']: + # Static library (for unit test code coverage) + obj = bld.new_task_gen('cxx', 'staticlib') + obj.source = lib_source + obj.source = lib_source + obj.export_incdirs = ['.'] + obj.includes = ['.', './src'] + obj.name = 'libevoral_static' + obj.target = 'evoral_static' + obj.uselib = 'GLIBMM GTHREAD SMF' + obj.uselib_local = 'libsmf' + obj.vnum = EVORAL_LIB_VERSION + obj.install_path = '' + obj.ccflags = [ '-fprofile-arcs', '-ftest-coverage' ] + obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] + + # Unit tests obj = bld.new_task_gen('cxx', 'program') obj.source = ''' test/SequenceTest.cpp @@ -102,10 +119,13 @@ def build(bld): test/testrunner.cpp ''' obj.includes = ['.', './src'] - obj.uselib_local = 'libevoral' + obj.uselib_local = 'libevoral_static' obj.uselib = 'CPPUNIT' + obj.libs = 'gcov' obj.target = 'run-tests' obj.install_path = '' + obj.ccflags = [ '-fprofile-arcs', '-ftest-coverage' ] + obj.cxxflags = [ '-fprofile-arcs', '-ftest-coverage' ] def shutdown(): autowaf.shutdown()