mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-24 10:08:00 -06:00
* test(sign): serialize the Keychain search-list tests Both ignored Keychain tests save the user's keychain search list, change it and restore what they saved. Run together (`--ignored` runs them in parallel), one could restore its list while the other needed its temporary keychain, or put back a keychain the other had already deleted. A shared lock now runs them one at a time. With the lock, the issuer test still failed about one run in ten when it came second: the Security framework caches the search list in-process and learns of `security list-keychains` asynchronously, so `keychain::find` did not yet look in the new keychain. The test now waits up to five seconds for the identity to appear. Follows up a CodeRabbit review comment on #3716. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(sign): restore the keychain search list before deleting the keychain If deleting the temporary keychain panicked, the test left it on the user's search list, and the next Keychain test (which accepts the poisoned lock) saved that list and later restored it. Restore the list first. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(sign): fail when the keychain search list isn't restored Both Keychain tests ignored the result of the `security list-keychains` that restores the user's search list, so a failed restore went unnoticed and left the deleted temporary keychain on the list. They now check it after deleting the keychain. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(sign): keep the issuer test's keychain at one path trustd remembers which keychain file it found an issuer in. Each run of `keychain_identities_carry_their_issuers` created its keychain at a path with the process id and deleted it afterwards, so the next run's trust evaluation kept looking in the deleted file and built an empty chain, until trustd forgot it. The test failed every run after the first for a while. The keychain now lives at the same path every run, and a copy left by a killed run is deleted first. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: ffishman <20211677+ffishman@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>