Added code coverage to tests with zig build test -Dtest-coverage
This commit is contained in:
parent
629923b3c9
commit
0c80404e11
2 changed files with 22 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
kcov-output/
|
||||
zig-cache
|
||||
zig-out
|
||||
|
|
21
build.zig
21
build.zig
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue