Replace 43 test files with their upstream/main versions to eliminate test file merge conflicts entirely (43 files, 604 markers → 0). Fork-only test functions are extracted to *_ext_test.go files (19 files) which have no upstream counterpart and thus never conflict. Source-level upstream alignment: - config/defaults: AllowRemote defaults to true - config/migration: model names match upstream (gpt-5.4) - session/manager: sanitizeFilename replaces / and \ - state: log.Printf instead of log.Fatalf on mkdir failure - wecom: verifySignature returns false on empty token (fail-closed) - openclaw migration: preserves AllowRemote default Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package state
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestHeartbeatTargetsPersistence(t *testing.T) {
|
|
tmpDir, err := os.MkdirTemp("", "state-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
sm := NewManager(tmpDir)
|
|
|
|
if err := sm.SetLastHeartbeatTarget("telegram:-100123"); err != nil {
|
|
t.Fatalf("SetLastHeartbeatTarget failed: %v", err)
|
|
}
|
|
if err := sm.SetHeartbeatTarget("telegram:-100123/42"); err != nil {
|
|
t.Fatalf("SetHeartbeatTarget failed: %v", err)
|
|
}
|
|
|
|
if got := sm.GetLastHeartbeatTarget(); got != "telegram:-100123" {
|
|
t.Fatalf("GetLastHeartbeatTarget = %q, want %q", got, "telegram:-100123")
|
|
}
|
|
if got := sm.GetHeartbeatTarget(); got != "telegram:-100123/42" {
|
|
t.Fatalf("GetHeartbeatTarget = %q, want %q", got, "telegram:-100123/42")
|
|
}
|
|
|
|
sm2 := NewManager(tmpDir)
|
|
if got := sm2.GetLastHeartbeatTarget(); got != "telegram:-100123" {
|
|
t.Fatalf("persistent GetLastHeartbeatTarget = %q, want %q", got, "telegram:-100123")
|
|
}
|
|
if got := sm2.GetHeartbeatTarget(); got != "telegram:-100123/42" {
|
|
t.Fatalf("persistent GetHeartbeatTarget = %q, want %q", got, "telegram:-100123/42")
|
|
}
|
|
}
|