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
+5 -1
View File
@@ -52,8 +52,12 @@ func runSecretWithStdin(stdin string, env map[string]string, args ...string) (st
return cli.ExecuteCommandInProcess(args, stdin, env)
}
// TestMain runs before all tests and ensures the binary is built
// TestMain runs before all tests and ensures the binary is built. It also
// makes passphrase encryption in the tests cheap (see
// secret.ScryptWorkFactor); the binary keeps age's work factor.
func TestMain(m *testing.M) {
secret.ScryptWorkFactor = 1
// Get the current working directory
wd, err := os.Getwd()
if err != nil {