Skip to content

Use ct wrappers for T.Errorf and T.Fatalf - #270

Merged
richvdh merged 4 commits into
mainfrom
rav/failure_diagnostic_messages
Aug 6, 2026
Merged

Use ct wrappers for T.Errorf and T.Fatalf#270
richvdh merged 4 commits into
mainfrom
rav/failure_diagnostic_messages

Conversation

@richvdh

@richvdh richvdh commented Aug 4, 2026

Copy link
Copy Markdown
Member

These are thin wrappers that set a red foreground, thus making it much easier to spot the failure in a test log.

@codecov-commenter

codecov-commenter commented Aug 4, 2026

Copy link
Copy Markdown

❌ 3 Tests Failed:

Tests completed Failed Passed Skipped
98 3 95 5
View the top 3 failed test(s) by shortest run time
github.com/matrix-org/complement-crypto/tests::TestSpoofedEventSenderHandling/rust
Stack Traces | 3.01s run time
=== RUN   TestSpoofedEventSenderHandling/rust
    --- FAIL: TestSpoofedEventSenderHandling/rust (3.01s)
github.com/matrix-org/complement-crypto/tests::TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield
Stack Traces | 3.01s run time
=== RUN   TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield
    client.go:860: [CSAPI] POST .../client/v3/register => 200 OK (15.020178ms)
    client.go:860: [CSAPI] POST .../client/v3/register => 200 OK (13.653351ms)
    client.go:860: [CSAPI] POST .../client/v3/register => 200 OK (13.304624ms)
    rust.go:87: NewRustClient[@user-89-alice:hs1][JYAUWFTXGB] creating...
    rust.go:148: NewRustClient[@user-89-alice:hs1] created client storage=./rust_storage/user-89-alice_hs1_JYAUWFTXGB
    room_keys_test.go:531: [@user-89-alice:hs1](rust) Login {BaseURL:http://127.0.0.1:32820 UserID:@user-89-alice:hs1 Password:complement-crypto-password SlidingSyncURL: DeviceID:JYAUWFTXGB PersistentStorage:false ExtraOpts:map[] AccessToken:}
    rust.go:87: NewRustClient[@user-90-bob:hs1][IGTDZEZCTM] creating...
    rust.go:148: NewRustClient[@user-90-bob:hs1] created client storage=./rust_storage/user-90-bob_hs1_IGTDZEZCTM
    room_keys_test.go:531: [@user-90-bob:hs1](rust) Login {BaseURL:http://127.0.0.1:32820 UserID:@user-90-bob:hs1 Password:complement-crypto-password SlidingSyncURL: DeviceID:IGTDZEZCTM PersistentStorage:false ExtraOpts:map[] AccessToken:}
    rust.go:87: NewRustClient[@user-91-charlie:hs1][EDQPBKKVDH] creating...
    rust.go:148: NewRustClient[@user-91-charlie:hs1] created client storage=./rust_storage/user-91-charlie_hs1_EDQPBKKVDH
    room_keys_test.go:531: [@user-91-charlie:hs1](rust) Login {BaseURL:http://127.0.0.1:32820 UserID:@user-91-charlie:hs1 Password:complement-crypto-password SlidingSyncURL: DeviceID:EDQPBKKVDH PersistentStorage:false ExtraOpts:map[] AccessToken:}
    room_keys_test.go:531: [@user-89-alice:hs1](rust) StartSyncing starting to sync
    room_keys_test.go:531: [@user-89-alice:hs1](rust) StartSyncing now syncing
    room_keys_test.go:531: [@user-90-bob:hs1](rust) StartSyncing starting to sync
    room_keys_test.go:531: [@user-90-bob:hs1](rust) StartSyncing now syncing
    room_keys_test.go:531: [@user-91-charlie:hs1](rust) StartSyncing starting to sync
    room_keys_test.go:531: [@user-91-charlie:hs1](rust) StartSyncing now syncing
    client.go:860: [CSAPI] POST .../client/v3/createRoom => 200 OK (249.112181ms)
    client.go:860: [CSAPI] POST .../client/v3/join/!rtLYNNSPJkdTYtoZab:hs1 => 200 OK (68.051543ms)
    client.go:860: [CSAPI] POST .../client/v3/join/!rtLYNNSPJkdTYtoZab:hs1 => 200 OK (89.452478ms)
    room_keys_test.go:540: [@user-89-alice:hs1](rust) WaitUntilEventInRoom !rtLYNNSPJkdTYtoZab:hs1
    room_keys_test.go:540: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1]
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: <nil>
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$qcu-10WlsIMOZcsoXxagUcbh9E4ByCX2Dgm6kD7GzHI Text: Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$rYkEixLEHSKxbjib0DBBMtKoN9-1Tf3fU7RdOGt7cC0 Text: Sender:@user-89-alice:hs1 Target:@user-90-bob:hs1 Membership:invite FailedToDecrypt:false}
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$Fm63YT2mXoMa3MnAjK7ZaaBTLzbs9AmdqVZAXFCXDek Text: Sender:@user-89-alice:hs1 Target:@user-91-charlie:hs1 Membership:invite FailedToDecrypt:false}
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: <nil>
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$buR8LshA816A-J7Dlt59BNlIoKxO3sRvpjAySm6qTog Text: Sender:@user-90-bob:hs1 Target:@user-90-bob:hs1 Membership:join FailedToDecrypt:false}
    room_keys_test.go:540: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] set up
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:941: @user-89-alice:hs1: Wait[!rtLYNNSPJkdTYtoZab:hs1]: event exists in the timeline
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$2KLLATKACv1KXxsPUWeTc1R_8cqvy7ddCD6FnBsTQRk Text: Sender:@user-91-charlie:hs1 Target:@user-91-charlie:hs1 Membership:join FailedToDecrypt:false}
    room_keys_test.go:544: [@user-90-bob:hs1](rust) WaitUntilEventInRoom !rtLYNNSPJkdTYtoZab:hs1
    room_keys_test.go:544: [@user-90-bob:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1]
    rust.go:813: [@user-90-bob:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: <nil>
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: &{ID:$buR8LshA816A-J7Dlt59BNlIoKxO3sRvpjAySm6qTog Text: Sender:@user-90-bob:hs1 Target:@user-90-bob:hs1 Membership:join FailedToDecrypt:false}
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: <nil>
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: &{ID:$2KLLATKACv1KXxsPUWeTc1R_8cqvy7ddCD6FnBsTQRk Text: Sender:@user-91-charlie:hs1 Target:@user-91-charlie:hs1 Membership:join FailedToDecrypt:false}
    room_keys_test.go:544: [@user-90-bob:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] set up
    room_keys_test.go:545: [@user-91-charlie:hs1](rust) WaitUntilEventInRoom !rtLYNNSPJkdTYtoZab:hs1
    room_keys_test.go:545: [@user-91-charlie:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1]
    rust.go:813: [@user-91-charlie:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-91-charlie:hs1]TimelineDiff change: <nil>
    rust.go:881: [@user-91-charlie:hs1]TimelineDiff change: &{ID:$2KLLATKACv1KXxsPUWeTc1R_8cqvy7ddCD6FnBsTQRk Text: Sender:@user-91-charlie:hs1 Target:@user-91-charlie:hs1 Membership:join FailedToDecrypt:false}
    room_keys_test.go:545: [@user-91-charlie:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] set up
    room_keys_test.go:546: [@user-89-alice:hs1](rust) SendMessage !rtLYNNSPJkdTYtoZab:hs1 => Test Message
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID: Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    room_keys_test.go:546: [@user-89-alice:hs1](rust) SendMessage !rtLYNNSPJkdTYtoZab:hs1 => $tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 %!s(<nil>)
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-90-bob:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:941: @user-90-bob:hs1: Wait[!rtLYNNSPJkdTYtoZab:hs1]: event exists in the timeline
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: &{ID:$tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-91-charlie:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:941: @user-91-charlie:hs1: Wait[!rtLYNNSPJkdTYtoZab:hs1]: event exists in the timeline
    rust.go:881: [@user-91-charlie:hs1]TimelineDiff change: &{ID:$tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    room_keys_test.go:557: [@user-90-bob:hs1](rust) CurrentAccessToken => syt_dXNlci05MC1ib2I_ttkXCUHuyFoeUzgQIRHb_17wnXF
    client.go:60: lockOptions: {"options":{"callback":{"callback_response_url":"http://host.docker.internal:36269/response","filter":" ~u .*/sync.* ~hq syt_dXNlci05MC1ib2I_ttkXCUHuyFoeUzgQIRHb_17wnXF"}}}
    rust.go:881: [@user-91-charlie:hs1]TimelineDiff change: <nil>
    room_keys_test.go:560: [@user-91-charlie:hs1](rust) WaitUntilEventInRoom !rtLYNNSPJkdTYtoZab:hs1
    room_keys_test.go:561: [@user-89-alice:hs1](rust) SendMessage !rtLYNNSPJkdTYtoZab:hs1 => Another Test Message
    callback_addon.go:90: CallbackServer[TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield]user-91-charlie: 2026-08-05 22:17:32.538186787 +0000 UTC m=+365.614335486 POST http://hs1:.../v3/keys/upload (token=syt_dXNlci05MS1jaGFybGll_XVKfjKLICvhXGtiHAZAI_22pCd7) req_len=262 => HTTP 200
    room_keys_test.go:639: �[31mUnknown sync endpoint: http://hs1:.../v3/keys/upload�[39m
    callback_addon.go:90: CallbackServer[TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield]user-90-bob: 2026-08-05 22:17:32.541409386 +0000 UTC m=+365.617558085 POST http://hs1:.../v3/keys/upload (token=syt_dXNlci05MC1ib2I_ttkXCUHuyFoeUzgQIRHb_17wnXF) req_len=258 => HTTP 200
    room_keys_test.go:639: �[31mUnknown sync endpoint: http://hs1:.../v3/keys/upload�[39m
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID: Text:Another Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    callback_addon.go:90: CallbackServer[TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield]user-90-bob: 2026-08-05 22:17:32.608204189 +0000 UTC m=+365.684352887 POST http://hs1:.../client/unstable/org.matrix.simplified_msc3575/sync?pos=0%2Fs519_106_4_1_27_1_59_361_0_1&timeout=30000 (token=syt_dXNlci05MC1ib2I_ttkXCUHuyFoeUzgQIRHb_17wnXF) req_len=115 => HTTP 200
{"respond_body":{"pos":"0/s520_106_4_1_27_1_59_361_0_1","rooms":{},"extensions":{"to_device":{"next_batch":"59","events":[]},"e2ee":{"device_one_time_keys_count":{"signed_curve25519":51},"device_unused_fallback_key_types":["signed_curve25519"],"device_lists":{"changed":[],"left":[]}}}}}
    callback_addon.go:90: CallbackServer[TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield]user-90-bob: 2026-08-05 22:17:32.623364892 +0000 UTC m=+365.699513590 POST http://hs1:.../client/unstable/org.matrix.simplified_msc3575/sync?pos=50%2Fs519_106_4_1_27_1_59_361_0_1&timeout=30000 (token=syt_dXNlci05MC1ib2I_ttkXCUHuyFoeUzgQIRHb_17wnXF) req_len=742 => HTTP 200
    room_keys_test.go:613: Rewriting event $bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc from @user-89-alice:hs1 to have sender of @user-91-charlie:hs1
{"respond_body":{"pos":"50/s520_106_4_1_27_1_59_361_0_1","lists":{"all_rooms":{"count":1,"ops":[{"op":"SYNC","range":[0,0],"room_ids":["!rtLYNNSPJkdTYtoZab:hs1"]}]}},"rooms":{"!rtLYNNSPJkdTYtoZab:hs1":{"notification_count":0,"highlight_count":0,"bump_stamp":520,"timeline":[{"type":"m.room.encrypted","sender":"@user-91-charlie:hs1","content":{"algorithm":"m.megolm.v1.aes-sha2","ciphertext":"AwgBEtABuVIJCv6UAnTTrh0eTy17PErf2AWW0XlMIlAMahnhKFI+ZJwiiM5YEqBPxyegaivaeand6mVO3PblxXYXhDaM8V8mgSeMAaYNYfFOHBjQagE1RpjqRyT0yJTJH8Li/x4ydMeDhGJMjlOcPtGGPgEfRyNlmqePYG7vtGlx0jxNILz9ylp7M4q+XJ+d1VW2cGWwi7TlcsSeF0s13RSXIaPkn5PoDdOXKlnfIa3tvfJTRltUOAvZa9R61EKHf+wp5RMSsA27g5HLRnAWNJNKqUwmOCjku7HwpFABEW4zr2ViTIp8yU2ONmzotwWKfw5ffU0o9BNjh5a2c+nShBt7TxFQTmNnZvzLdbudQuEvVzNiqNI2nOAjk1pVDg","device_id":"JYAUWFTXGB","sender_key":"VEfAz4elE4bI3IpJOOXkqGp7TrPMrxmmZdz4Aw/i/mg","session_id":"JE6YRRKmMnkwiGEU+F2FoasaoFDlixnZMSYo/rAnIOc"},"origin_server_ts":1785968252587,"unsigned":{"membership":"join","age":18},"event_id":"$bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc"}],"limited":false,"prev_batch":"s519_106_4_1_27_1_59_361_0_1","num_live":1}},"extensions":{"account_data":{"global":[],"rooms":{}},"receipts":{"rooms":{}},"typing":{"rooms":{}}}}}
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=1
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc Text:Another Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    room_keys_test.go:561: [@user-89-alice:hs1](rust) SendMessage !rtLYNNSPJkdTYtoZab:hs1 => $bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc %!s(<nil>)
    rust.go:813: [@user-91-charlie:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:941: @user-91-charlie:hs1: Wait[!rtLYNNSPJkdTYtoZab:hs1]: event exists in the timeline
    rust.go:881: [@user-91-charlie:hs1]TimelineDiff change: &{ID:$tYIK8G96rpV-iO-9FXyaeaBCjS6495EbZqBnAzBPC60 Text:Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:881: [@user-91-charlie:hs1]TimelineDiff change: &{ID:$bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc Text:Another Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc Text:Another Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-90-bob:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: &{ID:$2KLLATKACv1KXxsPUWeTc1R_8cqvy7ddCD6FnBsTQRk Text: Sender:@user-91-charlie:hs1 Target:@user-91-charlie:hs1 Membership:join FailedToDecrypt:false}
    rust.go:881: [@user-90-bob:hs1]TimelineDiff change: &{ID:$bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc Text:Another Test Message Sender:@user-91-charlie:hs1 Target: Membership: FailedToDecrypt:false}
    rust.go:813: [@user-89-alice:hs1]AddTimelineListener[!rtLYNNSPJkdTYtoZab:hs1] TimelineDiff len=2
    rust.go:881: [@user-89-alice:hs1]TimelineDiff change: &{ID:$bGjcElgIj264TVuhASqTyIGMrHrgha5hH46XsZhvQYc Text:Another Test Message Sender:@user-89-alice:hs1 Target: Membership: FailedToDecrypt:false}
    client.go:85: unlockOptions
    rust.go:522: @user-91-charlie:hs1: Stopping sync service
    rust.go:522: @user-90-bob:hs1: Stopping sync service
    rust.go:522: @user-89-alice:hs1: Stopping sync service
    room_keys_test.go:531: [@user-91-charlie:hs1](rust) Close
    room_keys_test.go:531: [@user-90-bob:hs1](rust) Close
    room_keys_test.go:531: [@user-89-alice:hs1](rust) Close
        --- FAIL: TestSpoofedEventSenderHandling/rust/SpoofedMXIDSenderGivesRedShield (3.01s)
github.com/matrix-org/complement-crypto/tests::TestSpoofedEventSenderHandling
Stack Traces | 16.4s run time
=== RUN   TestSpoofedEventSenderHandling
--- FAIL: TestSpoofedEventSenderHandling (16.42s)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@poljar poljar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A custom in-house wrapper for logs 🥲

richvdh added 2 commits August 5, 2026 14:20
`ct.Fatalf` is a thin wrapper around `T.Fatalf`, that sets a red foreground,
thus making it much easier to spot the failure in a test log.
As with `Fatalf` (previous commit), `ct.Errorf` is a handy wrapper around
`T.Errorf`
@richvdh
richvdh force-pushed the rav/failure_diagnostic_messages branch from 48ef044 to 764f7f7 Compare August 5, 2026 13:20
@richvdh
richvdh merged commit b71c758 into main Aug 6, 2026
9 of 10 checks passed
@richvdh
richvdh deleted the rav/failure_diagnostic_messages branch August 6, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants