Harden the runner contract

This commit is contained in:
2026-07-03 08:26:51 -05:00
parent ccecc630e4
commit 32be4ee85e
2 changed files with 39 additions and 1 deletions

View File

@@ -56,6 +56,9 @@ func (r *Runner) Run(ctx context.Context, input RunInput) (RunOutput, error) {
if err != nil {
return output, fmt.Errorf("build extractor %q: %w", extractorKey, err)
}
if extractor == nil {
return output, fmt.Errorf("build extractor %q: returned nil extractor", extractorKey)
}
result, err := extractor.Extract(ctx, contracts.ExtractionRequest{
Source: input.Source,
@@ -121,7 +124,10 @@ func runValidators(ctx context.Context, extractor contracts.Extractor, doc *sour
var rejected []artifacts.RejectedArtifact
var warnings []contracts.Warning
for _, validator := range extractor.Validators() {
for validatorIndex, validator := range extractor.Validators() {
if validator == nil {
return nil, rejected, warnings, fmt.Errorf("extractor %q validator[%d] must not be nil", extractor.Key(), validatorIndex)
}
result, err := validator.Validate(ctx, contracts.ValidationRequest{
Source: doc,
Candidates: eligible,