From 13751d9de6bb77daf38ac921e35015c238d06c35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 11 Jan 2022 21:17:25 +0100 Subject: fix(coverage): merge coverage ranges (#13334) Covered ranges were not merged and thus it appeared that some lines might be uncovered. To fix this I used "v8-coverage" that takes care of merging the ranges properly. With this change, coverage collected from a file by multiple entrypoints is now correctly calculated. I ended up forking https://github.com/demurgos/v8-coverage and adding "cli/tools/coverage/merge.rs" and "cli/tools/coverage/range_tree.rs". --- cli/tests/testdata/coverage/multifile/a_test.js | 8 ++++++++ cli/tests/testdata/coverage/multifile/b_test.js | 8 ++++++++ cli/tests/testdata/coverage/multifile/expected.lcov | 18 ++++++++++++++++++ cli/tests/testdata/coverage/multifile/expected.out | 1 + cli/tests/testdata/coverage/multifile/mod.js | 6 ++++++ 5 files changed, 41 insertions(+) create mode 100644 cli/tests/testdata/coverage/multifile/a_test.js create mode 100644 cli/tests/testdata/coverage/multifile/b_test.js create mode 100644 cli/tests/testdata/coverage/multifile/expected.lcov create mode 100644 cli/tests/testdata/coverage/multifile/expected.out create mode 100644 cli/tests/testdata/coverage/multifile/mod.js (limited to 'cli/tests/testdata/coverage/multifile') diff --git a/cli/tests/testdata/coverage/multifile/a_test.js b/cli/tests/testdata/coverage/multifile/a_test.js new file mode 100644 index 000000000..d5d9c3533 --- /dev/null +++ b/cli/tests/testdata/coverage/multifile/a_test.js @@ -0,0 +1,8 @@ +import { test } from "./mod.js"; + +Deno.test({ + name: "bugrepo a", + fn: () => { + test(true); + }, +}); diff --git a/cli/tests/testdata/coverage/multifile/b_test.js b/cli/tests/testdata/coverage/multifile/b_test.js new file mode 100644 index 000000000..d93b15a17 --- /dev/null +++ b/cli/tests/testdata/coverage/multifile/b_test.js @@ -0,0 +1,8 @@ +import { test } from "./mod.js"; + +Deno.test({ + name: "bugrepo b", + fn: () => { + test(false); + }, +}); diff --git a/cli/tests/testdata/coverage/multifile/expected.lcov b/cli/tests/testdata/coverage/multifile/expected.lcov new file mode 100644 index 000000000..03ad5e7bd --- /dev/null +++ b/cli/tests/testdata/coverage/multifile/expected.lcov @@ -0,0 +1,18 @@ +SF:[WILDCARD]mod.js +FN:1,test +FNDA:2,test +FNF:1 +FNH:1 +BRDA:2,1,0,1 +BRF:1 +BRH:1 +DA:1,2 +DA:2,4 +DA:3,5 +DA:4,5 +DA:5,5 +DA:6,4 +DA:7,1 +LH:7 +LF:7 +end_of_record diff --git a/cli/tests/testdata/coverage/multifile/expected.out b/cli/tests/testdata/coverage/multifile/expected.out new file mode 100644 index 000000000..fde26e165 --- /dev/null +++ b/cli/tests/testdata/coverage/multifile/expected.out @@ -0,0 +1 @@ +cover [WILDCARD]/multifile/mod.js ... 100.000% (7/7) diff --git a/cli/tests/testdata/coverage/multifile/mod.js b/cli/tests/testdata/coverage/multifile/mod.js new file mode 100644 index 000000000..b9f8d627a --- /dev/null +++ b/cli/tests/testdata/coverage/multifile/mod.js @@ -0,0 +1,6 @@ +export function test(a) { + if (a) { + return 0; + } + return 1; +} -- cgit v1.2.3