cmd/gopherbot: use longest prefix matching for compiler/runtime issue labeling#134
cmd/gopherbot: use longest prefix matching for compiler/runtime issue labeling#134wuyang9311 wants to merge 2 commits into
Conversation
…atching When an issue is filed with a package prefix like 'cmd/compile/internal/noder' that is not explicitly listed in the owners file but is clearly under a compiler/runtime-owned package (like 'cmd/compile'), gopherbot should still apply the compiler/runtime label. Previously, only exact matches against the owners file were supported, so new sub-packages would silently miss the label. This change adds longestPrefixMatch, which falls back to finding the longest prefix match in the crtPackages set when no exact match exists. Fixes golang/go#80421
Add missing test coverage for: - Single-level prefix match (runtime/metric -> runtime) - x/ path prefix match (x/sys/unix/foo -> x/sys/unix) - cmd/ subcommand prefix (cmd/asm/internal/arch -> cmd/asm) - Another runtime prefix (runtime/pprof/internal -> runtime/pprof) - Deeply nested (6 levels) prefix match - Empty crtPackages edge case (new test function) Updates golang/go#80421
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
@googlebot I signed it! |
e2d9597 to
53fb32f
Compare
|
This PR (HEAD: 53fb32f) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/build/+/802960. Important tips:
|
|
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be Please don’t reply on this GitHub thread. Visit golang.org/cl/802960. |
When an issue is filed against a compiler/runtime-owned sub-package
that is not explicitly listed in the owners file (e.g.,
"cmd/compile/internal/noder"), gopherbot's labelCompilerRuntimeIssues
fails to apply the "compiler/runtime" label because it requires an
exact package name match.
This happens because dev.golang.org/owners has entries for
"cmd/compile" but not for every sub-package like
"cmd/compile/internal/noder". New sub-packages are added over time
and the owners file doesn't always keep up.
This change adds a longestPrefixMatch helper that falls back to
finding the longest prefix match in the crtPackages set when an
exact match is not found. For example, "cmd/compile/internal/noder"
will match "cmd/compile" as its closest compiler-owned ancestor.
The prefix boundary check (requiring a '/' after the candidate
prefix) ensures that "cmd/compilefoo" does not accidentally match
"cmd/compile".
Unit tests cover 27 cases including exact matches, prefix matches
at various depths, non-matches, longest-prefix preference, boundary
conditions, and empty crtPackages.
Fixes golang/go#80421