diff options
author | Teddy Wing | 2020-12-20 17:15:11 +0100 |
---|---|---|
committer | Teddy Wing | 2020-12-20 17:18:40 +0100 |
commit | 85df0594be312307ea33086583f590283f828c09 (patch) | |
tree | 2470ad8f5fde1abcba23eb4b321bcdba54c8f60e /browserenv_unix_test.go | |
parent | 2b67d0904096d00fbfa4ca7e7ea82a4f51055b45 (diff) | |
download | browserenv-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.go | 20 |
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) + } +} |