diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-22 08:29:14 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-22 08:29:14 +0300 |
| commit | 15639ba3508ab92599bd1884ba07139c73b2dac0 (patch) | |
| tree | 7b6bfaaf8b76827307c62ae5fa461f7920d08140 /internal/comic/comic_test.go | |
| parent | af21fec32c7cf3c15879dba6646a0b5cf19ac583 (diff) | |
Add manual prompt image mode
Diffstat (limited to 'internal/comic/comic_test.go')
| -rw-r--r-- | internal/comic/comic_test.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/internal/comic/comic_test.go b/internal/comic/comic_test.go index 4d0e019..29f2a31 100644 --- a/internal/comic/comic_test.go +++ b/internal/comic/comic_test.go @@ -436,6 +436,55 @@ func TestArtistAndRunnerEndToEndWithFakes(t *testing.T) { } } +func TestRunnerRunPromptWritesSingleAsset(t *testing.T) { + t.Parallel() + + originalLeakValidation := validateImagePromptLeakageFn + validateImagePromptLeakageFn = func(context.Context, string, string, string) error { return nil } + t.Cleanup(func() { + validateImagePromptLeakageFn = originalLeakValidation + }) + + tmpDir := t.TempDir() + runner := NewRunner(&RunnerConfig{ + ImageProvider: fakeImageProvider{t: t}, + Prompts: fakePromptRenderer{}, + OutputDir: tmpDir, + Slug: "manual-robot", + UltraRealistic: boolPtr(false), + PageMaxRetries: 1, + PageRetryBase: time.Second, + }) + + if err := runner.RunPrompt(context.Background(), "a robot reading a newspaper"); err != nil { + t.Fatalf("RunPrompt() error = %v", err) + } + if _, err := os.Stat(filepath.Join(tmpDir, "comics", "assets", "manual-robot", "prompt.png")); err != nil { + t.Fatalf("prompt image missing: %v", err) + } + if _, err := os.Stat(filepath.Join(tmpDir, "comics", "PDF")); !os.IsNotExist(err) { + t.Fatalf("PDF directory exists unexpectedly: %v", err) + } + if _, err := os.Stat(filepath.Join(tmpDir, "comics", "gallery")); !os.IsNotExist(err) { + t.Fatalf("gallery directory exists unexpectedly: %v", err) + } +} + +func TestRunnerRunPromptRejectsEmptyPrompt(t *testing.T) { + t.Parallel() + + runner := NewRunner(&RunnerConfig{ + ImageProvider: fakeImageProvider{t: t}, + Prompts: fakePromptRenderer{}, + OutputDir: t.TempDir(), + UltraRealistic: boolPtr(false), + }) + + if err := runner.RunPrompt(context.Background(), " "); err == nil { + t.Fatal("RunPrompt() error = nil, want validation failure") + } +} + func TestNewRunnerUsesRealisticWeightWhenUltraRealisticUnset(t *testing.T) { t.Parallel() @@ -931,3 +980,7 @@ func (p *recordingTTSProvider) GenerateAudio(_ context.Context, text, outputFile p.calls = append(p.calls, text) return os.WriteFile(outputFile, []byte("mp3"), 0o644) } + +func boolPtr(v bool) *bool { + return &v +} |
