aboutsummaryrefslogtreecommitdiffstats
path: root/browserenv_unix_test.go
diff options
context:
space:
mode:
authorTeddy Wing2020-12-20 17:15:11 +0100
committerTeddy Wing2020-12-20 17:18:40 +0100
commit85df0594be312307ea33086583f590283f828c09 (patch)
tree2470ad8f5fde1abcba23eb4b321bcdba54c8f60e /browserenv_unix_test.go
parent2b67d0904096d00fbfa4ca7e7ea82a4f51055b45 (diff)
downloadbrowserenv-85df0594be312307ea33086583f590283f828c09.tar.bz2
Support multiple colon-separated commands in `BROWSER`
After reading the `urlview` man page, I learned that it supports multiple commands in the `BROWSER` environment variable separated by colons. Read over the source to see what `urlview` does: https://github.com/sigpipe/urlview/blob/08767aa863cd27d1755ba0aff65b8cc1a0c1446a/urlview.c#L617-L630 It tries each command from left to right until one of them exits with a `0` exit code. Use the same logic here.
Diffstat (limited to 'browserenv_unix_test.go')
-rw-r--r--browserenv_unix_test.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/browserenv_unix_test.go b/browserenv_unix_test.go
index f79d31d..971454e 100644
--- a/browserenv_unix_test.go
+++ b/browserenv_unix_test.go
@@ -96,3 +96,23 @@ func TestOpenURLStderr(t *testing.T) {
t.Errorf("got stdout value %q want %q", got, url)
}
}
+
+func TestOpenURLMultipleBrowserCommands(t *testing.T) {
+ // The `test -z URL` command must fail, causing `printf URL` to run.
+ err := os.Setenv("BROWSER", "test -z:printf")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var stdout strings.Builder
+ Stdout = &stdout
+
+ url := "http://localhost:8000"
+
+ OpenURL(url)
+
+ got := stdout.String()
+ if got != url {
+ t.Errorf("got stdout value %q want %q", got, url)
+ }
+}