84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
package wails_test
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"lmika.dev/actions/wails-release/internal/runner"
|
|
"lmika.dev/actions/wails-release/internal/wails"
|
|
)
|
|
|
|
func TestParseInstalledVersion(t *testing.T) {
|
|
cases := map[string]string{
|
|
"Wails CLI v2.11.0": "v2.11.0",
|
|
"Wails CLI v2.10.1\n": "v2.10.1",
|
|
"Wails v2.9.0": "v2.9.0",
|
|
}
|
|
for in, want := range cases {
|
|
got, err := wails.ParseCLIVersion([]byte(in))
|
|
if err != nil {
|
|
t.Fatalf("unexpected error parsing %q: %v", in, err)
|
|
}
|
|
if got != want {
|
|
t.Fatalf("input %q: got %q want %q", in, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseInstalledVersion_Unparseable(t *testing.T) {
|
|
_, err := wails.ParseCLIVersion([]byte("nope"))
|
|
if err == nil {
|
|
t.Fatal("expected error")
|
|
}
|
|
}
|
|
|
|
func TestEnsureCLI_AlreadyInstalledMatchingSkipsInstall(t *testing.T) {
|
|
f := &runner.Fake{}
|
|
f.On("wails", []string{"-v"}).Return([]byte("Wails CLI v2.11.0"), nil)
|
|
|
|
err := wails.EnsureCLI(context.Background(), f, "v2.11.0")
|
|
if err != nil {
|
|
t.Fatalf("unexpected: %v", err)
|
|
}
|
|
|
|
for _, c := range f.Calls {
|
|
if c.Name == "go" {
|
|
t.Fatalf("expected no `go install`, got call: %+v", c)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestEnsureCLI_MismatchTriggersInstall(t *testing.T) {
|
|
f := &runner.Fake{}
|
|
f.On("wails", []string{"-v"}).Return([]byte("Wails CLI v2.10.0"), nil)
|
|
f.On("go", []string{"install", "github.com/wailsapp/wails/v2/cmd/wails@v2.11.0"}).Return(nil, nil)
|
|
|
|
err := wails.EnsureCLI(context.Background(), f, "v2.11.0")
|
|
if err != nil {
|
|
t.Fatalf("unexpected: %v", err)
|
|
}
|
|
|
|
saw := false
|
|
for _, c := range f.Calls {
|
|
if c.Name == "go" && c.Args[0] == "install" && strings.Contains(c.Args[1], "@v2.11.0") {
|
|
saw = true
|
|
}
|
|
}
|
|
if !saw {
|
|
t.Fatal("expected go install call, did not see one")
|
|
}
|
|
}
|
|
|
|
func TestEnsureCLI_NotInstalledTriggersInstall(t *testing.T) {
|
|
f := &runner.Fake{}
|
|
f.On("wails", []string{"-v"}).Return(nil, errors.New("exec: not found"))
|
|
f.On("go", []string{"install", "github.com/wailsapp/wails/v2/cmd/wails@v2.11.0"}).Return(nil, nil)
|
|
|
|
err := wails.EnsureCLI(context.Background(), f, "v2.11.0")
|
|
if err != nil {
|
|
t.Fatalf("unexpected: %v", err)
|
|
}
|
|
}
|