Build 25 success
test on cli · 26c3860391 · queued 2026-09-17 16:44 UTC · finished 2026-09-17 16:47 UTC · ran 1m30s
setup
$ git clone ssh://git@127.0.0.1/krz/keycask.git (26c3860391)
step 1/1 set -eu
Fetching https://github.com/apple/swift-asn1.git from cache
Fetching https://github.com/apple/swift-argument-parser from cache
Fetching https://github.com/apple/swift-crypto 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.02s)
Fetched https://github.com/apple/swift-crypto from cache (0.04s)
Creating working copy for https://github.com/apple/swift-argument-parser
Creating working copy for https://github.com/apple/swift-asn1.git
Creating working copy for https://github.com/apple/swift-crypto
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]
[Provisioning 2 / 21]
[Pre-planning 1 / 478]
[Planning deferred tasks]
[Starting]
[87 / 547]
[94 / 556] SwiftASN1
[94 / 556] CCryptoBoringSSL
[97 / 556] ArgumentParserToolInfo
[102 / 556] CCryptoBoringSSL
[103 / 556] CCryptoBoringSSL
[104 / 556] CCryptoBoringSSL
[105 / 556] CCryptoBoringSSL
[106 / 556] CCryptoBoringSSL
[108 / 556] CCryptoBoringSSL
[109 / 556] CCryptoBoringSSL
[110 / 556] CCryptoBoringSSL
[112 / 556] CCryptoBoringSSL
[115 / 556] CCryptoBoringSSL
[118 / 556] CCryptoBoringSSL
[119 / 556] CCryptoBoringSSL
[122 / 556] SwiftASN1
[127 / 556] CCryptoBoringSSL
[128 / 556] CCryptoBoringSSL
[130 / 556] CCryptoBoringSSL
[131 / 556] CCryptoBoringSSL
[132 / 556] CCryptoBoringSSL
[133 / 556] CCryptoBoringSSL
[134 / 556] CCryptoBoringSSL
[135 / 556] CCryptoBoringSSL
[136 / 556] CCryptoBoringSSL
[137 / 556] CCryptoBoringSSL
[138 / 556] CCryptoBoringSSL
[141 / 556] CCryptoBoringSSL
[142 / 556] CCryptoBoringSSL
[144 / 556] CCryptoBoringSSL
[148 / 556] CCryptoBoringSSL
[153 / 556] CCryptoBoringSSL
[154 / 556] CCryptoBoringSSL
[158 / 556] CCryptoBoringSSL
[159 / 556] CCryptoBoringSSL
[162 / 556] CCryptoBoringSSL
[163 / 556] CCryptoBoringSSL
[166 / 556] CCryptoBoringSSL
[170 / 556] CCryptoBoringSSL
[171 / 556] CCryptoBoringSSL
[174 / 556] CCryptoBoringSSL
[176 / 556] CCryptoBoringSSL
[178 / 556] CCryptoBoringSSL
[180 / 556] CCryptoBoringSSL
[184 / 556] CCryptoBoringSSL
[187 / 556] CCryptoBoringSSL
[188 / 556] CCryptoBoringSSL
[189 / 556] CCryptoBoringSSL
[192 / 556] CCryptoBoringSSL
[193 / 556] CCryptoBoringSSL
[196 / 556] CCryptoBoringSSL
[199 / 556] CCryptoBoringSSL
[202 / 556] CCryptoBoringSSL
[206 / 556] CCryptoBoringSSL
[212 / 556] CCryptoBoringSSL
[217 / 556] CCryptoBoringSSL
[220 / 556] CCryptoBoringSSL
[227 / 556] CCryptoBoringSSL
[233 / 556] CCryptoBoringSSL
[235 / 556] CCryptoBoringSSL
[241 / 556] CCryptoBoringSSL
[244 / 556] CCryptoBoringSSL
[246 / 556] CCryptoBoringSSL
[250 / 556] CCryptoBoringSSL
[252 / 556] CCryptoBoringSSL
[255 / 556] CCryptoBoringSSL
[257 / 556] CCryptoBoringSSL
[259 / 556] CCryptoBoringSSL
[261 / 556] CCryptoBoringSSL
[264 / 556] CCryptoBoringSSL
[266 / 556] CCryptoBoringSSL
[267 / 556] CCryptoBoringSSL
[269 / 556] CCryptoBoringSSL
[271 / 556] CCryptoBoringSSL
[273 / 556] CCryptoBoringSSL
[274 / 556] CCryptoBoringSSL
[277 / 556] CCryptoBoringSSL
[278 / 556] CCryptoBoringSSL
[279 / 556] CCryptoBoringSSL
[283 / 556] CCryptoBoringSSL
[287 / 556] CCryptoBoringSSL
[293 / 556] CCryptoBoringSSL
[294 / 556] CCryptoBoringSSL
[295 / 556] CCryptoBoringSSL
[296 / 556] CCryptoBoringSSL
[301 / 556] CCryptoBoringSSL
[303 / 556] CCryptoBoringSSL
[306 / 556] CCryptoBoringSSL
[307 / 556] CCryptoBoringSSL
[309 / 556] CCryptoBoringSSL
[312 / 556] CCryptoBoringSSL
[316 / 556] CCryptoBoringSSL
[325 / 556] CCryptoBoringSSL
[330 / 556] CCryptoBoringSSL
[334 / 556] CCryptoBoringSSL
[338 / 556] CCryptoBoringSSL
[340 / 556] CCryptoBoringSSL
[343 / 556] CCryptoBoringSSL
[344 / 556] CCryptoBoringSSL
[346 / 556] CCryptoBoringSSL
[347 / 556] CCryptoBoringSSL
[350 / 556] CCryptoBoringSSL
[351 / 556] CCryptoBoringSSL
[354 / 556] CCryptoBoringSSL
[355 / 556] CCryptoBoringSSL
[357 / 556] CCryptoBoringSSL
[360 / 556] CCryptoBoringSSL
[361 / 556] CCryptoBoringSSL
[364 / 556] CCryptoBoringSSL
[365 / 556] CCryptoBoringSSL
[367 / 556] CCryptoBoringSSL
[369 / 556] CCryptoBoringSSL
[370 / 556] CCryptoBoringSSL
[371 / 556] CCryptoBoringSSL
[372 / 556] CCryptoBoringSSL
[375 / 556] CCryptoBoringSSL
[377 / 556] CCryptoBoringSSL
[378 / 556] CCryptoBoringSSL
[380 / 556] CCryptoBoringSSL
[382 / 556] CCryptoBoringSSL
[384 / 556] CCryptoBoringSSL
[386 / 556] CCryptoBoringSSL
[388 / 556] CCryptoBoringSSL
[394 / 556] CCryptoBoringSSL
[398 / 556] CCryptoBoringSSL
[402 / 556] CCryptoBoringSSL
[405 / 556] CCryptoBoringSSL
[408 / 556] CCryptoBoringSSL
[410 / 556] CCryptoBoringSSL
[415 / 556] CCryptoBoringSSL
[418 / 556] CCryptoBoringSSL
[421 / 556] CCryptoBoringSSL
[425 / 556] CCryptoBoringSSL
[430 / 556] CCryptoBoringSSL
[433 / 556] CCryptoBoringSSL
[438 / 556] CCryptoBoringSSL
[441 / 556] CCryptoBoringSSL
[447 / 556] CCryptoBoringSSL
[451 / 556] CCryptoBoringSSL
[453 / 556] CCryptoBoringSSL
[455 / 556] CCryptoBoringSSL
[456 / 556] CCryptoBoringSSL
[457 / 556] CCryptoBoringSSL
[459 / 556] CCryptoBoringSSL
[460 / 556] CCryptoBoringSSL
[462 / 556] CCryptoBoringSSL
[465 / 556] CCryptoBoringSSL
[467 / 556] CCryptoBoringSSL
[468 / 556] CCryptoBoringSSL
[469 / 556] SwiftASN1
[470 / 556] SwiftASN1-product
[471 / 556] SwiftASN1-product
[472 / 556] SwiftASN1-product
[473 / 556] ArgumentParser
[476 / 562] CryptoBoringWrapper
[477 / 562] ArgumentParserToolInfo
[479 / 563] CryptoBoringWrapper
[480 / 564] SwiftASN1
[489 / 564] SwiftASN1
[491 / 564]
[494 / 570] Crypto
[496 / 570] Crypto
[497 / 571] CryptoBoringWrapper
[504 / 571] _CryptoExtras
[507 / 577] _CryptoExtras
[509 / 577] _CryptoExtras
[509 / 577] Crypto
[512 / 579] ArgumentParser
[519 / 584] _CryptoExtras-product
[520 / 584] _CryptoExtras-product
[523 / 584] ArgumentParser
[524 / 584] _CryptoExtras
[531 / 585] CCryptoBoringSSLShims
[534 / 591] KeycaskCore
[535 / 591] KeycaskCore
[537 / 591] KeycaskCore
[538 / 591] KeycaskCore
[546 / 597] keycask-product
[547 / 598] keycask-product
[549 / 598] keycask-product
[554 / 604] keycask
[555 / 605] keycask
[556 / 605] keycask-product
[558 / 606] keycask
[564 / 606] ArgumentParser
[569 / 607]
[572 / 612] KeycaskCoreTests-product
[573 / 612] KeycaskCoreTests-product
[574 / 613] keycask
[580 / 613] KeycaskCoreTests-product
[583 / 619] CryptoBoringWrapper
[585 / 619] KeycaskCLITests-product
[586 / 619] KeycaskCLITests-product
[587 / 619] KeycaskCLITests-product
[591 / 619] KeycaskCLITests-product
[595 / 620] ArgumentParser-product
[596 / 620] Crypto-product
[600 / 620] keycask
[601 / 620] KeycaskCoreTests-product
[605 / 623]
[609 / 624] KeycaskCoreTests-test-runner
[613 / 624] KeycaskCoreTests-test-runner
[613 / 624] KeycaskCLITests-product
[617 / 625] KeycaskCLITests-product
[621 / 628] KeycaskCLITests-test-runner
[626 / 629] KeycaskCLITests-test-runner
[629 / 629] KeycaskCLITests-test-runner
Build complete! (52.20 secs)
Test Suite 'All tests' started at 2026-09-17 16:46:54.928
Test Suite 'Debug-linux-x86_64.xctest' started at 2026-09-17 16:46:54.930
Test Suite 'Debug-linux-x86_64.xctest' passed at 2026-09-17 16:46:54.930
Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Test Suite 'All tests' passed at 2026-09-17 16:46:54.930
Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Test Suite 'All tests' started at 2026-09-17 16:46:54.940
Test Suite 'Debug-linux-x86_64.xctest' started at 2026-09-17 16:46:54.941
Test Suite 'Debug-linux-x86_64.xctest' passed at 2026-09-17 16:46:54.941
Executed 0 tests, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Test Suite 'All tests' passed at 2026-09-17 16:46:54.941
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 EntryTests started.
◇ Suite EnvelopeTests started.
◇ Suite KeycaskErrorTests started.
◇ Suite GeneratorTests started.
◇ Suite VaultTests started.
◇ Suite VaultCodecTests started.
◇ Test normalizeSortsCaseInsensitivelyAndKeepsFirstSpelling() started.
◇ Test hasTagIsCaseInsensitive() started.
◇ Suite EntryIDTests started.
◇ Test initNormalizesTagsAndTruncatesDates() started.
◇ Test malformedInputsAreCorrupt() started.
◇ Test tamperedBoxCannotDecrypt() started.
◇ Test freshParamsUseDefaults() started.
◇ Test wrongPassphraseCannotDecrypt() started.
◇ Test pbkdf2MatchesPublishedVectors() started.
◇ Test matchesSearchesEveryTextFieldExceptPassword() started.
◇ Test sealThenOpenRoundTrips() started.
◇ Test outOfRangeIterationsAreCorrupt() started.
◇ Test exitCodesFollowTheSpec() started.
◇ Test passphraseIsNFCNormalized() started.
◇ Test encodedShapeMatchesTheSpec() started.
◇ Test nonceIsFreshAndSaltIsKept() started.
◇ Test seededOutputIsReproducible() started.
◇ Test ambiguousListsCandidateIDs() started.
◇ Test messagesNameTheSubject() started.
◇ Test wordlistHas7776UniqueWords() started.
◇ Test addRejectsDuplicateID() started.
◇ Test resolveUnknownIsNotFound() started.
◇ Test passphraseUsesWordsFromTheList() started.
◇ Test removeUnknownIsNotFound() started.
◇ Test sortedEntriesOrderByNameThenID() started.
◇ Test alphabetCoversAllClasses() started.
◇ Test passwordHasRequestedLengthFromTheAlphabet() started.
◇ Test updateSetsUpdatedAndNormalizesTags() started.
◇ Test resolvePrefersIDThenUniqueName() started.
◇ Test roundTripsAndIsDeterministic() started.
◇ Test addNormalizesTagsSetAfterInit() started.
◇ Test filterAndSearch() started.
◇ Test datesAreISO8601WholeSeconds() started.
◇ Test keysAreSorted() started.
◇ Test resolveReportsAmbiguousWithAllCandidates() started.
◇ Test garbageIsCorrupt() started.
◇ Test codableIsABareString() started.
◇ Test alphabetExcludesAmbiguousCharacters() started.
◇ Test randomIDsHaveLengthEightFromTheAlphabet() started.
◇ Test seededGeneratorIsDeterministic() started.
◇ Test parsingValidatesLengthAndAlphabet() started.
✔ Test hasTagIsCaseInsensitive() passed after 0.014 seconds.
✔ Test normalizeSortsCaseInsensitivelyAndKeepsFirstSpelling() passed after 0.014 seconds.
✔ Test initNormalizesTagsAndTruncatesDates() passed after 0.014 seconds.
✔ Test freshParamsUseDefaults() passed after 0.014 seconds.
✔ Test wrongPassphraseCannotDecrypt() passed after 0.014 seconds.
✔ Test tamperedBoxCannotDecrypt() passed after 0.014 seconds.
✔ Test pbkdf2MatchesPublishedVectors() passed after 0.014 seconds.
✔ Test matchesSearchesEveryTextFieldExceptPassword() passed after 0.014 seconds.
✔ Test exitCodesFollowTheSpec() passed after 0.013 seconds.
✔ Test outOfRangeIterationsAreCorrupt() passed after 0.014 seconds.
✔ Test sealThenOpenRoundTrips() passed after 0.014 seconds.
✔ Test passphraseIsNFCNormalized() passed after 0.014 seconds.
✔ Test encodedShapeMatchesTheSpec() passed after 0.014 seconds.
✔ Test ambiguousListsCandidateIDs() passed after 0.013 seconds.
✔ Test nonceIsFreshAndSaltIsKept() passed after 0.014 seconds.
✔ Test messagesNameTheSubject() passed after 0.013 seconds.
✔ Test addRejectsDuplicateID() passed after 0.013 seconds.
✔ Test resolveUnknownIsNotFound() passed after 0.013 seconds.
✔ Test malformedInputsAreCorrupt() passed after 0.014 seconds.
✔ Test removeUnknownIsNotFound() passed after 0.013 seconds.
✔ Test alphabetCoversAllClasses() passed after 0.013 seconds.
✔ Test passwordHasRequestedLengthFromTheAlphabet() passed after 0.014 seconds.
✔ Test updateSetsUpdatedAndNormalizesTags() passed after 0.013 seconds.
✔ Test resolvePrefersIDThenUniqueName() passed after 0.013 seconds.
✔ Test roundTripsAndIsDeterministic() passed after 0.013 seconds.
✔ Test addNormalizesTagsSetAfterInit() passed after 0.013 seconds.
✔ Test filterAndSearch() passed after 0.013 seconds.
✔ Test datesAreISO8601WholeSeconds() passed after 0.013 seconds.
✔ Test keysAreSorted() passed after 0.013 seconds.
✔ Test resolveReportsAmbiguousWithAllCandidates() passed after 0.013 seconds.
✔ Test garbageIsCorrupt() passed after 0.014 seconds.
✔ Test sortedEntriesOrderByNameThenID() passed after 0.014 seconds.
✔ Test seededOutputIsReproducible() passed after 0.014 seconds.
✔ Test passphraseUsesWordsFromTheList() passed after 0.014 seconds.
✔ Test alphabetExcludesAmbiguousCharacters() passed after 0.001 seconds.
✔ Test seededGeneratorIsDeterministic() passed after 0.001 seconds.
✔ Test codableIsABareString() passed after 0.001 seconds.
✔ Test parsingValidatesLengthAndAlphabet() passed after 0.001 seconds.
✔ Suite EntryTests passed after 0.015 seconds.
✔ Suite EnvelopeTests passed after 0.015 seconds.
✔ Suite KeycaskErrorTests passed after 0.015 seconds.
✔ Suite VaultCodecTests passed after 0.015 seconds.
✔ Suite VaultTests passed after 0.015 seconds.
✔ Test randomIDsHaveLengthEightFromTheAlphabet() passed after 0.004 seconds.
✔ Suite EntryIDTests passed after 0.018 seconds.
✔ Test wordlistHas7776UniqueWords() passed after 0.019 seconds.
✔ Suite GeneratorTests passed after 0.020 seconds.
✔ Test run with 40 tests in 7 suites passed after 0.020 seconds.
◇ Test run started.
↳ Testing Library Version: 6.4 (efd8d65801f569d)
↳ Target Platform: x86_64-unknown-linux-gnu
◇ Suite GenerateTests started.
◇ Suite InitTests started.
◇ Suite ClipboardTests started.
◇ Suite LsFindTests started.
◇ Suite PathsTests started.
◇ Suite EditRmTests started.
◇ Suite AddShowTests started.
◇ Test lsJsonIsAnArrayWithMaskedPasswords() started.
◇ Test lsSortsByNameAndShowsColumns() started.
◇ Test findJson() started.
◇ Test handoffRoundTrips() started.
◇ Test daemonWithoutHandoffFails() started.
◇ Test findToolScansPathInOrder() started.
◇ Test clipOfMissingEntryIsNotFoundBeforeTouchingClipboard() started.
◇ Test restoresOnlyWhenClipboardStillHoldsTheSecret() started.
◇ Test daemonIsHiddenFromHelp() started.
◇ Test lsTagFilterIsCaseInsensitive() started.
◇ Test emptyVaultListsNothing() started.
◇ Test findMatchesNotesURLTagsCaseInsensitively() started.
◇ Test emptyPassphraseIsRejected() started.
◇ Test lengthAndWordsTogetherIsUsageError() started.
◇ Test defaultIs24Characters() started.
◇ Test lengthAndWords() started.
◇ Test initCreatesVaultAndPrintsPath() started.
◇ Test unknownSubcommandIsUsageError() started.
◇ Test vaultFlagBeatsEnvironment() started.
◇ Test noTempFileLeftBehind() started.
◇ Test doesNotNeedAVault() started.
◇ Test initRefusesExistingVault() started.
◇ Test helpExitsZero() started.
◇ Test vaultIsPrivateOnUnix() started.
◇ Test environmentVariableWinsOverDefaults() started.
◇ Test initWithoutPassphraseOrTTYIsUsageError() started.
◇ Test overrideWinsOverEverything() started.
◇ Test homeFallback() started.
◇ Test editPasswordFromStdinAndGenerate() started.
◇ Test rmAmbiguousNameLists() started.
◇ Test xdgDataHomeIsUsedWhenSet() started.
◇ Test rmWithoutYesAndWithoutTTYIsUsageError() started.
◇ Test editWithNoChangesIsUsageError() started.
◇ Test editUnknownIsNotFound() started.
◇ Test rmWithYesRemoves() started.
◇ Test editChangesFieldsAndBumpsUpdated() started.
◇ Test addGenerateAndWords() started.
◇ Test showByNameRevealAndField() started.
◇ Test missingEntryIsNotFound() started.
◇ Test corruptVaultIsFailure() started.
◇ Test duplicateNamesAreAllowedAndAmbiguousOnShow() started.
◇ Test generateAndWordsTogetherIsUsageError() started.
◇ Test jsonMasksUnlessReveal() started.
◇ Test missingVaultIsNotFound() started.
◇ Test wrongPassphraseCannotDecrypt() started.
◇ Test addReadsPasswordFromStdinAndPrintsID() started.
✔ Test handoffRoundTrips() passed after 7.549 seconds.
✔ Test daemonWithoutHandoffFails() passed after 7.549 seconds.
✔ Test findToolScansPathInOrder() passed after 8.105 seconds.
✔ Test restoresOnlyWhenClipboardStillHoldsTheSecret() passed after 8.105 seconds.
✔ Test clipOfMissingEntryIsNotFoundBeforeTouchingClipboard() passed after 8.105 seconds.
✔ Test daemonIsHiddenFromHelp() passed after 9.460 seconds.
✔ Test lsJsonIsAnArrayWithMaskedPasswords() passed after 9.460 seconds.
✔ Test lsSortsByNameAndShowsColumns() passed after 9.976 seconds.
✔ Test findJson() passed after 11.439 seconds.
✔ Test emptyPassphraseIsRejected() passed after 11.439 seconds.
✔ Test lengthAndWordsTogetherIsUsageError() passed after 11.439 seconds.
✔ Test defaultIs24Characters() passed after 11.439 seconds.
✔ Test lengthAndWords() passed after 11.439 seconds.
✔ Test initCreatesVaultAndPrintsPath() passed after 11.439 seconds.
✔ Test unknownSubcommandIsUsageError() passed after 11.439 seconds.
✔ Test lsTagFilterIsCaseInsensitive() passed after 11.439 seconds.
✔ Test emptyVaultListsNothing() passed after 11.439 seconds.
✔ Test doesNotNeedAVault() passed after 11.439 seconds.
✔ Test noTempFileLeftBehind() passed after 11.439 seconds.
✔ Test vaultFlagBeatsEnvironment() passed after 11.439 seconds.
✔ Test helpExitsZero() passed after 11.439 seconds.
✔ Test environmentVariableWinsOverDefaults() passed after 11.439 seconds.
✔ Test initWithoutPassphraseOrTTYIsUsageError() passed after 11.439 seconds.
✔ Test overrideWinsOverEverything() passed after 11.439 seconds.
✔ Test homeFallback() passed after 11.439 seconds.
✔ Test vaultIsPrivateOnUnix() passed after 11.439 seconds.
✔ Test initRefusesExistingVault() passed after 11.439 seconds.
✔ Test xdgDataHomeIsUsedWhenSet() passed after 11.439 seconds.
✔ Test rmWithoutYesAndWithoutTTYIsUsageError() passed after 11.439 seconds.
✔ Test rmAmbiguousNameLists() passed after 11.439 seconds.
✔ Test findMatchesNotesURLTagsCaseInsensitively() passed after 11.439 seconds.
✔ Test editPasswordFromStdinAndGenerate() passed after 11.439 seconds.
✔ Test editUnknownIsNotFound() passed after 11.439 seconds.
✔ Test editWithNoChangesIsUsageError() passed after 11.439 seconds.
✔ Test rmWithYesRemoves() passed after 11.439 seconds.
✔ Test missingEntryIsNotFound() passed after 10.694 seconds.
✔ Test corruptVaultIsFailure() passed after 8.646 seconds.
✔ Test editChangesFieldsAndBumpsUpdated() passed after 11.439 seconds.
✔ Test generateAndWordsTogetherIsUsageError() passed after 8.505 seconds.
✔ Test showByNameRevealAndField() passed after 10.694 seconds.
✔ Test missingVaultIsNotFound() passed after 8.505 seconds.
✔ Test addGenerateAndWords() passed after 11.411 seconds.
✔ Test wrongPassphraseCannotDecrypt() passed after 8.505 seconds.
✔ Suite ClipboardTests passed after 11.440 seconds.
✔ Suite LsFindTests passed after 11.440 seconds.
✔ Suite InitTests passed after 11.440 seconds.
✔ Suite GenerateTests passed after 11.440 seconds.
✔ Suite PathsTests passed after 11.440 seconds.
✔ Suite EditRmTests passed after 11.440 seconds.
✔ Test jsonMasksUnlessReveal() passed after 9.175 seconds.
✔ Test duplicateNamesAreAllowedAndAmbiguousOnShow() passed after 9.443 seconds.
✔ Test addReadsPasswordFromStdinAndPrintsID() passed after 9.557 seconds.
✔ Suite AddShowTests passed after 12.492 seconds.
✔ Test run with 46 tests in 7 suites passed after 12.493 seconds.