Add prepare rerun guidance for unresolved previous-session analyze inputs
This commit is contained in:
@@ -631,6 +631,15 @@ func resolveScriptoriumInput(
|
|||||||
runtimeCatalog *artifacts.ArtifactCatalog,
|
runtimeCatalog *artifacts.ArtifactCatalog,
|
||||||
) (string, bool, *artifacts.ResolvedSessionArtifact, error) {
|
) (string, bool, *artifacts.ResolvedSessionArtifact, error) {
|
||||||
source := strings.TrimSpace(inputCfg.Source)
|
source := strings.TrimSpace(inputCfg.Source)
|
||||||
|
if artifacts.IsPreviousSessionArtifactSource(source) {
|
||||||
|
if inputCfg.Required {
|
||||||
|
return "", false, nil, fmt.Errorf(
|
||||||
|
"required previous-session input source %q is unavailable; run narratio run-stage --force prepare",
|
||||||
|
source,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return "", false, nil, nil
|
||||||
|
}
|
||||||
switch source {
|
switch source {
|
||||||
case "previous_session_artifact":
|
case "previous_session_artifact":
|
||||||
if strings.TrimSpace(inputCfg.Path) == "" {
|
if strings.TrimSpace(inputCfg.Path) == "" {
|
||||||
|
|||||||
@@ -717,6 +717,25 @@ func TestAnalyzeOmitsOptionalMissingConfiguredArtifactInput(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAnalyzeRequiredPreviousSessionArtifactInputGuidesPrepareForce(t *testing.T) {
|
||||||
|
env, m, _ := setupAnalyzeEnv(t)
|
||||||
|
|
||||||
|
sessionRecap := env.Config.Pipeline.Scriptorium.Artifacts["session_recap"]
|
||||||
|
sessionRecap.Inputs["previous_recap"] = config.ScriptoriumInputConfig{
|
||||||
|
Source: "narratio.previous_session.artifact.session_recap",
|
||||||
|
Required: true,
|
||||||
|
}
|
||||||
|
env.Config.Pipeline.Scriptorium.Artifacts["session_recap"] = sessionRecap
|
||||||
|
|
||||||
|
_, err := (analyzeStage{}).Run(context.Background(), env, m)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error, got nil")
|
||||||
|
}
|
||||||
|
if !strings.Contains(err.Error(), "run narratio run-stage --force prepare") {
|
||||||
|
t.Fatalf("error = %q, want guidance to run force prepare", err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestAnalyzeFailsWhenOutputPathMissing(t *testing.T) {
|
func TestAnalyzeFailsWhenOutputPathMissing(t *testing.T) {
|
||||||
env, m, fake := setupAnalyzeEnv(t)
|
env, m, fake := setupAnalyzeEnv(t)
|
||||||
paths := sessionPathsForEnv(env, m.SessionID)
|
paths := sessionPathsForEnv(env, m.SessionID)
|
||||||
|
|||||||
Reference in New Issue
Block a user