package chain import ( "database/sql" "os" "testing" _ "github.com/lib/pq" "github.com/stretchr/testify/require" ) // TestPersistentChain_Conformance 让 PG 持久化实现跑同一套契约套件。 // // 需要一个可写的测试库:设置 TCS_TEST_PG_DSN 后运行,例如 // // TCS_TEST_PG_DSN='postgres://postgres@localhost:5432/tcs_iptv_test?sslmode=disable' go test ./internal/chain/ // // 未设置则跳过(不污染开发库)。每个子用例前清空镜像表,保证干净状态。 func TestPersistentChain_Conformance(t *testing.T) { dsn := os.Getenv("TCS_TEST_PG_DSN") if dsn == "" { t.Skip("未设置 TCS_TEST_PG_DSN,跳过 PG 契约测试") } db, err := sql.Open("postgres", dsn) require.NoError(t, err) require.NoError(t, db.Ping()) t.Cleanup(func() { _ = db.Close() }) RunClientConformance(t, func(t *testing.T) Client { _, err := db.Exec(`TRUNCATE content_registry, hash_binding, identity_mapping, version_history, chain_tx CASCADE`) require.NoError(t, err) pc, err := NewPersistentChain(db) require.NoError(t, err) return pc }) }