Bugfix involving directory creation during the merge stage
This commit is contained in:
@@ -206,6 +206,10 @@ func normalizeMergeInputs(ctx context.Context, env *Env, rawInputs []string, pat
|
|||||||
logs := make([]string, 0, len(rawInputs)*2)
|
logs := make([]string, 0, len(rawInputs)*2)
|
||||||
configs := make([]string, 0, len(rawInputs))
|
configs := make([]string, 0, len(rawInputs))
|
||||||
meta := make([]normalizeMergeInputMeta, 0, len(rawInputs))
|
meta := make([]normalizeMergeInputMeta, 0, len(rawInputs))
|
||||||
|
normalizedDir := filepath.Join(paths.TranscriptsRawDir, "normalized")
|
||||||
|
if err := os.MkdirAll(normalizedDir, 0o755); err != nil {
|
||||||
|
return nil, nil, nil, nil, fmt.Errorf("merge: ensure normalized transcripts directory %q: %w", normalizedDir, err)
|
||||||
|
}
|
||||||
|
|
||||||
var timeout time.Duration
|
var timeout time.Duration
|
||||||
timeoutRaw := strings.TrimSpace(env.Config.Pipeline.Seriatim.Timeout)
|
timeoutRaw := strings.TrimSpace(env.Config.Pipeline.Seriatim.Timeout)
|
||||||
@@ -218,7 +222,7 @@ func normalizeMergeInputs(ctx context.Context, env *Env, rawInputs []string, pat
|
|||||||
}
|
}
|
||||||
for _, input := range rawInputs {
|
for _, input := range rawInputs {
|
||||||
base := strings.TrimSuffix(filepath.Base(input), filepath.Ext(input))
|
base := strings.TrimSuffix(filepath.Base(input), filepath.Ext(input))
|
||||||
outPath := filepath.Join(paths.TranscriptsRawDir, "normalized", base+".normalized.json")
|
outPath := filepath.Join(normalizedDir, base+".normalized.json")
|
||||||
stdoutPath := filepath.Join(paths.LogsDir, "seriatim.normalize."+base+".stdout.log")
|
stdoutPath := filepath.Join(paths.LogsDir, "seriatim.normalize."+base+".stdout.log")
|
||||||
stderrPath := filepath.Join(paths.LogsDir, "seriatim.normalize."+base+".stderr.log")
|
stderrPath := filepath.Join(paths.LogsDir, "seriatim.normalize."+base+".stderr.log")
|
||||||
cfgPath := filepath.Join(paths.ConfigDir, "seriatim.normalize."+base+".generated.yml")
|
cfgPath := filepath.Join(paths.ConfigDir, "seriatim.normalize."+base+".generated.yml")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package stage
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -14,6 +15,22 @@ import (
|
|||||||
"gitea.maximumdirect.net/eric/narratio/internal/manifest"
|
"gitea.maximumdirect.net/eric/narratio/internal/manifest"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type normalizeDirAssertingRunner struct {
|
||||||
|
*seriatim.FakeRunner
|
||||||
|
ExpectedDir string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *normalizeDirAssertingRunner) Normalize(ctx context.Context, req seriatim.NormalizeRequest) (seriatim.NormalizeResult, error) {
|
||||||
|
info, err := os.Stat(r.ExpectedDir)
|
||||||
|
if err != nil {
|
||||||
|
return seriatim.NormalizeResult{}, fmt.Errorf("normalized directory check failed for %q: %w", r.ExpectedDir, err)
|
||||||
|
}
|
||||||
|
if !info.IsDir() {
|
||||||
|
return seriatim.NormalizeResult{}, fmt.Errorf("normalized path %q exists but is not a directory", r.ExpectedDir)
|
||||||
|
}
|
||||||
|
return r.FakeRunner.Normalize(ctx, req)
|
||||||
|
}
|
||||||
|
|
||||||
func TestMergeStageMergesRawTranscriptsAndRecordsMetadata(t *testing.T) {
|
func TestMergeStageMergesRawTranscriptsAndRecordsMetadata(t *testing.T) {
|
||||||
env, m := setupMergeEnv(t)
|
env, m := setupMergeEnv(t)
|
||||||
paths := env.ArtifactStore.SessionPaths(m.SessionID)
|
paths := env.ArtifactStore.SessionPaths(m.SessionID)
|
||||||
@@ -205,6 +222,30 @@ func TestMergeStageResolvesWorkspaceQualifiedManifestOutputsWithoutDuplication(t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMergeStageCreatesNormalizedRawDirectoryBeforeNormalize(t *testing.T) {
|
||||||
|
env, m := setupMergeEnv(t)
|
||||||
|
paths := env.ArtifactStore.SessionPaths(m.SessionID)
|
||||||
|
|
||||||
|
rawPath := filepath.Join(paths.TranscriptsRawDir, "alice.json")
|
||||||
|
writeFile(t, rawPath, `{"segments":[]}`)
|
||||||
|
writeFile(t, filepath.Join(paths.InputsDir, "speakers.yml"), "match: []\n")
|
||||||
|
writeFile(t, filepath.Join(paths.InputsDir, "autocorrect.yml"), "rules: []\n")
|
||||||
|
|
||||||
|
normalizedDir := filepath.Join(paths.TranscriptsRawDir, "normalized")
|
||||||
|
if err := os.RemoveAll(normalizedDir); err != nil {
|
||||||
|
t.Fatalf("remove normalized dir: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
env.Seriatim = &normalizeDirAssertingRunner{
|
||||||
|
FakeRunner: &seriatim.FakeRunner{},
|
||||||
|
ExpectedDir: normalizedDir,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := (mergeStage{}).Run(context.Background(), env, m); err != nil {
|
||||||
|
t.Fatalf("merge.Run() error = %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMergeStageFailsWhenNormalizeAdapterFails(t *testing.T) {
|
func TestMergeStageFailsWhenNormalizeAdapterFails(t *testing.T) {
|
||||||
env, m := setupMergeEnv(t)
|
env, m := setupMergeEnv(t)
|
||||||
paths := env.ArtifactStore.SessionPaths(m.SessionID)
|
paths := env.ArtifactStore.SessionPaths(m.SessionID)
|
||||||
|
|||||||
Reference in New Issue
Block a user