internal/worker: properly implement vendor error categorization
Previously, a function to catch errors that occured when a vendor
directory existed within a module existed but was unused. This change
reimplements that function and actually uses it in error
categorization.
Change-Id: I96408f1c4eb8898a0f112c545e27a0b7d0ae2808
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/482155
Run-TryBot: Maceo Thompson <maceothompson@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/internal/worker/govulncheck_scan.go b/internal/worker/govulncheck_scan.go
index c9cdc55..e519ed5 100644
--- a/internal/worker/govulncheck_scan.go
+++ b/internal/worker/govulncheck_scan.go
@@ -212,6 +212,8 @@
err = fmt.Errorf("%v: %w", err, derrors.LoadPackagesMissingGoSumEntryError)
case isReplacingWithLocalPath(err):
err = fmt.Errorf("%v: %w", err, derrors.LoadPackagesImportedLocalError)
+ case isModVendor(err):
+ err = fmt.Errorf("%v: %w", err, derrors.VendorError)
default:
err = fmt.Errorf("%v: %w", err, derrors.ScanModuleGovulncheckError)
}
@@ -459,6 +461,10 @@
return strings.Contains(err.Error(), "no go.mod file")
}
+func isModVendor(err error) bool {
+ return strings.Contains(err.Error(), "-mod=vendor")
+}
+
func isReplacingWithLocalPath(err error) bool {
errStr := err.Error()
matched, err := regexp.MatchString(`replaced by .{0,2}/`, errStr)