diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-02 08:39:35 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-02 08:39:35 +0200 |
| commit | b3327d17f9f5c7080b05d6d5457cf25550d40ad9 (patch) | |
| tree | 090e66047c14c9183058bd68a8d4afc12b48f399 /internal/flamegraph/liveserver_open_test.go | |
| parent | 38620359537d77ab10acb888d266d3c6eb16fc9b (diff) | |
Add --open support for live flamegraph browser launch
Diffstat (limited to 'internal/flamegraph/liveserver_open_test.go')
| -rw-r--r-- | internal/flamegraph/liveserver_open_test.go | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/internal/flamegraph/liveserver_open_test.go b/internal/flamegraph/liveserver_open_test.go new file mode 100644 index 0000000..9d280b9 --- /dev/null +++ b/internal/flamegraph/liveserver_open_test.go @@ -0,0 +1,130 @@ +package flamegraph + +import ( + "errors" + "testing" +) + +func TestBrowserOpenCommandPartsUsesLinuxDefault(t *testing.T) { + got, err := browserOpenCommandParts("linux", "", "http://localhost:1234/") + if err != nil { + t.Fatalf("browserOpenCommandParts returned error: %v", err) + } + want := []string{"firefox", "http://localhost:1234/"} + if len(got) != len(want) { + t.Fatalf("len(parts) = %d, want %d", len(got), len(want)) + } + for i := range want { + if got[i] != want[i] { + t.Fatalf("parts[%d] = %q, want %q", i, got[i], want[i]) + } + } +} + +func TestBrowserOpenCommandPartsUsesDarwinDefault(t *testing.T) { + got, err := browserOpenCommandParts("darwin", "", "http://localhost:1234/") + if err != nil { + t.Fatalf("browserOpenCommandParts returned error: %v", err) + } + want := []string{"open", "-a", "Firefox", "http://localhost:1234/"} + if len(got) != len(want) { + t.Fatalf("len(parts) = %d, want %d", len(got), len(want)) + } + for i := range want { + if got[i] != want[i] { + t.Fatalf("parts[%d] = %q, want %q", i, got[i], want[i]) + } + } +} + +func TestBrowserOpenCommandPartsOverrideAppendsURL(t *testing.T) { + got, err := browserOpenCommandParts("linux", "chromium --new-window", "http://localhost:1234/") + if err != nil { + t.Fatalf("browserOpenCommandParts returned error: %v", err) + } + want := []string{"chromium", "--new-window", "http://localhost:1234/"} + if len(got) != len(want) { + t.Fatalf("len(parts) = %d, want %d", len(got), len(want)) + } + for i := range want { + if got[i] != want[i] { + t.Fatalf("parts[%d] = %q, want %q", i, got[i], want[i]) + } + } +} + +func TestBrowserOpenCommandPartsOverrideReplacesPlaceholder(t *testing.T) { + got, err := browserOpenCommandParts("linux", "open-browser --target={url}", "http://localhost:1234/") + if err != nil { + t.Fatalf("browserOpenCommandParts returned error: %v", err) + } + want := []string{"open-browser", "--target=http://localhost:1234/"} + if len(got) != len(want) { + t.Fatalf("len(parts) = %d, want %d", len(got), len(want)) + } + for i := range want { + if got[i] != want[i] { + t.Fatalf("parts[%d] = %q, want %q", i, got[i], want[i]) + } + } +} + +func TestMaybeOpenLiveBrowserDisabledSkipsOpen(t *testing.T) { + called := false + orig := openBrowserURLFn + openBrowserURLFn = func(url, openCommand string) error { + called = true + return nil + } + t.Cleanup(func() { openBrowserURLFn = orig }) + + err := maybeOpenLiveBrowser("http://localhost:1234/", LiveServerOptions{AutoOpenBrowser: false}) + if err != nil { + t.Fatalf("maybeOpenLiveBrowser returned error: %v", err) + } + if called { + t.Fatalf("expected browser opener not to be called when disabled") + } +} + +func TestMaybeOpenLiveBrowserEnabledCallsOpen(t *testing.T) { + called := false + orig := openBrowserURLFn + openBrowserURLFn = func(url, openCommand string) error { + called = true + if url != "http://localhost:1234/" { + t.Fatalf("url = %q, want %q", url, "http://localhost:1234/") + } + if openCommand != "chromium" { + t.Fatalf("openCommand = %q, want %q", openCommand, "chromium") + } + return nil + } + t.Cleanup(func() { openBrowserURLFn = orig }) + + err := maybeOpenLiveBrowser("http://localhost:1234/", LiveServerOptions{ + AutoOpenBrowser: true, + OpenCommand: "chromium", + }) + if err != nil { + t.Fatalf("maybeOpenLiveBrowser returned error: %v", err) + } + if !called { + t.Fatalf("expected browser opener to be called") + } +} + +func TestMaybeOpenLiveBrowserPropagatesOpenError(t *testing.T) { + orig := openBrowserURLFn + openBrowserURLFn = func(url, openCommand string) error { + return errors.New("launch failed") + } + t.Cleanup(func() { openBrowserURLFn = orig }) + + err := maybeOpenLiveBrowser("http://localhost:1234/", LiveServerOptions{ + AutoOpenBrowser: true, + }) + if err == nil || err.Error() != "launch failed" { + t.Fatalf("expected launch failed error, got %v", err) + } +} |
