50 lines
1.4 KiB
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)
|
|
}
|
|
}
|
|
}
|