Make the tests fast under the race detector (closes #120)
check / check (push) Successful in 1m37s

Deriving keys from passphrases with scrypt, slow on purpose, took most
of the test time under -race. secret.ScryptWorkFactor, when not zero,
replaces age's work factor when a passphrase encrypts; the tests of
internal/secret, internal/vault and internal/cli set it to 1 in
TestMain, and the program never sets it. Decryption reads the factor
from the encrypted data.

TestRemovalAsksWithoutHoldingLock and TestFailedCommandReleasesLock
wait at most 10 seconds for the in-memory lock all tests share, so they
no longer run in parallel with the tests that hold it.

The script/cibuild comment no longer says tests are skipped without
its memlock ulimit.

Model: opus-5-5
This commit is contained in:
2026-10-06 00:42:19 +00:00
parent df47ab386c
commit ac1422f359
8 changed files with 55 additions and 8 deletions
+11
View File
@@ -18,6 +18,17 @@ https://git.eeqj.de/sneak/secret/milestone/12
# Completed Steps
- 2026-10-06: The tests run quickly with the race detector on
(https://git.eeqj.de/sneak/secret/issues/120). Most of their time went to
deriving keys from passphrases with scrypt, which is slow on purpose. The new
`secret.ScryptWorkFactor`, when not zero, replaces age's scrypt work factor
when a passphrase encrypts; the tests of `internal/secret`, `internal/vault`
and `internal/cli` set it to 1 before any test runs, and the program never
sets it. `TestRemovalAsksWithoutHoldingLock` and
`TestFailedCommandReleasesLock` no longer run in parallel with other tests:
each waits at most 10 seconds for the in-memory lock that every test in the
package shares, and other tests' commands held it longer. The `script/cibuild`
comment no longer says that tests are skipped without its memlock ulimit.
- 2026-10-05: No test stores a secret larger than 1 MiB
(https://git.eeqj.de/sneak/secret/issues/52). The size tests for `secret add`,
`secret import` and the stdin buffer no longer try 2 MB, 10 MB, 99 MB, 100 MB