diff --git a/.travis.yml b/.travis.yml index 8973c57ee8376d774f79bd15d9ee4cf71ce485f7..b533da3191e75912e6d34f8c0bdd4a1212e684f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -92,6 +92,8 @@ matrix: env: BINDINGS=cpp CC=clang before_install: - sudo apt-get update -qq + - sudo apt-get install lcov + - gem install coveralls-lcov - if [ "$BINDINGS" != "none" ]; then sudo apt-get install -qq swig; fi - if [ "$BINDINGS" == "perl" ]; then sudo add-apt-repository ppa:dns/irc -y; sudo apt-get update -qq; sudo apt-get install -qq swig=2.0.8-1irc1~12.04; fi - if [ "$BINDINGS" == "python" ]; then sudo apt-get install -qq python-dev; fi @@ -99,12 +101,14 @@ before_install: install: true before_script: - if [ "$BINDINGS" == "php" ]; then phpenv config-add src/bindings/php/hammer.ini; fi -script: - - scons bindings=$BINDINGS test +script: + - if [ "$BINDINGS" == "none" ]; then scons test --variant=debug --coverage; else scons bindings=$BINDINGS test; fi +after_success: + - if [ "$BINDINGS" == "none" ]; then if [ "$CC" == "clang" ]; then llvm-cov gcov -o coverage.info build/debug/src/test_suite.gcda; else lcov --capture --directory build/debug/src --output-file coverage.info; fi; fi + - coveralls-lcov coverage.info notifications: irc: channels: - "irc.upstandinghackers.com#hammer" use_notice: true skip_join: true - diff --git a/SConstruct b/SConstruct index a8f7ce8b9d39964458dea9fd1ee1fbe3d0a4b474..bb2bb858e51ecf84db7588ba1c212bdf164e2e5d 100644 --- a/SConstruct +++ b/SConstruct @@ -90,15 +90,18 @@ if GetOption("variant") == 'debug': else: env = opt -if GetOption("coverage"): - env.Append(CFLAGS=["-fprofile-arcs", "-ftest-coverage"], - CXXFLAGS=["-fprofile-arcs", "-ftest-coverage"], - LDFLAGS=["-fprofile-arcs", "-ftest-coverage"], - LIBS=['gcov']) - env["CC"] = os.getenv("CC") or env["CC"] env["CXX"] = os.getenv("CXX") or env["CXX"] +if GetOption("coverage"): + env.Append(CFLAGS=["--coverage"], + CXXFLAGS=["--coverage"], + LDFLAGS=["--coverage"]) + if env["CC"] == "gcc": + env.Append(LIBS=['gcov']) + else: + env.ParseConfig('llvm-config --ldflags') + if os.getenv("CC") == "clang" or env['PLATFORM'] == 'darwin': env.Replace(CC="clang", CXX="clang++") diff --git a/src/SConscript b/src/SConscript index 0351e1ba8674492aef1c0aaf4cad4c52c08120fd..dd6b61628b943a79c14ecf250f89dd4e7e063bca 100644 --- a/src/SConscript +++ b/src/SConscript @@ -89,7 +89,7 @@ env.Install("$pkgconfigpath", "../../../libhammer.pc") testenv = env.Clone() testenv.ParseConfig('pkg-config --cflags --libs glib-2.0') testenv.Append(LIBS=['hammer'], LIBPATH=['.']) -ctestexec = testenv.Program('test_suite', ctests + ['test_suite.c']) +ctestexec = testenv.Program('test_suite', ctests + ['test_suite.c'], LINKFLAGS="--coverage" if testenv.GetOption("coverage") else None) ctest = Alias('testc', [ctestexec], "".join(["env LD_LIBRARY_PATH=", os.path.dirname(ctestexec[0].path), " ", ctestexec[0].path])) AlwaysBuild(ctest) testruns.append(ctest)