Skip to content

Commit e5fc274

Browse files
author
Greg Magolan
authored
fix: coverage (#2100)
* test: add coverage e2e test * fix(builtin): fix coverage lcov merger script jumping out of sandbox and not being able to find c8 * test: don't test coverage on Windows
1 parent e87ce09 commit e5fc274

12 files changed

Lines changed: 1441 additions & 3 deletions

File tree

.bazelrc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import %workspace%/common.bazelrc
55
# This lets us glob() up all the files inside the examples to make them inputs to tests
66
# To update these lines, just run `yarn bazel:update-deleted-packages`
77
# (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it)
8-
build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp
9-
query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp
8+
build --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/coverage,e2e/coverage/node_modules/@bazel/typescript/internal/devserver,e2e/coverage/node_modules/@bazel/typescript/internal,e2e/coverage/node_modules/@bazel/typescript/devserver,e2e/coverage/node_modules/@bazel/typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf,e2e/coverage/node_modules/@bazel/typescript/third_party/npm/requirejs,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp
9+
query --deleted_packages=examples/angular,examples/angular/e2e,examples/angular/src/app/home,examples/angular/src/app/hello-world,examples/angular/src/app,examples/angular/src/app/todos,examples/angular/src/app/todos/reducers,examples/angular/src/shared/material,examples/angular/src/lib/shorten,examples/angular/src,examples/angular/src/assets,examples/angular/tools,examples/angular_bazel_architect,examples/angular_bazel_architect/projects/frontend-lib,examples/angular_view_engine,examples/angular_view_engine/e2e,examples/angular_view_engine/src/app/home,examples/angular_view_engine/src/app/hello-world,examples/angular_view_engine/src/app,examples/angular_view_engine/src/app/todos,examples/angular_view_engine/src/app/todos/reducers,examples/angular_view_engine/src/shared/material,examples/angular_view_engine/src/lib/typography,examples/angular_view_engine/src/lib/shorten,examples/angular_view_engine/src,examples/angular_view_engine/src/assets,examples/app,examples/app/styles,examples/app/test,examples/closure,examples/create-react-app,examples/cypress,examples/from_source,examples/jest,examples/kotlin,examples/nestjs,examples/nestjs/src,examples/parcel,examples/protocol_buffers,examples/react_webpack,examples/user_managed_deps,examples/vendored_node,examples/vendored_node_and_yarn,examples/vue,examples/vue/src,examples/web_testing,examples/webapp,examples/worker,e2e/bazel_managed_deps,e2e/coverage,e2e/coverage/node_modules/@bazel/typescript/internal/devserver,e2e/coverage/node_modules/@bazel/typescript/internal,e2e/coverage/node_modules/@bazel/typescript/devserver,e2e/coverage/node_modules/@bazel/typescript/third_party/github.com/bazelbuild/bazel/src/main/protobuf,e2e/coverage/node_modules/@bazel/typescript/third_party/npm/requirejs,e2e/fine_grained_symlinks,e2e/jasmine,e2e/node_loader_no_preserve_symlinks,e2e/node_loader_preserve_symlinks,e2e/nodejs_image,e2e/nodejs_image/foolib,e2e/packages,e2e/symlinked_node_modules_npm,e2e/symlinked_node_modules_yarn,e2e/ts_devserver,e2e/ts_devserver/genrule,e2e/ts_devserver/subpackage,e2e/typescript,e2e/webapp
1010

1111
# Mock versioning command to test the --stamp behavior
1212
build --workspace_status_command="echo BUILD_SCM_VERSION 1.2.3"

e2e/BUILD.bazel

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,26 @@ e2e_integration_test(
2121
},
2222
)
2323

24+
e2e_integration_test(
25+
name = "e2e_coverage",
26+
bazel_commands = [
27+
"info",
28+
"coverage ...",
29+
],
30+
npm_packages = {
31+
"//packages/jasmine:npm_package": "@bazel/jasmine",
32+
"//packages/typescript:npm_package": "@bazel/typescript",
33+
},
34+
# Coverage not working on Windows. Looks like a bazel issue.
35+
# ==================== Test output for //:coverage_test:
36+
# ERROR(tools/test/windows/tw.cc:1262) ERROR: src/main/native/windows/process.cc(199): CreateProcessW("C:\users\b\_bazel_b\tpt6yasm\execroot\e2e_coverage\bazel-out\x64_windows-fastbuild\bin\coverage_test.bat.runfiles\bazel_tools\tools\test\collect_coverage.sh" ./coverage_test.bat): The system cannot find the file specified.
37+
# (error: 2)
38+
# ERROR(tools/test/windows/tw.cc:1419) Failed to start test process (arg: C:\users\b\_bazel_b\tpt6yasm\execroot\e2e_coverage\bazel-out\x64_windows-fastbuild\bin\coverage_test.bat.runfiles\bazel_tools\tools\test\collect_coverage.sh)
39+
tags = [
40+
"no-bazelci-windows",
41+
],
42+
)
43+
2444
e2e_integration_test(
2545
name = "e2e_fine_grained_symlinks",
2646
)

e2e/coverage/.bazelignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
dist
3+
bazel-out

e2e/coverage/.bazelrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import %workspace%/../../common.bazelrc

e2e/coverage/BUILD.bazel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test")
2+
load("@npm//@bazel/typescript:index.bzl", "ts_library")
3+
4+
ts_library(
5+
name = "coverage_test_srcs",
6+
srcs = ["coverage_source.ts"],
7+
)
8+
9+
jasmine_node_test(
10+
name = "coverage_test",
11+
srcs = [
12+
"coverage.spec.js",
13+
":coverage_test_srcs",
14+
],
15+
)

e2e/coverage/WORKSPACE

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Copyright 2017 The Bazel Authors. All rights reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
workspace(
16+
name = "e2e_coverage",
17+
managed_directories = {"@npm": ["node_modules"]},
18+
)
19+
20+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
21+
22+
http_archive(
23+
name = "build_bazel_rules_nodejs",
24+
sha256 = "0f2de53628e848c1691e5729b515022f5a77369c76a09fbe55611e12731c90e3",
25+
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.0.1/rules_nodejs-2.0.1.tar.gz"],
26+
)
27+
28+
load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install")
29+
30+
yarn_install(
31+
name = "npm",
32+
package_json = "//:package.json",
33+
yarn_lock = "//:yarn.lock",
34+
)

e2e/coverage/coverage.spec.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const {isString} = require('./coverage_source');
2+
3+
describe('coverage function', () => {
4+
it('should cover one branch', () => {
5+
expect(isString(2)).toBe(false);
6+
});
7+
it('should cover the other branch', () => {
8+
expect(isString('some string')).toBe(true);
9+
});
10+
});

e2e/coverage/coverage_source.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export function isString(input: string) {
2+
if (typeof input === 'string') {
3+
return true;
4+
} else {
5+
return false;
6+
}
7+
}

e2e/coverage/package.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "e2e-coverage",
3+
"dependencies": {
4+
"@bazel/jasmine": "^2.0.0",
5+
"@bazel/typescript": "^2.0.0",
6+
"typescript": "3.9.7",
7+
"jasmine": "3.6.1"
8+
},
9+
"scripts": {
10+
"test": "bazel coverage ..."
11+
}
12+
}

e2e/coverage/tsconfig.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"compilerOptions": {
3+
"lib": ["es2017", "dom"],
4+
"strict": true,
5+
"baseUrl": ".",
6+
"target": "es2015",
7+
}
8+
}

0 commit comments

Comments
 (0)