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
+9
View File
@@ -3,6 +3,7 @@ package vault_test
import (
"bytes"
"errors"
"os"
"path/filepath"
"slices"
"testing"
@@ -28,6 +29,14 @@ const (
testPassphrase = "test-passphrase"
)
// TestMain makes passphrase encryption in the tests cheap; see
// secret.ScryptWorkFactor.
func TestMain(m *testing.M) {
secret.ScryptWorkFactor = 1
os.Exit(m.Run())
}
// testMnemonicBuffer returns testMnemonic in a locked buffer that is
// destroyed when the test ends.
func testMnemonicBuffer(t *testing.T) *memguard.LockedBuffer {