Build 27 success

test on cli · c13fbd3519 · queued 2026-09-18 01:27 UTC · finished 2026-09-18 01:34 UTC · ran 1m28s

setup
$ git clone ssh://git@127.0.0.1/krz/keycask.git (c13fbd3519)
step 1/1 set -eu
Fetching https://github.com/apple/swift-asn1.git from cache
Fetching https://github.com/apple/swift-crypto from cache
Fetching https://github.com/apple/swift-argument-parser from cache
Fetched https://github.com/apple/swift-asn1.git from cache (0.01s)
Fetched https://github.com/apple/swift-argument-parser from cache (0.01s)
Fetched https://github.com/apple/swift-crypto from cache (0.03s)
Creating working copy for https://github.com/apple/swift-argument-parser
Creating working copy for https://github.com/apple/swift-crypto
Creating working copy for https://github.com/apple/swift-asn1.git
Working copy of https://github.com/apple/swift-asn1.git resolved at 1.7.2
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.8.2
Working copy of https://github.com/apple/swift-crypto resolved at 3.15.1
Building for debugging...
[Computing dependencies]
[Constructing description]
[Pre-planning 1 / 478]
[Planning deferred tasks]
[94 / 557] CryptoBoringWrapper
[95 / 562] SwiftASN1
[95 / 562] CCryptoBoringSSL
[97 / 562] CCryptoBoringSSL
[98 / 562] ArgumentParserToolInfo
[99 / 562] CCryptoBoringSSL
[105 / 562] CCryptoBoringSSL
[107 / 562] CCryptoBoringSSL
[107 / 562] CryptoBoringWrapper
[108 / 562] CCryptoBoringSSL
[115 / 562] CCryptoBoringSSL
[117 / 562] CCryptoBoringSSL
[127 / 562] CCryptoBoringSSL
[131 / 562] CCryptoBoringSSL
[132 / 562] CCryptoBoringSSL
[134 / 562] CCryptoBoringSSL
[136 / 562] CCryptoBoringSSL
[138 / 562] CCryptoBoringSSL
[139 / 562] CCryptoBoringSSL
[140 / 562] CCryptoBoringSSL
[142 / 562] CCryptoBoringSSL
[143 / 562] CCryptoBoringSSL
[145 / 562] CCryptoBoringSSL
[147 / 562] CCryptoBoringSSL
[150 / 562] CCryptoBoringSSL
[153 / 562] CCryptoBoringSSL
[161 / 562] CCryptoBoringSSL
[162 / 562] CCryptoBoringSSL
[163 / 562] CCryptoBoringSSL
[166 / 562] CCryptoBoringSSL
[167 / 562] CCryptoBoringSSL
[169 / 562] CCryptoBoringSSL
[170 / 562] CCryptoBoringSSL
[173 / 562] CCryptoBoringSSL
[174 / 562] CCryptoBoringSSL
[177 / 562] CCryptoBoringSSL
[178 / 562] CCryptoBoringSSL
[180 / 562] CCryptoBoringSSL
[182 / 562] CCryptoBoringSSL
[183 / 562] CCryptoBoringSSL
[186 / 562] CCryptoBoringSSL
[187 / 562] CCryptoBoringSSL
[189 / 562] CCryptoBoringSSL
[191 / 562] CCryptoBoringSSL
[193 / 562] CCryptoBoringSSL
[194 / 562] CCryptoBoringSSL
[198 / 562] CCryptoBoringSSL
[199 / 562] CCryptoBoringSSL
[200 / 562] CCryptoBoringSSL
[202 / 562] CCryptoBoringSSL
[204 / 562] CCryptoBoringSSL
[205 / 562] CCryptoBoringSSL
[207 / 562] CCryptoBoringSSL
[210 / 562] CCryptoBoringSSL
[213 / 562] CCryptoBoringSSL
[219 / 562] CCryptoBoringSSL
[224 / 562] CCryptoBoringSSL
[230 / 562] CCryptoBoringSSL
[237 / 562] CCryptoBoringSSL
[241 / 562] CCryptoBoringSSL
[244 / 562] CCryptoBoringSSL
[248 / 562] CCryptoBoringSSL
[249 / 562] CCryptoBoringSSL
[252 / 562] CCryptoBoringSSL
[254 / 562] CCryptoBoringSSL
[257 / 562] CCryptoBoringSSL
[258 / 562] CCryptoBoringSSL
[261 / 562] CCryptoBoringSSL
[263 / 562] CCryptoBoringSSL
[265 / 562] CCryptoBoringSSL
[266 / 562] CCryptoBoringSSL
[267 / 562] CCryptoBoringSSL
[269 / 562] CCryptoBoringSSL
[270 / 562] CCryptoBoringSSL
[271 / 562] CCryptoBoringSSL
[272 / 562] CCryptoBoringSSL
[273 / 562] CCryptoBoringSSL
[276 / 562] CCryptoBoringSSL
[279 / 562] CCryptoBoringSSL
[280 / 562] CCryptoBoringSSL
[282 / 562] CCryptoBoringSSL
[284 / 562] CCryptoBoringSSL
[286 / 562] CCryptoBoringSSL
[289 / 562] CCryptoBoringSSL
[292 / 562] CCryptoBoringSSL
[296 / 562] CCryptoBoringSSL
[301 / 562] CCryptoBoringSSL
[302 / 562] CCryptoBoringSSL
[306 / 562] CCryptoBoringSSL
[310 / 562] CCryptoBoringSSL
[313 / 562] CCryptoBoringSSL
[316 / 562] CCryptoBoringSSL
[318 / 562] CCryptoBoringSSL
[322 / 562] CCryptoBoringSSL
[328 / 562] CCryptoBoringSSL
[335 / 562] CCryptoBoringSSL
[338 / 562] CCryptoBoringSSL
[341 / 562] CCryptoBoringSSL
[347 / 562] CCryptoBoringSSL
[348 / 562] CCryptoBoringSSL
[351 / 562] CCryptoBoringSSL
[352 / 562] CCryptoBoringSSL
[354 / 562] CCryptoBoringSSL
[355 / 562] CCryptoBoringSSL
[357 / 562] CCryptoBoringSSL
[358 / 562] CCryptoBoringSSL
[362 / 562] CCryptoBoringSSL
[363 / 562] CCryptoBoringSSL
[365 / 562] CCryptoBoringSSL
[367 / 562] CCryptoBoringSSL
[369 / 562] CCryptoBoringSSL
[371 / 562] CCryptoBoringSSL
[373 / 562] CCryptoBoringSSL
[375 / 562] CCryptoBoringSSL
[378 / 562] CCryptoBoringSSL
[380 / 562] CCryptoBoringSSL
[382 / 562] CCryptoBoringSSL
[383 / 562] CCryptoBoringSSL
[386 / 562] CCryptoBoringSSL
[389 / 562] CCryptoBoringSSL
[390 / 562] CCryptoBoringSSL
[394 / 562] CCryptoBoringSSL
[396 / 562] CCryptoBoringSSL
[398 / 562] CCryptoBoringSSL
[404 / 562] CCryptoBoringSSL
[409 / 562] CCryptoBoringSSL
[414 / 562] CCryptoBoringSSL
[417 / 562] CCryptoBoringSSL
[421 / 562] CCryptoBoringSSL
[426 / 562] CCryptoBoringSSL
[428 / 562] CCryptoBoringSSL
[430 / 562] CCryptoBoringSSL
[433 / 562] CCryptoBoringSSL
[438 / 562] CCryptoBoringSSL
[441 / 562] CCryptoBoringSSL
[445 / 562] CCryptoBoringSSL
[450 / 562] CCryptoBoringSSL
[453 / 562] CCryptoBoringSSL
[457 / 562] CCryptoBoringSSL
[460 / 562] CCryptoBoringSSL
[461 / 562] CCryptoBoringSSL
[462 / 562] CCryptoBoringSSL
[464 / 562] CCryptoBoringSSL
[467 / 562] CCryptoBoringSSL
[469 / 562] CCryptoBoringSSL
[473 / 562] CCryptoBoringSSL
[475 / 562] CCryptoBoringSSL
[476 / 562] CCryptoBoringSSL
[477 / 562] SwiftASN1-product
[478 / 562] CCryptoBoringSSL
[479 / 562] SwiftASN1-product
[481 / 562] CryptoBoringWrapper
[483 / 562] CryptoBoringWrapper
[484 / 562] CryptoBoringWrapper
[486 / 563] SwiftASN1
[489 / 564] CCryptoBoringSSL
[494 / 570] ArgumentParserToolInfo
[497 / 571] Crypto
[505 / 571] _CryptoExtras
[507 / 573]
[510 / 583] _CryptoExtras
[511 / 583] _CryptoExtras
[513 / 583] _CryptoExtras
[522 / 583] _CryptoExtras-product
[523 / 584] _CryptoExtras-product
[525 / 584] KeycaskCore
[527 / 584] ArgumentParser-product
[528 / 584] ArgumentParser-product
[530 / 585] _CryptoExtras
[534 / 591] KeycaskCore
[535 / 591] KeycaskCore
[536 / 591] KeycaskCore
[538 / 591] KeycaskCore
[542 / 591] KeycaskCore
[545 / 594] keycask-product
[550 / 605] keycask
[551 / 605] keycask
[555 / 605] keycask
[559 / 605] keycask
[561 / 605] keycask
[562 / 606] keycask-product
[563 / 606] KeycaskCore
[572 / 612] KeycaskCoreTests-product
[573 / 612] KeycaskCoreTests-product
[574 / 613] keycask
[580 / 613] KeycaskCoreTests-product
[581 / 613] ArgumentParser
[584 / 619] KeycaskCLITests-product
[585 / 619] KeycaskCLITests-product
[586 / 619] KeycaskCLITests-product
[587 / 619] KeycaskCLITests-product
[589 / 620] KeycaskCLITests-product
/workspace/Tests/KeycaskCLITests/InitTests.swift:72:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 70 |             let cli = try CLI()
 71 |             let temp = cli.dir.appendingPathComponent("vault.kc.tmp")
 72 |             FileManager.default.createFile(
    |                                 `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 73 |                 atPath: temp.path, contents: Data(), attributes: [.posixPermissions: 0o644])
 74 | 

/workspace/Tests/KeycaskCLITests/InitTests.swift:86:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 84 |             let cli = try CLI()
 85 |             let victim = cli.dir.appendingPathComponent("victim.txt")
 86 |             FileManager.default.createFile(atPath: victim.path, contents: Data())
    |                                 `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
 87 |             let temp = cli.dir.appendingPathComponent("vault.kc.tmp")
 88 |             try FileManager.default.createSymbolicLink(at: temp, withDestinationURL: victim)

[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
[595 / 620] Crypto
[600 / 620] KeycaskCore-product
[601 / 620] KeycaskCLITests-product
[604 / 621] KeycaskCoreTests-product
[609 / 624] KeycaskCoreTests-test-runner
[614 / 625] KeycaskCoreTests-test-runner
[617 / 625] KeycaskCoreTests-test-runner
[621 / 628] KeycaskCLITests-test-runner
[626 / 629] KeycaskCLITests-test-runner
[629 / 629] KeycaskCLITests-test-runner
Build complete! (48.55 secs)
Test Suite 'All tests' started at 2026-09-18 01:34:31.232
Test Suite 'Debug-linux-x86_64.xctest' started at 2026-09-18 01:34:31.234
Test Suite 'Debug-linux-x86_64.xctest' passed at 2026-09-18 01:34:31.234
	 Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Test Suite 'All tests' passed at 2026-09-18 01:34:31.234
	 Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Test Suite 'All tests' started at 2026-09-18 01:34:31.243
Test Suite 'Debug-linux-x86_64.xctest' started at 2026-09-18 01:34:31.245
Test Suite 'Debug-linux-x86_64.xctest' passed at 2026-09-18 01:34:31.245
	 Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Test Suite 'All tests' passed at 2026-09-18 01:34:31.245
	 Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
◇ Test run started.
↳ Testing Library Version: 6.4 (efd8d65801f569d)
↳ Target Platform: x86_64-unknown-linux-gnu
◇ Suite VaultCodecTests started.
◇ Suite EntryTests started.
◇ Suite VaultTests started.
◇ Suite EnvelopeTests started.
◇ Suite GeneratorTests started.
◇ Suite EntryIDTests started.
◇ Suite KeycaskErrorTests started.
◇ Test garbageIsCorrupt() started.
◇ Test initNormalizesTagsAndTruncatesDates() started.
◇ Test hasTagIsCaseInsensitive() started.
◇ Test normalizeSortsCaseInsensitivelyAndKeepsFirstSpelling() started.
◇ Test roundTripsAndIsDeterministic() started.
◇ Test keysAreSorted() started.
◇ Test matchesSearchesEveryTextFieldExceptPassword() started.
◇ Test removeUnknownIsNotFound() started.
◇ Test datesAreISO8601WholeSeconds() started.
◇ Test addNormalizesTagsSetAfterInit() started.
◇ Test filterAndSearch() started.
◇ Test updateSetsUpdatedAndNormalizesTags() started.
◇ Test sortedEntriesOrderByNameThenID() started.
◇ Test resolvePrefersIDThenUniqueName() started.
◇ Test addRejectsDuplicateID() started.
◇ Test nonceIsFreshAndSaltIsKept() started.
◇ Test resolveReportsAmbiguousWithAllCandidates() started.
◇ Test pbkdf2MatchesPublishedVectors() started.
◇ Test resolveUnknownIsNotFound() started.
◇ Test wrongPassphraseCannotDecrypt() started.
◇ Test passphraseIsNFCNormalized() started.
◇ Test malformedInputsAreCorrupt() started.
◇ Test encodedShapeMatchesTheSpec() started.
◇ Test freshParamsUseDefaults() started.
◇ Test outOfRangeIterationsAreCorrupt() started.
◇ Test tamperedBoxCannotDecrypt() started.
◇ Test wordlistHas7776UniqueWords() started.
◇ Test passphraseUsesWordsFromTheList() started.
◇ Test seededOutputIsReproducible() started.
◇ Test alphabetCoversAllClasses() started.
◇ Test sealThenOpenRoundTrips() started.
◇ Test passwordHasRequestedLengthFromTheAlphabet() started.
◇ Test randomIDsHaveLengthEightFromTheAlphabet() started.
◇ Test seededGeneratorIsDeterministic() started.
◇ Test alphabetExcludesAmbiguousCharacters() started.
◇ Test codableIsABareString() started.
◇ Test parsingValidatesLengthAndAlphabet() started.
◇ Test exitCodesFollowTheSpec() started.
◇ Test ambiguousListsCandidateIDs() started.
◇ Test messagesNameTheSubject() started.
✔ Test normalizeSortsCaseInsensitivelyAndKeepsFirstSpelling() passed after 0.009 seconds.
✔ Test initNormalizesTagsAndTruncatesDates() passed after 0.009 seconds.
✔ Test hasTagIsCaseInsensitive() passed after 0.009 seconds.
✔ Test matchesSearchesEveryTextFieldExceptPassword() passed after 0.009 seconds.
✔ Test removeUnknownIsNotFound() passed after 0.009 seconds.
✔ Test garbageIsCorrupt() passed after 0.009 seconds.
✔ Test addNormalizesTagsSetAfterInit() passed after 0.009 seconds.
✔ Test filterAndSearch() passed after 0.009 seconds.
✔ Test updateSetsUpdatedAndNormalizesTags() passed after 0.009 seconds.
✔ Test sortedEntriesOrderByNameThenID() passed after 0.009 seconds.
✔ Test resolvePrefersIDThenUniqueName() passed after 0.009 seconds.
✔ Test datesAreISO8601WholeSeconds() passed after 0.009 seconds.
✔ Test keysAreSorted() passed after 0.009 seconds.
✔ Test addRejectsDuplicateID() passed after 0.009 seconds.
✔ Test roundTripsAndIsDeterministic() passed after 0.009 seconds.
✔ Test resolveUnknownIsNotFound() passed after 0.009 seconds.
✔ Test wrongPassphraseCannotDecrypt() passed after 0.009 seconds.
✔ Test nonceIsFreshAndSaltIsKept() passed after 0.009 seconds.
✔ Test resolveReportsAmbiguousWithAllCandidates() passed after 0.009 seconds.
✔ Test pbkdf2MatchesPublishedVectors() passed after 0.009 seconds.
✔ Test passphraseIsNFCNormalized() passed after 0.009 seconds.
✔ Test outOfRangeIterationsAreCorrupt() passed after 0.009 seconds.
✔ Test encodedShapeMatchesTheSpec() passed after 0.009 seconds.
✔ Test tamperedBoxCannotDecrypt() passed after 0.009 seconds.
✔ Test freshParamsUseDefaults() passed after 0.009 seconds.
✔ Test malformedInputsAreCorrupt() passed after 0.010 seconds.
✔ Test sealThenOpenRoundTrips() passed after 0.010 seconds.
✔ Test alphabetCoversAllClasses() passed after 0.010 seconds.
✔ Test passwordHasRequestedLengthFromTheAlphabet() passed after 0.010 seconds.
✔ Test seededOutputIsReproducible() passed after 0.010 seconds.
✔ Test passphraseUsesWordsFromTheList() passed after 0.010 seconds.
✔ Test seededGeneratorIsDeterministic() passed after 0.010 seconds.
✔ Test parsingValidatesLengthAndAlphabet() passed after 0.010 seconds.
✔ Test exitCodesFollowTheSpec() passed after 0.010 seconds.
✔ Test alphabetExcludesAmbiguousCharacters() passed after 0.010 seconds.
✔ Test messagesNameTheSubject() passed after 0.009 seconds.
✔ Test ambiguousListsCandidateIDs() passed after 0.009 seconds.
✔ Test codableIsABareString() passed after 0.010 seconds.
✔ Test randomIDsHaveLengthEightFromTheAlphabet() passed after 0.010 seconds.
✔ Suite EntryTests passed after 0.011 seconds.
✔ Suite VaultCodecTests passed after 0.011 seconds.
✔ Suite KeycaskErrorTests passed after 0.011 seconds.
✔ Suite VaultTests passed after 0.011 seconds.
✔ Suite EnvelopeTests passed after 0.011 seconds.
✔ Suite EntryIDTests passed after 0.011 seconds.
✔ Test wordlistHas7776UniqueWords() passed after 0.013 seconds.
✔ Suite GeneratorTests passed after 0.013 seconds.
✔ Test run with 40 tests in 7 suites passed after 0.014 seconds.
◇ Test run started.
↳ Testing Library Version: 6.4 (efd8d65801f569d)
↳ Target Platform: x86_64-unknown-linux-gnu
◇ Suite AddShowTests started.
◇ Suite GenerateTests started.
◇ Suite LsFindTests started.
◇ Suite InitTests started.
◇ Suite ClipboardTests started.
◇ Suite EditRmTests started.
◇ Suite PathsTests started.
◇ Test missingVaultIsNotFound() started.
◇ Test showByNameRevealAndField() started.
◇ Test generateAndWordsTogetherIsUsageError() started.
◇ Test corruptVaultIsFailure() started.
◇ Test defaultIs24Characters() started.
◇ Test lengthAndWordsTogetherIsUsageError() started.
◇ Test addGenerateAndWords() started.
◇ Test duplicateNamesAreAllowedAndAmbiguousOnShow() started.
◇ Test missingEntryIsNotFound() started.
◇ Test doesNotNeedAVault() started.
◇ Test lengthAndWords() started.
◇ Test wrongPassphraseCannotDecrypt() started.
◇ Test addWithoutPasswordSourceIsUsageError() started.
◇ Test addReadsPasswordFromStdinAndPrintsID() started.
◇ Test lengthWithWordsIsUsageError() started.
◇ Test jsonMasksUnlessReveal() started.
◇ Test lsJsonIsAnArrayWithMaskedPasswords() started.
◇ Test lsSortsByNameAndShowsColumns() started.
◇ Test findMatchesNotesURLTagsCaseInsensitively() started.
◇ Test emptyVaultListsNothing() started.
◇ Test helpExitsZero() started.
◇ Test lsTagFilterIsCaseInsensitive() started.
◇ Test vaultFlagBeatsEnvironment() started.
◇ Test symlinkedTempFileIsNotFollowed() started.
◇ Test emptyPassphraseIsRejected() started.
◇ Test findJson() started.
◇ Test initWithoutPassphraseOrTTYIsUsageError() started.
◇ Test unknownSubcommandIsUsageError() started.
◇ Test initRefusesExistingVault() started.
◇ Test vaultIsPrivateOnUnix() started.
◇ Test preExistingTempFileDoesNotWeakenPermissions() started.
◇ Test initCreatesVaultAndPrintsPath() started.
◇ Test daemonLeavesForeignContentAlone() started.
◇ Test noTempFileLeftBehind() started.
◇ Test clipCopiesTheFieldThroughTheTool() started.
◇ Test clipOfMissingEntryIsNotFoundBeforeTouchingClipboard() started.
◇ Test findToolScansPathInOrder() started.
◇ Test clearsOnlyWhenClipboardStillHoldsTheSecret() started.
◇ Test generateCopyWritesTheTool() started.
◇ Test daemonWithoutHandoffFails() started.
◇ Test daemonClearsWhenClipboardStillHoldsSecret() started.
◇ Test handoffRoundTrips() started.
◇ Test stripsOneTrailingNewline() started.
◇ Test daemonIsHiddenFromHelp() started.
◇ Test editPasswordFromStdinAndGenerate() started.
◇ Test rmAmbiguousNameLists() started.
◇ Test homeFallback() started.
◇ Test rmWithYesRemoves() started.
◇ Test environmentVariableWinsOverDefaults() started.
◇ Test overrideWinsOverEverything() started.
◇ Test editChangesFieldsAndBumpsUpdated() started.
◇ Test editWithNoChangesIsUsageError() started.
◇ Test xdgDataHomeIsUsedWhenSet() started.
◇ Test editUnknownIsNotFound() started.
◇ Test rmWithoutYesAndWithoutTTYIsUsageError() started.
✔ Test missingVaultIsNotFound() passed after 9.863 seconds.
✔ Test defaultIs24Characters() passed after 9.863 seconds.
✔ Test lengthAndWordsTogetherIsUsageError() passed after 9.863 seconds.
✔ Test corruptVaultIsFailure() passed after 9.863 seconds.
✔ Test generateAndWordsTogetherIsUsageError() passed after 9.863 seconds.
✔ Test doesNotNeedAVault() passed after 9.863 seconds.
✔ Test missingEntryIsNotFound() passed after 9.863 seconds.
✔ Test lengthAndWords() passed after 10.036 seconds.
✔ Test wrongPassphraseCannotDecrypt() passed after 10.340 seconds.
✔ Test showByNameRevealAndField() passed after 10.805 seconds.
✔ Test addWithoutPasswordSourceIsUsageError() passed after 10.805 seconds.
✔ Test duplicateNamesAreAllowedAndAmbiguousOnShow() passed after 13.451 seconds.
✔ Test lengthWithWordsIsUsageError() passed after 13.451 seconds.
✔ Test addGenerateAndWords() passed after 13.451 seconds.
✔ Test addReadsPasswordFromStdinAndPrintsID() passed after 13.451 seconds.
✔ Test jsonMasksUnlessReveal() passed after 13.451 seconds.
✔ Test emptyVaultListsNothing() passed after 13.451 seconds.
✔ Test lsJsonIsAnArrayWithMaskedPasswords() passed after 13.451 seconds.
✔ Test helpExitsZero() passed after 13.451 seconds.
✔ Test vaultFlagBeatsEnvironment() passed after 13.451 seconds.
✔ Test symlinkedTempFileIsNotFollowed() passed after 13.451 seconds.
✔ Test emptyPassphraseIsRejected() passed after 13.451 seconds.
✔ Test lsSortsByNameAndShowsColumns() passed after 13.451 seconds.
✔ Test initWithoutPassphraseOrTTYIsUsageError() passed after 13.451 seconds.
✔ Test unknownSubcommandIsUsageError() passed after 13.451 seconds.
✔ Test initRefusesExistingVault() passed after 13.451 seconds.
✔ Test vaultIsPrivateOnUnix() passed after 13.451 seconds.
✔ Test preExistingTempFileDoesNotWeakenPermissions() passed after 13.451 seconds.
✔ Test findMatchesNotesURLTagsCaseInsensitively() passed after 13.451 seconds.
✔ Test initCreatesVaultAndPrintsPath() passed after 13.451 seconds.
✔ Test lsTagFilterIsCaseInsensitive() passed after 13.451 seconds.
✔ Test noTempFileLeftBehind() passed after 13.451 seconds.
✔ Test daemonLeavesForeignContentAlone() passed after 13.451 seconds.
✔ Test findToolScansPathInOrder() passed after 13.451 seconds.
✔ Test clearsOnlyWhenClipboardStillHoldsTheSecret() passed after 13.451 seconds.
✔ Test generateCopyWritesTheTool() passed after 13.451 seconds.
✔ Test daemonWithoutHandoffFails() passed after 13.451 seconds.
✔ Test findJson() passed after 13.451 seconds.
✔ Test handoffRoundTrips() passed after 13.451 seconds.
✔ Test stripsOneTrailingNewline() passed after 13.451 seconds.
✔ Test daemonIsHiddenFromHelp() passed after 13.451 seconds.
✔ Test clipOfMissingEntryIsNotFoundBeforeTouchingClipboard() passed after 13.451 seconds.
✔ Test clipCopiesTheFieldThroughTheTool() passed after 13.451 seconds.
✔ Test homeFallback() passed after 11.515 seconds.
✔ Test daemonClearsWhenClipboardStillHoldsSecret() passed after 13.451 seconds.
✔ Test environmentVariableWinsOverDefaults() passed after 10.798 seconds.
✔ Test overrideWinsOverEverything() passed after 10.798 seconds.
✔ Test rmAmbiguousNameLists() passed after 12.238 seconds.
✔ Test rmWithYesRemoves() passed after 11.515 seconds.
✔ Test xdgDataHomeIsUsedWhenSet() passed after 10.741 seconds.
✔ Test editPasswordFromStdinAndGenerate() passed after 12.288 seconds.
✔ Test editChangesFieldsAndBumpsUpdated() passed after 10.742 seconds.
✔ Suite AddShowTests passed after 13.452 seconds.
✔ Suite GenerateTests passed after 13.452 seconds.
✔ Suite LsFindTests passed after 13.452 seconds.
✔ Suite InitTests passed after 13.452 seconds.
✔ Suite ClipboardTests passed after 13.452 seconds.
✔ Suite PathsTests passed after 13.452 seconds.
✔ Test editWithNoChangesIsUsageError() passed after 10.932 seconds.
✔ Test editUnknownIsNotFound() passed after 10.953 seconds.
✔ Test rmWithoutYesAndWithoutTTYIsUsageError() passed after 11.942 seconds.
✔ Suite EditRmTests passed after 14.653 seconds.
✔ Test run with 55 tests in 7 suites passed after 14.653 seconds.