Select committed validation inputs by module

This commit is contained in:
2026-10-10 02:25:12 +00:00
parent fa34cbaff3
commit 3a99536f9c
8 changed files with 434 additions and 3 deletions

View File

@@ -4,6 +4,7 @@ package validation
import (
"bytes"
"context"
"errors"
"fmt"
"go/format"
"io"
@@ -19,6 +20,7 @@ type Settings struct {
Race bool
FullVet bool
CompileTargets []Target
SharedFiles []string
GoFormat bool
Markdown *MarkdownSettings
ModuleDistribution ModuleDistributionSettings
@@ -51,6 +53,7 @@ type Target struct {
// Request identifies the captured source and output used by shared validation.
type Request struct {
RepositoryDir string
ModuleDir string
Commit string
Output io.Writer
Settings Settings
@@ -59,7 +62,10 @@ type Request struct {
// ReadCandidateTree loads the committed-file inventory when a selected check
// needs file-oriented input.
func (request Request) ReadCandidateTree(ctx context.Context) (*CandidateTree, error) {
return ReadCandidateTree(ctx, request.RepositoryDir, request.Commit)
return ReadCandidateTreeForScope(ctx, request.RepositoryDir, request.Commit, TreeScope{
ModuleDir: request.ModuleDir,
SharedFiles: request.Settings.SharedFiles,
})
}
// Run executes shared validation for the captured candidate.
@@ -118,9 +124,14 @@ func Run(ctx context.Context, request Request) (result error) {
}
}
}
if request.Settings.GoFormat || request.Settings.ModuleDistribution.WorkspaceFiles || request.Settings.ModuleDistribution.LocalReplacements || request.Settings.FileSize != nil || request.Settings.Markdown != nil {
needsSharedSelection := len(request.Settings.SharedFiles) != 0
if request.Settings.GoFormat || request.Settings.ModuleDistribution.WorkspaceFiles || request.Settings.ModuleDistribution.LocalReplacements || request.Settings.FileSize != nil || request.Settings.Markdown != nil || needsSharedSelection {
tree, err := request.ReadCandidateTree(ctx)
if err != nil {
var failure *Failure
if errors.As(err, &failure) {
return failure
}
check := MarkdownLinks
if request.Settings.FileSize != nil {
check = FileSize