diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index 8d74afc047c..a691194c9a3 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -496,9 +496,10 @@ EOF # Argument: the name of a Kubernetes package (e.g. k8s.io/kubernetes/cmd/kube-scheduler). # Deletes a test generated by kube::golang::create_coverage_dummy_test. +# It is not an error to call this for a nonexistent test. kube::golang::delete_coverage_dummy_test() { local package="$1" - rm $(kube::golang::path_for_coverage_dummy_test "${package}") + rm -f $(kube::golang::path_for_coverage_dummy_test "${package}") } # Arguments: a list of kubernetes packages to build. @@ -515,14 +516,16 @@ kube::golang::build_some_binaries() { for package in "$@"; do if kube::golang::is_covered_binary "${package}"; then V=2 kube::log::info "Building ${package} with coverage..." + kube::golang::create_coverage_dummy_test "${package}" + kube::util::trap_add "kube::golang::delete_coverage_dummy_test \"${package}\"" EXIT + go test -c -o "$(kube::golang::outfile_for_binary "${package}" "${platform}")" \ -covermode count \ -coverpkg k8s.io/... \ "${build_args[@]}" \ -tags coverage \ "${package}" - kube::golang::delete_coverage_dummy_test "${package}" else uncovered+=("${package}") fi