ituoke/internal/device/runtime_test.go

50 lines
1.4 KiB
Go

package device
import (
"os"
"path/filepath"
"runtime"
"strings"
"testing"
)
func TestBundledPreviewRuntimeWithoutSystemTools(t *testing.T) {
t.Chdir(t.TempDir())
t.Setenv("PATH", "")
name := "ffmpeg"
adbName := "adb"
if runtime.GOOS == "windows" {
name += ".exe"
adbName += ".exe"
}
for _, relative := range []string{filepath.Join("ffmpeg", name), filepath.Join("platform-tools", adbName), "scrcpy/scrcpy-server-v5.0.1"} {
path := filepath.Join("third_party", relative)
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(path, []byte("fixture"), 0755); err != nil {
t.Fatal(err)
}
}
if p, err := resolveScrcpyServer(); err != nil || !filepath.IsAbs(p) {
t.Fatalf("server: %q %v", p, err)
}
if p, err := resolveFFmpeg(); err != nil || !filepath.IsAbs(p) {
t.Fatalf("ffmpeg: %q %v", p, err)
}
if p, err := resolveAdb(); err != nil || !filepath.IsAbs(p) {
t.Fatalf("adb: %q %v", p, err)
}
}
func TestMissingPreviewRuntimeGivesRepairInstruction(t *testing.T) {
t.Chdir(t.TempDir())
t.Setenv("PATH", "")
for _, resolve := range []func() (string, error){resolveScrcpyServer, resolveFFmpeg} {
_, err := resolve()
if err == nil || !strings.Contains(err.Error(), "完整的 iTuoke 安装包") || strings.Contains(err.Error(), "brew") {
t.Fatalf("unexpected repair instruction: %v", err)
}
}
}