Coverage report: 99.754%

Files Functions Classes

coverage.py v7.6.0, created at 2024-07-14 11:39 +0200

File function statements missing excluded branches partial coverage
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%
Total   1489 0 39 540 5 99.754%

No items found using the specified filter.