Preserve exact smoke-test selections

This commit is contained in:
2026-10-13 16:16:40 +00:00
parent 27ff580dae
commit b0de49a87a
2 changed files with 26 additions and 9 deletions

View File

@@ -4,7 +4,6 @@ import (
"context"
"fmt"
"net/url"
"strings"
"gitea.maximumdirect.net/eric/promptkit/internal/defaults"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
@@ -36,15 +35,12 @@ func (r *Runner) resolveSmokeTestTarget(ctx context.Context, req domain.SmokeTes
return nil, fmt.Errorf("%w: %w", ErrInvalidRequest, err)
}
promptID := strings.TrimSpace(req.PromptID)
profileID := strings.TrimSpace(req.ProfileID)
backendID := strings.TrimSpace(req.BackendID)
if promptID == "" && strings.TrimSpace(req.PromptVersion) != "" {
if req.PromptID == "" && req.PromptVersion != "" {
return nil, fmt.Errorf("%w: prompt version requires a prompt id", ErrInvalidRequest)
}
var promptInspection *domain.PromptInspection
if promptID != "" {
if req.PromptID != "" {
promptInspection, err = r.resolvePromptInspection(ctx, req.PromptID, req.PromptVersion)
if err != nil {
return nil, err
@@ -54,13 +50,13 @@ func (r *Runner) resolveSmokeTestTarget(ctx context.Context, req domain.SmokeTes
selection := &smokeTestSelection{transientRetries: transientRetries}
var selectedProfileID string
switch {
case profileID != "":
case req.ProfileID != "":
selectedProfileID = req.ProfileID
selection.target.SelectionSource = smokeSelectionSourceProfile
case promptInspection != nil && (promptInspection.DefaultProfileID != "" || isInferenceSmokeTest(req.Kind)):
selectedProfileID = promptInspection.DefaultProfileID
selection.target.SelectionSource = smokeSelectionSourcePrompt
case backendID != "" && isInferenceSmokeTest(req.Kind):
case req.BackendID != "" && isInferenceSmokeTest(req.Kind):
backend, err := r.resolveSmokeBackend(req.BackendID)
if err != nil {
return nil, err
@@ -72,7 +68,7 @@ func (r *Runner) resolveSmokeTestTarget(ctx context.Context, req domain.SmokeTes
selection.backend = backend
selection.target.DefaultSourceBackendID = backend.ID
selection.target.SelectionSource = smokeSelectionSourceBackendDefault
case backendID != "":
case req.BackendID != "":
backend, err := r.resolveSmokeBackend(req.BackendID)
if err != nil {
return nil, err

View File

@@ -262,6 +262,27 @@ func TestResolveSmokeTestTargetSelectionAndSettingsErrors(t *testing.T) {
},
wantErr: ErrProfileLoad,
},
{
name: "invalid prompt selection does not fall back",
request: domain.SmokeTestRequest{
Kind: domain.SmokeTestTextInference, PromptID: "missing.prompt", BackendID: "epsilon",
},
wantErr: ErrPromptLoad,
},
{
name: "blank explicit profile does not fall back",
request: domain.SmokeTestRequest{
Kind: domain.SmokeTestTextInference, ProfileID: " ", BackendID: "epsilon",
},
wantErr: ErrInvalidRequest,
},
{
name: "version cannot be supplied without prompt",
request: domain.SmokeTestRequest{
Kind: domain.SmokeTestTextInference, PromptVersion: " ", BackendID: "epsilon",
},
wantErr: ErrInvalidRequest,
},
{
name: "dangling backend default fails only when selected",
request: domain.SmokeTestRequest{Kind: domain.SmokeTestTextInference, BackendID: "delta"},