Files
eh-downloader/internal/core/testhelper_test.go
T
toor 0f927147cd feat: EH Downloader 用 Go + Wails v2 重写
原 Electron 版在这台 Windows 机器上无法启动(0x80000003 崩在 V8 初始化),
整个业务逻辑用 Go 重写,前端界面与协议结论完全保留。

- internal/eh: 协议核心,画廊页分页 -> /s/ -> hath 直链 -> 下载
- internal/core: 并发引擎 / 状态存储 / 目录模板 / 油猴桥口
- app.go: Wails 绑定层,替代 Electron IPC
- frontend/js/api.js: 适配层,renderer.js 一行未改
- 37 个测试,含 httptest 模拟 EH 的端到端链路验证

相比 Electron 版:90MB -> 12.4MB,180MB 内存 -> 27MB,构建 90s -> 2s。

顺带修掉原版代理探测的 bug(永远返回第一个端口,从不等连接结果)。
2026-10-08 23:28:16 +08:00

40 lines
679 B
Go

package core
// 测试辅助:起一个真实监听端口,用来验证代理探测真的等了连接结果
import (
"net"
"strconv"
)
type testListener struct {
ln net.Listener
}
func (l *testListener) port() int {
addr := l.ln.Addr().(*net.TCPAddr)
return addr.Port
}
func (l *testListener) Close() error { return l.ln.Close() }
func net_listen_loopback() (*testListener, error) {
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
return nil, err
}
// 接受连接,避免 backlog 满
go func() {
for {
c, err := ln.Accept()
if err != nil {
return
}
c.Close()
}
}()
return &testListener{ln: ln}, nil
}
var _ = strconv.Itoa