From 15cab6d08504d94ac884ac52c3fc91dee6435845 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Sat, 21 May 2022 10:05:06 -0700 Subject: [PATCH] Make coverage handle relative-path pkgs --- hack/lib/golang.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index b3713e31570..3ae59788058 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -595,8 +595,17 @@ kube::golang::outfile_for_binary() { # Returns 0 if the binary can be built with coverage, 1 otherwise. # NB: this ignores whether coverage is globally enabled or not. kube::golang::is_instrumented_package() { - kube::util::array_contains "$1" "${KUBE_COVERAGE_INSTRUMENTED_PACKAGES[@]}" - return $? + if kube::util::array_contains "$1" "${KUBE_COVERAGE_INSTRUMENTED_PACKAGES[@]}"; then + return 0 + fi + # Some cases, like `make kubectl`, pass $1 as "./cmd/kubectl" rather than + # "k8s.io/kubernetes/kubectl". Try to normalize and handle that. We don't + # do this always because it is a bit slow. + pkg=$(go list -find "$1") + if kube::util::array_contains "${pkg}" "${KUBE_COVERAGE_INSTRUMENTED_PACKAGES[@]}"; then + return 0 + fi + return 1 } # Argument: the name of a Kubernetes package (e.g. k8s.io/kubernetes/cmd/kube-scheduler)