mirror of
https://github.com/black-ant/Ant-Browser.git
synced 2026-07-14 18:48:55 +08:00
70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package backend
|
|
|
|
import (
|
|
"archive/zip"
|
|
"bytes"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"sort"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func runGitForTest(t *testing.T, workdir string, args ...string) {
|
|
t.Helper()
|
|
|
|
cmd := exec.Command("git", args...)
|
|
cmd.Dir = workdir
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Fatalf("git %v failed: %v\n%s", args, err, string(output))
|
|
}
|
|
}
|
|
|
|
func buildAutomationZipBytesForTest(t *testing.T, files map[string]string) []byte {
|
|
t.Helper()
|
|
|
|
var buf bytes.Buffer
|
|
writer := zip.NewWriter(&buf)
|
|
|
|
paths := make([]string, 0, len(files))
|
|
for relativePath := range files {
|
|
paths = append(paths, relativePath)
|
|
}
|
|
sort.Strings(paths)
|
|
|
|
for _, relativePath := range paths {
|
|
entry, err := writer.Create(relativePath)
|
|
if err != nil {
|
|
t.Fatalf("create zip entry failed: %v", err)
|
|
}
|
|
if _, err := entry.Write([]byte(files[relativePath])); err != nil {
|
|
t.Fatalf("write zip entry failed: %v", err)
|
|
}
|
|
}
|
|
|
|
if err := writer.Close(); err != nil {
|
|
t.Fatalf("close zip writer failed: %v", err)
|
|
}
|
|
return buf.Bytes()
|
|
}
|
|
|
|
func writeAutomationScriptLibraryPackage(t *testing.T, dir string, manifest string, entry string) {
|
|
t.Helper()
|
|
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
t.Fatalf("create script library package dir failed: %v", err)
|
|
}
|
|
if strings.TrimSpace(manifest) != "" {
|
|
if err := os.WriteFile(filepath.Join(dir, "automation.script.json"), []byte(manifest), 0o644); err != nil {
|
|
t.Fatalf("write script library manifest failed: %v", err)
|
|
}
|
|
}
|
|
if strings.TrimSpace(entry) != "" {
|
|
if err := os.WriteFile(filepath.Join(dir, "index.cjs"), []byte(entry), 0o644); err != nil {
|
|
t.Fatalf("write script library entry failed: %v", err)
|
|
}
|
|
}
|
|
}
|