diff options
author | Julien Dessaux | 2022-02-20 23:05:50 +0100 |
---|---|---|
committer | Julien Dessaux | 2022-02-20 23:06:19 +0100 |
commit | 0c80404e1140b19576505c3cf4416cad56400d29 (patch) | |
tree | ffa713ec0d25cc3ee2f9b27c11bfed3a5ff7fb5a | |
parent | Began implementing the funge98 stack stack (diff) | |
download | zigfunge98-0c80404e1140b19576505c3cf4416cad56400d29.tar.gz zigfunge98-0c80404e1140b19576505c3cf4416cad56400d29.tar.bz2 zigfunge98-0c80404e1140b19576505c3cf4416cad56400d29.zip |
Added code coverage to tests with zig build test -Dtest-coverage
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | build.zig | 21 |
2 files changed, 22 insertions, 0 deletions
@@ -1,2 +1,3 @@ +kcov-output/ zig-cache zig-out @@ -22,6 +22,8 @@ pub fn build(b: *std.build.Builder) void { run_cmd.addArgs(args); } + const coverage = b.option(bool, "test-coverage", "Generate test coverage") orelse false; + const run_step = b.step("run", "Run the app"); run_step.dependOn(&run_cmd.step); @@ -29,6 +31,25 @@ pub fn build(b: *std.build.Builder) void { exe_tests.setTarget(target); exe_tests.setBuildMode(mode); + // Code coverage with kcov, we need an allocator for the setup + var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){}; + defer _ = general_purpose_allocator.deinit(); + const gpa = general_purpose_allocator.allocator(); + // We want to exclude the $HOME/.zig path + const home = std.process.getEnvVarOwned(gpa, "HOME") catch ""; + defer gpa.free(home); + const exclude = std.fmt.allocPrint(gpa, "--exclude-path={s}/.zig/", .{home}) catch ""; + defer gpa.free(exclude); + if (coverage) { + exe_tests.setExecCmd(&[_]?[]const u8{ + "kcov", + exclude, + //"--path-strip-level=3", // any kcov flags can be specified here + "kcov-output", // output dir for kcov + null, // to get zig to use the --test-cmd-bin flag + }); + } + const test_step = b.step("test", "Run unit tests"); test_step.dependOn(&exe_tests.step); } |