From: Mikhail Galanin Date: Tue, 25 Sep 2018 14:22:28 +0000 (+0100) Subject: [Minor] Add Lua coverage collection for unit-tests (#2528) X-Git-Tag: 1.8.1~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70571f2b5513db967f68194878e177c52e69a107;p=thirdparty%2Frspamd.git [Minor] Add Lua coverage collection for unit-tests (#2528) * [Minor] Add Lua coverage collection for unit-tests * [Minor] add coverage collection to CircleCI * [Minor] split into two lines * [Minor] sudo * [Minor] fixed nonsense * [Minor] Fix functional test --- diff --git a/.circleci/config.yml b/.circleci/config.yml index a9985e1754..1ac0e01e5f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,6 +15,14 @@ references: gem install coveralls-lcov lcov --no-external -b ../project -d ../project -c --output-file coverage.${CIRCLE_JOB}.info + - &capture_lua_coverage_data + run: + name: Capturing Lua coverage data + command: | + set -e + sudo luarocks install luacov-coveralls + if [ ! -z $COVERALLS_REPO_TOKEN ]; then luacov-coveralls -t ${COVERALLS_REPO_TOKEN} || true; fi + - &restore_coverage_data restore_cache: keys: @@ -61,13 +69,16 @@ jobs: at: *workspace_root - run: sudo apt-get update -qq || true - - run: sudo apt-get install -qq cmake libevent-dev libglib2.0-dev libicu-dev libluajit-5.1-dev libmagic-dev libsqlite3-dev libssl-dev ragel libunwind-dev libunwind8 + - run: sudo apt-get install -qq cmake libevent-dev libglib2.0-dev libicu-dev libluajit-5.1-dev libmagic-dev libsqlite3-dev libssl-dev ragel libunwind-dev libunwind8 luarocks + - run: sudo luarocks install luacheck + - run: sudo luarocks install luacov - run: cd ../build - run: make rspamd-test -j`nproc` - run: set +e; test/rspamd-test -p /rspamd/lua; echo "export RETURN_CODE=$?" >> $BASH_ENV - *capture_coverage_data + - *capture_lua_coverage_data # Share coverage data between jobs - save_cache: @@ -95,6 +106,7 @@ jobs: - run: sudo pip install demjson psutil robotframework requests http - run: sudo luarocks install luacheck + - run: sudo luarocks install luacov - run: cd ../build - run: set +e; RSPAMD_INSTALLROOT=../install sudo -E robot -x xunit.xml --exclude isbroken ../project/test/functional/cases; echo "export RETURN_CODE=$?" >> $BASH_ENV diff --git a/test/lua/tests.lua b/test/lua/tests.lua index 6c05e02e0b..82c546903b 100644 --- a/test/lua/tests.lua +++ b/test/lua/tests.lua @@ -2,6 +2,15 @@ local telescope = require "telescope" require "rspamd_assertions" +local loaded, luacov = pcall(require, 'luacov.runner') +if not loaded then + luacov = { + init = function() end, + shutdown = function() end, + run_report = function() end + } +end +luacov.init() local contexts = {} @@ -14,6 +23,7 @@ end if not test_pattern then test_filter = function(_) return true end end + local buffer = {} local results = telescope.run(contexts, callbacks, test_filter) local summary, data = telescope.summary_report(contexts, results) @@ -35,4 +45,7 @@ for _, v in pairs(results) do v.status_code == telescope.status_codes.fail then os.exit(1) end -end \ No newline at end of file +end + +luacov:shutdown() +luacov:run_report()