src/derivepassphrase/__init__.py |
Vault.__init__ |
18 |
0 |
0 |
6 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault.__init__.subtract_or_require |
6 |
0 |
0 |
6 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault._entropy |
8 |
0 |
0 |
7 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault._estimate_sufficient_hash_length |
8 |
0 |
0 |
2 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault._get_binary_string |
6 |
0 |
0 |
4 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault.create_hash |
4 |
0 |
0 |
0 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault.generate |
27 |
0 |
0 |
12 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault._is_suitable_ssh_key |
2 |
0 |
0 |
4 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault.phrase_from_key |
7 |
0 |
0 |
4 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
Vault._subtract |
13 |
0 |
0 |
6 |
0 |
100.000% |
src/derivepassphrase/__init__.py |
(no function) |
35 |
0 |
0 |
0 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_config_filename |
2 |
0 |
0 |
0 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_load_config |
6 |
0 |
0 |
4 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_save_config |
5 |
0 |
0 |
4 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_get_suitable_ssh_keys |
15 |
0 |
7 |
6 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_prompt_for_selection |
19 |
0 |
0 |
10 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_select_ssh_key |
11 |
0 |
0 |
2 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_prompt_for_passphrase |
1 |
0 |
0 |
0 |
0 |
100.000% |
src/derivepassphrase/cli.py |
OptionGroupOption.__init__ |
2 |
0 |
1 |
0 |
0 |
100.000% |
src/derivepassphrase/cli.py |
CommandWithHelpGroups.format_options |
24 |
0 |
0 |
16 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_validate_occurrence_constraint |
11 |
0 |
0 |
6 |
0 |
100.000% |
src/derivepassphrase/cli.py |
_validate_length |
11 |
0 |
0 |
6 |
0 |
100.000% |
src/derivepassphrase/cli.py |
derivepassphrase |
150 |
0 |
1 |
111 |
0 |
100.000% |
src/derivepassphrase/cli.py |
derivepassphrase.is_param_set |
1 |
0 |
0 |
0 |
0 |
100.000% |
src/derivepassphrase/cli.py |
derivepassphrase.check_incompatible_options |
13 |
0 |
0 |
10 |
0 |
100.000% |
src/derivepassphrase/cli.py |
derivepassphrase.get_config |
6 |
0 |
0 |
2 |
0 |
100.000% |
src/derivepassphrase/cli.py |
(no function) |
66 |
0 |
2 |
0 |
0 |
100.000% |
src/derivepassphrase/types.py |
is_vault_config |
32 |
0 |
0 |
34 |
4 |
93.939% |
src/derivepassphrase/types.py |
(no function) |
22 |
0 |
0 |
0 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin.__init__ |
11 |
0 |
0 |
2 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin.__init__.uint8_to_bits |
2 |
0 |
0 |
2 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin.__init__.gen |
6 |
0 |
0 |
6 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin._all_or_nothing_shift |
14 |
0 |
0 |
4 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin._big_endian_number |
14 |
0 |
0 |
8 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin.generate |
6 |
0 |
0 |
4 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin._generate_inner |
25 |
0 |
0 |
16 |
0 |
100.000% |
src/sequin/__init__.py |
Sequin._stash |
3 |
0 |
0 |
2 |
0 |
100.000% |
src/sequin/__init__.py |
(no function) |
16 |
0 |
0 |
0 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.__init__ |
11 |
0 |
2 |
4 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.__enter__ |
2 |
0 |
0 |
0 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.__exit__ |
1 |
0 |
0 |
0 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.uint32 |
1 |
0 |
0 |
0 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.string |
7 |
0 |
0 |
0 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.unstring |
6 |
0 |
0 |
4 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.unstring_prefix |
7 |
0 |
0 |
4 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.request |
11 |
0 |
0 |
4 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.list_keys |
16 |
0 |
0 |
6 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.list_keys.shift |
9 |
0 |
0 |
2 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
SSHAgentClient.sign |
11 |
0 |
0 |
8 |
0 |
100.000% |
src/ssh_agent_client/__init__.py |
(no function) |
29 |
0 |
0 |
0 |
0 |
100.000% |
src/ssh_agent_client/types.py |
(no function) |
13 |
0 |
0 |
0 |
0 |
100.000% |
tests/__init__.py |
list_keys |
4 |
0 |
0 |
4 |
0 |
100.000% |
tests/__init__.py |
list_keys_singleton |
3 |
0 |
0 |
2 |
0 |
100.000% |
tests/__init__.py |
suitable_ssh_keys |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/__init__.py |
phrase_from_key |
2 |
0 |
1 |
0 |
0 |
100.000% |
tests/__init__.py |
isolated_config |
10 |
0 |
0 |
4 |
0 |
100.000% |
tests/__init__.py |
auto_prompt |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/__init__.py |
(no function) |
37 |
0 |
7 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_200_basic_configuration |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_201_phrase_dependence |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_202_reproducibility_and_bytes_service_name |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_203_reproducibility_and_bytearray_service_name |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_210_nonstandard_length |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_211_repetition_limit |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_212_without_symbols |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_213_no_numbers |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_214_no_lowercase_letters |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_215_at_least_5_digits |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_216_lots_of_spaces |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_217_all_character_classes |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_218_only_numbers_and_very_high_repetition_limit |
4 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_219_very_limited_character_set |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_220_character_set_subtraction |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_221_entropy |
6 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_222_hash_length_estimation |
4 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_223_hash_length_expansion |
4 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_224_binary_strings |
10 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_310_too_many_symbols |
2 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_311_no_viable_characters |
2 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_320_character_set_subtraction_duplicate |
4 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_derivepassphrase.py |
TestVault.test_322_hash_length_estimation |
5 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_derivepassphrase.py |
(no function) |
37 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_200_help_output |
5 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_201_disable_character_set |
9 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_202_disable_repetition |
8 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_204a_key_from_config |
7 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_204b_key_from_command_line |
10 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_205_service_phrase_if_key_in_global_config |
8 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_210_invalid_argument_range |
6 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_211_service_needed |
15 |
0 |
0 |
8 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_212_incompatible_options |
5 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_213_import_bad_config_not_vault_config |
6 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_213a_import_bad_config_not_json_data |
6 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_213b_import_bad_config_not_a_file |
8 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_214_export_settings_no_stored_settings |
6 |
0 |
2 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_214a_export_settings_bad_stored_config |
6 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_214b_export_settings_not_a_file |
9 |
0 |
2 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_214c_export_settings_target_not_a_file |
7 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_220_edit_notes_successfully |
9 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_221_edit_notes_noop |
8 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_222_edit_notes_marker_removed |
8 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_223_edit_notes_abort |
10 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_224_store_config_good |
8 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_225_store_config_fail |
7 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_225a_store_config_fail_manual_no_ssh_key_selection |
8 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_225a_store_config_fail_manual_no_ssh_key_selection.raiser |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_226_no_arguments |
5 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLI.test_226a_no_passphrase_or_key |
5 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_100_save_bad_config |
4 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_101_prompt_for_selection_multiple |
9 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_101_prompt_for_selection_multiple.driver |
5 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_102_prompt_for_selection_single |
9 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_102_prompt_for_selection_single.driver |
6 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_103_prompt_for_passphrase |
6 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_203_repeated_config_deletion |
8 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_204_phrase_from_key_manually |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_210a_validate_constraints_manually |
3 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_cli.py |
TestCLIUtils.test_227_get_suitable_ssh_keys |
14 |
0 |
4 |
4 |
1 |
94.444% |
tests/test_derivepassphrase_cli.py |
(no function) |
101 |
0 |
0 |
10 |
0 |
100.000% |
tests/test_derivepassphrase_typing.py |
test_200_is_vault_config |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_derivepassphrase_typing.py |
(no function) |
6 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_sequin.py |
TestStaticFunctionality.test_200_big_endian_number |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_sequin.py |
TestStaticFunctionality.test_300_big_endian_number_exceptions |
2 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_sequin.py |
TestSequin.test_200_constructor |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_sequin.py |
TestSequin.test_201_generating |
12 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_sequin.py |
TestSequin.test_210_internal_generating |
12 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_sequin.py |
TestSequin.test_211_shifting |
9 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_sequin.py |
TestSequin.test_300_constructor_exceptions |
2 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_sequin.py |
(no function) |
16 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_100_key_decoding |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_200_constructor_no_running_agent |
4 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_210_uint32 |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_211_string |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_212_unstring |
4 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_310_uint32_exceptions |
3 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_311_string_exceptions |
3 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestStaticFunctionality.test_312_unstring_exceptions |
8 |
0 |
0 |
8 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_200_sign_data_via_agent |
17 |
0 |
4 |
4 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_201_sign_data_via_agent_unsupported |
14 |
0 |
6 |
6 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction._params |
8 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_210_ssh_key_selector |
20 |
0 |
0 |
6 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_210_ssh_key_selector.key_is_suitable |
1 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_210_ssh_key_selector.driver |
2 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_300_constructor_bad_running_agent |
4 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_310_truncated_server_response |
9 |
0 |
0 |
2 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_310_truncated_server_response.PseudoSocket.sendall |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_310_truncated_server_response.PseudoSocket.recv |
1 |
0 |
0 |
0 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_320_list_keys_error_responses |
4 |
0 |
0 |
4 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
TestAgentInteraction.test_330_sign_error_responses |
7 |
0 |
0 |
8 |
0 |
100.000% |
tests/test_ssh_agent_client.py |
(no function) |
50 |
0 |
0 |
4 |
0 |
100.000% |