diff options
| author | Harald Sitter <[email protected]> | 2019-03-18 15:23:20 +0100 |
|---|---|---|
| committer | Harald Sitter <[email protected]> | 2019-03-18 15:24:13 +0100 |
| commit | 81ff2a73f9d0985bca9e22f4e56d2b6738d15b4c (patch) | |
| tree | ac744bef09f7512e3ba622989b6662379e074b64 | |
| parent | 644d6f85223d486a412af9aaf4b40ef3d5d6705b (diff) | |
fix coverage generation when run through ctest
path construction is a bit disappointing and doesn't actually work all that
well for out-of-tree PWDs. in lieu of an upstream fix let's try our best
to get the correct coverage directory set. without this hack no results
get recorded unfortunately.
| -rw-r--r-- | src/settings/services/test/test_helper.rb | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/settings/services/test/test_helper.rb b/src/settings/services/test/test_helper.rb index 98c29c139..9da5cf3c3 100644 --- a/src/settings/services/test/test_helper.rb +++ b/src/settings/services/test/test_helper.rb @@ -15,14 +15,35 @@ # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +GLOBAL_COVERAGE_ROOT = File.dirname(__dir__) # ../ + +# Simplecov is a bit meh and expects src and coverage to be under the +# same root. Since we get run through cmake that assumption absolutely +# doesn't hold true, so we'll need to figure out the coverage_dir relative +# to the root and the root must always be the source :/ +# The relativity only works because internally the path gets expanded, this +# isn't fully reliable, but oh well... +# https://github.com/colszowka/simplecov/issues/716 +GLOBAL_COVERAGE_DIR = begin + require 'pathname' + src_path = Pathname.new(GLOBAL_COVERAGE_ROOT) + coverage_path = Pathname.new(File.join(Dir.pwd, 'coverage')) + coverage_path.relative_path_from(src_path).to_s +end + begin require 'simplecov' + SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new( [ SimpleCov::Formatter::HTMLFormatter ] ) - SimpleCov.start + + SimpleCov.start do + root GLOBAL_COVERAGE_ROOT + coverage_dir GLOBAL_COVERAGE_DIR + end rescue LoadError warn 'SimpleCov not loaded' end @@ -58,8 +79,9 @@ def covered_system(cmd, *argv) begin require 'simplecov' SimpleCov.start do + root GLOBAL_COVERAGE_ROOT + coverage_dir GLOBAL_COVERAGE_DIR command_name "#{cmd}_#{__test_method_name__}" - merge_timeout 16 end rescue LoadError warn 'SimpleCov not loaded' |
