feat: move native communication to FFI (#1457)

This commit is contained in:
Levi authored and GitHub committed 2026-09-05 20:18:42 +08:00
1 parent 177c225f16
commit 39cd9034cd
86 files changed
+4558 -886

No files matched your search

+37
View File
@@ -0,0 +1,37 @@
package api
import (
"encoding/json"
"testing"
"github.com/GopeedLab/gopeed/pkg/download"
)
func TestTaskEventSubscriptionFiltersMask(t *testing.T) {
service := &Service{}
var payloads []string
service.SubscribeTaskEvents(TaskEventDone, func(payload string) {
payloads = append(payloads, payload)
})
task := &download.Task{ID: "task-1"}
service.emitTaskEvent(&download.Event{Key: download.EventKeyError, Task: task})
service.emitTaskEvent(&download.Event{Key: download.EventKeyDone, Task: task})
if len(payloads) != 1 {
t.Fatalf("got %d callbacks, want 1", len(payloads))
}
var event TaskEvent
if err := json.Unmarshal([]byte(payloads[0]), &event); err != nil {
t.Fatal(err)
}
if event.Type != "task.done" || event.TaskID != task.ID {
t.Fatalf("unexpected event: %#v", event)
}
}
func TestTaskEventListenerPanicIsContained(t *testing.T) {
service := &Service{}
service.SubscribeTaskEvents(TaskEventDone, func(string) { panic("callback failed") })
service.emitTaskEvent(&download.Event{Key: download.EventKeyDone, Task: &download.Task{ID: "task-1"}})
}