]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Add Lua coverage collection for unit-tests (#2528)
authorMikhail Galanin <negram@users.noreply.github.com>
Tue, 25 Sep 2018 14:22:28 +0000 (15:22 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 25 Sep 2018 14:22:28 +0000 (15:22 +0100)
* [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

.circleci/config.yml
test/lua/tests.lua

index a9985e17545249a5904c41739ee7e7a7f079b60a..1ac0e01e5fead240c43bfba7ad80273bdf0feae9 100644 (file)
@@ -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
index 6c05e02e0be4226e3a3b70bc080f93ebab6f8bb1..82c546903b7cf3adefaa7b253cf189c912a81aad 100644 (file)
@@ -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()