Files
Ant-Browser/backend/app_browser_core_scan_test.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)
}
}