mirror of
https://github.com/black-ant/Ant-Browser.git
synced 2026-07-14 18:48:55 +08:00
85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
package backend
|
|
|
|
import (
|
|
"ant-chrome/backend/internal/browser"
|
|
"ant-chrome/backend/internal/config"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
type browserCoreDAOStub struct {
|
|
list []browser.Core
|
|
}
|
|
|
|
func (s *browserCoreDAOStub) List() ([]browser.Core, error) {
|
|
return append([]browser.Core{}, s.list...), nil
|
|
}
|
|
|
|
func (s *browserCoreDAOStub) Upsert(core browser.Core) error {
|
|
for i := range s.list {
|
|
if s.list[i].CoreId == core.CoreId {
|
|
s.list[i] = core
|
|
return nil
|
|
}
|
|
}
|
|
s.list = append(s.list, core)
|
|
return nil
|
|
}
|
|
|
|
func (s *browserCoreDAOStub) Delete(coreId string) error {
|
|
next := s.list[:0]
|
|
for _, core := range s.list {
|
|
if core.CoreId != coreId {
|
|
next = append(next, core)
|
|
}
|
|
}
|
|
s.list = next
|
|
return nil
|
|
}
|
|
|
|
func (s *browserCoreDAOStub) SetDefault(coreId string) error {
|
|
for i := range s.list {
|
|
s.list[i].IsDefault = s.list[i].CoreId == coreId
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func TestBrowserCoreScanRegistersDetectedCoreInDAO(t *testing.T) {
|
|
root := t.TempDir()
|
|
coreDir := filepath.Join(root, "chrome", "chromium-148")
|
|
exePath := filepath.Join(coreDir, filepath.FromSlash(browser.CoreExecutableCandidates()[0]))
|
|
if err := os.MkdirAll(filepath.Dir(exePath), 0o755); err != nil {
|
|
t.Fatalf("创建测试内核目录失败: %v", err)
|
|
}
|
|
if err := os.WriteFile(exePath, []byte("stub"), 0o755); err != nil {
|
|
t.Fatalf("写入测试内核可执行文件失败: %v", err)
|
|
}
|
|
|
|
cfg := config.DefaultConfig()
|
|
cfg.Browser.Cores = nil
|
|
|
|
app := NewApp(root)
|
|
app.config = cfg
|
|
app.browserMgr = browser.NewManager(cfg, root)
|
|
dao := &browserCoreDAOStub{}
|
|
app.browserMgr.CoreDAO = dao
|
|
|
|
cores := app.BrowserCoreScan()
|
|
if len(dao.list) != 1 {
|
|
t.Fatalf("扫描后应写入 DAO 1 个内核,got=%d", len(dao.list))
|
|
}
|
|
if dao.list[0].CoreId != "core-chromium-148" {
|
|
t.Fatalf("内核 ID 不符合预期: got=%q", dao.list[0].CoreId)
|
|
}
|
|
if dao.list[0].CorePath != filepath.Join("chrome", "chromium-148") {
|
|
t.Fatalf("内核路径不符合预期: got=%q", dao.list[0].CorePath)
|
|
}
|
|
if !dao.list[0].IsDefault {
|
|
t.Fatal("首个扫描到的内核应设为默认")
|
|
}
|
|
if len(cores) != 1 || cores[0].CoreId != dao.list[0].CoreId {
|
|
t.Fatalf("扫描返回列表未包含新内核: %+v", cores)
|
|
}
|
|
}
|