fix: enable browser executable selection
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
//go:build windows
|
||||
|
||||
package files
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestWindowsExecutablePickerReturnsCleanAbsoluteExecutable(t *testing.T) {
|
||||
runner := &fakeRunner{out: []byte("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\r\n")}
|
||||
picker := newExecutablePickerWithRunner(runner)
|
||||
got, err := picker.ChooseExecutable(context.Background())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != `C:\Program Files\Google\Chrome\Application\chrome.exe` {
|
||||
t.Fatalf("path = %q", got)
|
||||
}
|
||||
command := strings.Join(runner.args, " ")
|
||||
if runner.name != "powershell.exe" || !strings.Contains(command, "-STA") || !strings.Contains(command, "OpenFileDialog") {
|
||||
t.Fatalf("unexpected picker command: %s %v", runner.name, runner.args)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWindowsExecutablePickerRejectsInvalidSelection(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
out string
|
||||
}{
|
||||
{name: "relative", out: `chrome.exe`},
|
||||
{name: "not executable", out: `C:\Browser\chrome.txt`},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
picker := newExecutablePickerWithRunner(&fakeRunner{out: []byte(test.out)})
|
||||
if _, err := picker.ChooseExecutable(context.Background()); err == nil {
|
||||
t.Fatal("invalid selection was accepted")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWindowsExecutablePickerTreatsEmptySelectionAsCanceled(t *testing.T) {
|
||||
picker := newExecutablePickerWithRunner(&fakeRunner{})
|
||||
if _, err := picker.ChooseExecutable(context.Background()); !errors.Is(err, ErrSelectionCanceled) {
|
||||
t.Fatalf("error = %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user