Coverage report: 98.974%

Files Functions Classes

coverage.py v7.9.2, created at 2025-07-23 12:17 +0200

File function statements missing excluded branches partial coverage
src\derivepassphrase\__init__.py (no function) 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\__init__.py (no function) 5 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py shell_complete_path 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py is_completable_item 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py shell_complete_service 12 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__init__ 22 8 0 2 1 62.500%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__init__.lock_fd 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__init__.unlock_fd 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__init__.lock_func 6 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__init__.unlock_func 5 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__enter__ 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py ConfigurationMutex.__exit__ 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py configuration_mutex 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py get_tempdir 15 0 0 4 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py config_filename 10 0 3 2 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py load_config 6 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py migrate_and_load_old_config 11 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py save_config 7 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py load_user_config 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py get_suitable_ssh_keys 10 0 2 6 1 93.750%
src\derivepassphrase\_internals\cli_helpers.py prompt_for_selection 21 0 2 8 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_keyerror 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_keyerror.handle_keyerror 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_notimplementederror 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_notimplementederror.handle_notimplementederror 5 0 0 4 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_oserror 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_oserror.handle_oserror 3 0 1 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_runtimeerror 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py handle_runtimeerror.handle_runtimeerror 2 0 1 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py select_ssh_key 18 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py select_ssh_key.handle_lookuperror 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py select_ssh_key.handle_sshagentfailederror 2 0 1 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py prompt_for_passphrase 2 0 2 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py toml_key 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py toml_key.escape 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py check_for_misleading_passphrase 13 0 1 6 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py key_to_phrase 15 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py print_config_as_sh_script 24 0 0 14 0 100.000%
src\derivepassphrase\_internals\cli_helpers.py (no function) 73 0 12 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py ClickEchoStderrHandler.emit 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CLIofPackageFormatter.__init__ 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CLIofPackageFormatter.format 12 0 5 6 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardCLILogging.ensure_standard_logging 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardCLILogging.ensure_standard_warnings_logging 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardLoggingContextManager.__init__ 4 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardLoggingContextManager.__enter__ 4 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardLoggingContextManager.__exit__ 4 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardWarningsLoggingContextManager.__init__ 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardWarningsLoggingContextManager.__enter__ 7 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardWarningsLoggingContextManager.__enter__.showwarning 1 0 2 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py StandardWarningsLoggingContextManager.__exit__ 4 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py adjust_logging_level 4 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py OptionGroupOption.__init__ 6 0 1 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups._text 3 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.collect_usage_pieces 4 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.get_help_option 3 0 2 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.get_help_option.show_help 3 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.get_short_help_str 3 0 6 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.format_help_text 6 0 2 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.format_options 28 0 2 12 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.format_commands 17 0 2 10 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py CommandWithHelpGroups.format_epilog 6 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py DefaultToVaultGroup.resolve_command 12 0 3 4 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py color_forcing_callback 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py validate_occurrence_constraint 13 0 0 6 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py validate_length 13 0 0 6 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py common_version_output 11 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py print_version_info_types 16 0 0 8 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py derivepassphrase_version_option_callback 8 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py export_version_option_callback 8 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py export_vault_version_option_callback 13 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py vault_version_option_callback 7 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py version_option 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py standard_logging_options 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py ZshComplete.format_completion 3 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_machinery.py (no function) 105 0 11 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py DebugTranslations._load_cache 13 0 2 8 0 100.000%
src\derivepassphrase\_internals\cli_messages.py DebugTranslations._locate_message 5 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py DebugTranslations._format_enum_name_maybe_with_fields 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py DebugTranslations.gettext 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py DebugTranslations.pgettext 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatableString.fields 8 0 3 6 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatableString._maybe_rewrap 5 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatableString.maybe_without_filename 7 0 2 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatableString.rewrapped 5 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatableString.with_comments 2 0 2 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatableString.validate_flags 11 0 0 6 0 100.000%
src\derivepassphrase\_internals\cli_messages.py translatable 2 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatedString.__init__ 5 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatedString.__bool__ 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatedString.__str__ 13 0 0 4 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatedString._escape 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatedString.constant 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py TranslatedString.maybe_without_filename 4 0 0 2 0 100.000%
src\derivepassphrase\_internals\cli_messages.py commented 1 0 0 0 0 100.000%
src\derivepassphrase\_internals\cli_messages.py (no function) 389 0 71 0 0 100.000%
src\derivepassphrase\_types.py json_path 4 0 0 0 0 100.000%
src\derivepassphrase\_types.py json_path.needs_longhand 3 0 0 0 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.__init__ 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.traverse_path 4 0 0 2 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.walk_subconfigs 7 0 0 8 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.validate 51 0 0 40 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.clean_up_falsy_values 30 0 3 16 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.clean_up_falsy_values.falsy 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.clean_up_falsy_values.falsy_but_not_zero 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py _VaultConfigValidator.clean_up_falsy_values.falsy_but_not_string 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py validate_vault_config 1 0 2 0 0 100.000%
src\derivepassphrase\_types.py is_vault_config 5 0 2 0 0 100.000%
src\derivepassphrase\_types.py js_truthiness 6 0 0 2 0 100.000%
src\derivepassphrase\_types.py clean_up_falsy_vault_config_values 4 0 0 0 0 100.000%
src\derivepassphrase\_types.py SSHKeyCommentPair.toreadonly 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py StoreroomKeyPair.toreadonly 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py StoreroomMasterKeys.toreadonly 1 0 0 0 0 100.000%
src\derivepassphrase\_types.py (no function) 151 0 46 0 0 100.000%
src\derivepassphrase\cli.py derivepassphrase 8 0 0 2 0 100.000%
src\derivepassphrase\cli.py derivepassphrase_export 6 0 2 2 0 100.000%
src\derivepassphrase\cli.py derivepassphrase_export_vault 25 0 0 8 0 100.000%
src\derivepassphrase\cli.py _VaultContext.__init__ 16 0 1 10 0 100.000%
src\derivepassphrase\cli.py _VaultContext.is_param_set 1 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.option_name 4 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.check_incompatible_options 11 0 0 6 0 100.000%
src\derivepassphrase\cli.py _VaultContext.err 6 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.warning 5 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.deprecation_warning 5 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.deprecation_info 5 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.get_config 18 0 0 2 0 100.000%
src\derivepassphrase\cli.py _VaultContext.put_config 6 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.get_user_config 8 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.validate_command_line 30 0 0 30 0 100.000%
src\derivepassphrase\cli.py _VaultContext.get_mutex 1 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.dispatch_op 13 0 0 8 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_delete_service_settings 6 0 0 2 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_delete_globals 4 0 0 2 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_clear_all_settings 1 0 0 0 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_import_settings 48 0 0 22 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_export_settings 16 0 0 4 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_subop_query_phrase_or_key_change 18 0 0 10 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_store_config_only 68 0 0 34 0 100.000%
src\derivepassphrase\cli.py _VaultContext.run_op_derive_passphrase 34 0 0 14 0 100.000%
src\derivepassphrase\cli.py derivepassphrase_vault 3 0 0 0 0 100.000%
src\derivepassphrase\cli.py (no function) 100 0 6 0 0 100.000%
src\derivepassphrase\exporter\__init__.py NotAVaultConfigError.__init__ 2 0 0 0 0 100.000%
src\derivepassphrase\exporter\__init__.py get_vault_key 6 0 6 2 0 100.000%
src\derivepassphrase\exporter\__init__.py get_vault_path 1 0 0 0 0 100.000%
src\derivepassphrase\exporter\__init__.py register_export_vault_config_data_handler 8 0 0 4 0 100.000%
src\derivepassphrase\exporter\__init__.py register_export_vault_config_data_handler.wrapper 6 0 0 4 0 100.000%
src\derivepassphrase\exporter\__init__.py find_vault_config_data_handlers 2 0 0 0 0 100.000%
src\derivepassphrase\exporter\__init__.py export_vault_config_data 6 0 0 2 0 100.000%
src\derivepassphrase\exporter\__init__.py (no function) 15 0 15 0 0 100.000%
src\derivepassphrase\exporter\storeroom.py export_storeroom_data 66 0 3 26 0 100.000%
src\derivepassphrase\exporter\storeroom.py _h 1 0 0 0 0 100.000%
src\derivepassphrase\exporter\storeroom.py _derive_master_keys_keys 6 0 0 2 0 100.000%
src\derivepassphrase\exporter\storeroom.py _decrypt_master_keys_data 22 0 0 0 0 100.000%
src\derivepassphrase\exporter\storeroom.py _decrypt_session_keys 24 0 0 0 0 100.000%
src\derivepassphrase\exporter\storeroom.py _decrypt_contents 18 0 0 0 0 100.000%
src\derivepassphrase\exporter\storeroom.py _decrypt_bucket_item 9 0 0 2 0 100.000%
src\derivepassphrase\exporter\storeroom.py _decrypt_bucket_file 15 0 0 4 0 100.000%
src\derivepassphrase\exporter\storeroom.py _store 6 0 0 4 0 100.000%
src\derivepassphrase\exporter\storeroom.py (no function) 40 0 21 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py export_vault_native_data 13 0 3 4 0 100.000%
src\derivepassphrase\exporter\vault_native.py _h 1 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser.__init__ 18 0 0 2 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser.__call__ 7 0 0 2 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser._pbkdf2 6 0 0 2 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser._parse_contents 18 0 0 2 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser._parse_contents.cut 1 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser._derive_keys 5 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser._check_signature 12 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeConfigParser._decrypt_payload 15 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV03ConfigParser.__init__ 3 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV03ConfigParser._generate_keys 4 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV03ConfigParser._hmac_input 1 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV03ConfigParser._make_decryptor 4 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV02ConfigParser.__init__ 3 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV02ConfigParser._parse_contents 5 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV02ConfigParser._generate_keys 5 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV02ConfigParser._hmac_input 1 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV02ConfigParser._evp_bytestokey_md5_one_iteration_no_salt 17 0 0 2 0 100.000%
src\derivepassphrase\exporter\vault_native.py VaultNativeV02ConfigParser._make_decryptor 4 0 0 0 0 100.000%
src\derivepassphrase\exporter\vault_native.py (no function) 61 0 30 0 0 100.000%
src\derivepassphrase\sequin.py Sequin.__init__ 20 0 0 8 0 100.000%
src\derivepassphrase\sequin.py Sequin.__init__.uint8_to_bits 2 0 0 2 0 100.000%
src\derivepassphrase\sequin.py Sequin._all_or_nothing_shift 15 0 0 4 0 100.000%
src\derivepassphrase\sequin.py Sequin._big_endian_number 17 0 0 8 0 100.000%
src\derivepassphrase\sequin.py Sequin.generate 7 0 0 4 0 100.000%
src\derivepassphrase\sequin.py Sequin._generate_inner 27 0 0 16 0 100.000%
src\derivepassphrase\sequin.py Sequin._stash 4 0 0 2 0 100.000%
src\derivepassphrase\sequin.py SequinExhaustedError.__init__ 1 0 0 0 0 100.000%
src\derivepassphrase\sequin.py (no function) 16 0 2 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py TrailingDataError.__init__ 1 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentFailedError.__str__ 2 0 6 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.__init__ 31 2 4 12 1 93.023%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.__enter__ 2 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.__exit__ 1 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.uint32 1 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.string 9 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.unstring 6 0 0 2 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.unstring_prefix 9 0 0 4 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.ensure_agent_subcontext 6 0 4 2 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient._agent_is_pageant 1 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.has_deterministic_dsa_signatures 2 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.request 20 0 2 8 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.list_keys 14 0 0 4 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.list_keys.shift 10 0 0 2 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.sign 11 0 0 4 0 100.000%
src\derivepassphrase\ssh_agent\__init__.py SSHAgentClient.query_extensions 20 2 0 4 0 91.667%
src\derivepassphrase\ssh_agent\__init__.py (no function) 39 0 32 0 0 100.000%
src\derivepassphrase\ssh_agent\socketprovider.py SocketProvider.unix_domain_ssh_auth_sock 11 8 0 4 1 26.667%
src\derivepassphrase\ssh_agent\socketprovider.py SocketProvider.the_annoying_os_named_pipes 4 1 1 2 1 66.667%
src\derivepassphrase\ssh_agent\socketprovider.py SocketProvider.register 2 0 0 0 0 100.000%
src\derivepassphrase\ssh_agent\socketprovider.py SocketProvider.register.decorator 9 0 0 4 0 100.000%
src\derivepassphrase\ssh_agent\socketprovider.py SocketProvider.resolve 9 0 1 4 0 100.000%
src\derivepassphrase\ssh_agent\socketprovider.py SocketProvider._find_all_ssh_agent_socket_providers 24 0 3 14 0 100.000%
src\derivepassphrase\ssh_agent\socketprovider.py (no function) 26 0 3 0 0 100.000%
src\derivepassphrase\vault.py Vault.__init__ 20 0 0 6 0 100.000%
src\derivepassphrase\vault.py Vault.__init__.subtract_or_require 6 0 0 6 0 100.000%
src\derivepassphrase\vault.py Vault._entropy 7 0 0 4 0 100.000%
src\derivepassphrase\vault.py Vault._estimate_sufficient_hash_length 10 0 0 2 0 100.000%
src\derivepassphrase\vault.py Vault._get_binary_string 3 0 0 2 0 100.000%
src\derivepassphrase\vault.py Vault.create_hash 4 0 0 0 0 100.000%
src\derivepassphrase\vault.py Vault.generate 28 0 0 8 0 100.000%
src\derivepassphrase\vault.py Vault.is_suitable_ssh_key 8 0 0 2 0 100.000%
src\derivepassphrase\vault.py Vault.phrase_from_key 8 2 0 2 1 70.000%
src\derivepassphrase\vault.py Vault.phrases_are_interchangable 2 0 0 0 0 100.000%
src\derivepassphrase\vault.py Vault._phrase_to_hmac_key 9 0 0 2 0 100.000%
src\derivepassphrase\vault.py Vault._subtract 16 0 0 6 0 100.000%
src\derivepassphrase\vault.py (no function) 33 0 3 0 0 100.000%
tests\__init__.py SSHTestKey.is_suitable 1 0 0 0 0 100.000%
tests\__init__.py is_valid_test_config 1 0 0 0 0 100.000%
tests\__init__.py vault_full_service_config 12 0 0 0 0 100.000%
tests\__init__.py is_smudgable_vault_test_config 2 0 0 0 0 100.000%
tests\__init__.py smudged_vault_test_config 25 0 0 16 0 100.000%
tests\__init__.py get_concurrency_limit 8 0 0 2 0 100.000%
tests\__init__.py get_concurrency_step_count 1 0 2 0 0 100.000%
tests\__init__.py FakeSSHAgentSocket.__init__ 3 0 0 0 0 100.000%
tests\__init__.py FakeSSHAgentSocket.__enter__ 1 0 0 0 0 100.000%
tests\__init__.py FakeSSHAgentSocket.__exit__ 1 0 0 0 0 100.000%
tests\__init__.py FakeSSHAgentSocket.sendall 11 0 0 2 0 100.000%
tests\__init__.py FakeSSHAgentSocket.recv 5 0 0 0 0 100.000%
tests\__init__.py FakeSSHAgentSocket.parse_client_request_and_dispatch 17 1 0 12 1 93.103%
tests\__init__.py FakeSSHAgentSocket.parse_client_request_and_dispatch.as_extension 2 0 0 0 0 100.000%
tests\__init__.py FakeSSHAgentSocket.query_extensions 5 0 0 2 0 100.000%
tests\__init__.py FakeSSHAgentSocket.request_identities 11 3 0 6 2 70.588%
tests\__init__.py FakeSSHAgentSocket.sign 15 0 0 12 0 100.000%
tests\__init__.py FakeSSHAgentSocketWithAddress.__init__ 15 0 0 6 0 100.000%
tests\__init__.py list_keys 3 0 0 0 0 100.000%
tests\__init__.py sign 6 0 1 2 0 100.000%
tests\__init__.py list_keys_singleton 4 0 0 0 0 100.000%
tests\__init__.py suitable_ssh_keys 3 0 0 0 0 100.000%
tests\__init__.py phrase_from_key 3 0 1 0 0 100.000%
tests\__init__.py faked_entry_point_list 27 0 29 8 0 100.000%
tests\__init__.py faked_entry_point_list.mangled_entry_points 1 0 0 0 0 100.000%
tests\__init__.py isolated_config 18 0 0 2 0 100.000%
tests\__init__.py isolated_vault_config 5 0 0 0 0 100.000%
tests\__init__.py isolated_vault_exporter_config 40 0 4 8 0 100.000%
tests\__init__.py auto_prompt 2 0 0 0 0 100.000%
tests\__init__.py make_file_readonly 10 0 0 4 0 100.000%
tests\__init__.py ReadableResult.clean_exit 1 0 0 0 0 100.000%
tests\__init__.py ReadableResult.error_exit 5 0 0 2 0 100.000%
tests\__init__.py ReadableResult.error_exit.error_match 1 0 0 0 0 100.000%
tests\__init__.py CliRunner.__init__ 6 0 0 0 0 100.000%
tests\__init__.py CliRunner.invoke 6 0 2 0 0 100.000%
tests\__init__.py CliRunner.isolated_filesystem 1 0 0 0 0 100.000%
tests\__init__.py parse_sh_export_line 14 0 0 6 0 100.000%
tests\__init__.py message_emitted_factory 2 0 0 0 0 100.000%
tests\__init__.py message_emitted_factory.message_emitted 2 0 0 0 0 100.000%
tests\__init__.py message_emitted_factory.message_emitted.check_record 4 0 1 2 0 100.000%
tests\__init__.py (no function) 231 0 15 0 0 100.000%
tests\conftest.py _hypothesis_settings_setup 9 0 9 0 0 100.000%
tests\conftest.py terminate_on_exit 4 4 0 0 0 0.000%
tests\conftest.py ssh_agent_client_with_test_keys_loaded 14 0 21 2 0 100.000%
tests\conftest.py ssh_agent_client_with_test_keys_loaded.prepare_payload 3 0 0 0 0 100.000%
tests\conftest.py (no function) 28 0 38 0 0 100.000%
tests\test_derivepassphrase_cli.py is_warning_line 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py is_harmless_config_import_warning 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py assert_vault_config_is_indented_and_line_broken 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py vault_config_exporter_shell_interpreter 21 0 11 6 0 100.000%
tests\test_derivepassphrase_cli.py parse_version_output 46 0 3 32 0 100.000%
tests\test_derivepassphrase_cli.py bash_format 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py fish_format 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py zsh_format 3 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ListKeysAction.__call__ 6 0 1 4 0 100.000%
tests\test_derivepassphrase_cli.py SignAction.__call__ 4 0 1 2 0 100.000%
tests\test_derivepassphrase_cli.py SocketAddressAction.__call__ 4 0 3 2 0 100.000%
tests\test_derivepassphrase_cli.py SystemSupportAction.__call__ 14 3 1 6 0 85.000%
tests\test_derivepassphrase_cli.py SystemSupportAction.check_or_ensure_use 2 0 21 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_001_parse_version_output 3 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_100_help_output 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_101_help_output_export 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_102_help_output_export_vault 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_103_help_output_vault 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_200_eager_options 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_201_automatic_color_mode 8 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_202a_derivepassphrase_version_option_output 15 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_202b_export_version_option_output 15 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_202c_export_vault_version_option_output 20 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestAllCLI.test_202d_vault_version_option_output 14 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_200_help_output 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_200a_version_output 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_201_disable_character_set 11 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_202_disable_repetition 10 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_204a_key_from_config 11 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_204b_key_from_command_line 13 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_204c_key_override_on_command_line 12 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_205_service_phrase_if_key_in_global_config 13 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_206_setting_phrase_thus_overriding_key_in_config 16 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_207_service_with_notes_actually_prints_notes 12 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_210_invalid_argument_range 7 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_211_service_needed 17 0 0 4 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_211a_empty_service_name_causes_warning 17 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_211a_empty_service_name_causes_warning.is_expected_warning 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_212_incompatible_options 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_213_import_config_success 11 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_213a_import_config_success 15 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_213b_import_bad_config_not_vault_config 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_213c_import_bad_config_not_json_data 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_213d_import_bad_config_not_a_file 8 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_214_export_config_success 13 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_214a_export_settings_no_stored_settings 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_214b_export_settings_bad_stored_config 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_214c_export_settings_not_a_file 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_214d_export_settings_target_not_a_file 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_214e_export_settings_settings_directory_not_a_directory 10 10 0 0 0 0.000%
tests\test_derivepassphrase_cli.py TestCLI.test_215_notes_placement 11 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_220_edit_notes_successfully 18 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_221_edit_notes_noop 16 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_221_edit_notes_noop.empty 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_221_edit_notes_noop.space 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_222_edit_notes_marker_removed 18 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_223_edit_notes_abort 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_223a_edit_empty_notes_abort 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_223b_edit_notes_fail_config_option_missing 22 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_224_store_config_good 11 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225_store_config_fail 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225b_store_config_fail_manual_no_ssh_agent 8 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225c_store_config_fail_manual_bad_ssh_agent_connection 9 8 0 0 0 11.111%
tests\test_derivepassphrase_cli.py TestCLI.test_225d_store_config_fail_manual_read_only_file 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225e_store_config_fail_manual_custom_error 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225e_store_config_fail_manual_custom_error.raiser 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225f_store_config_fail_unset_and_set_same_settings 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225g_store_config_fail_manual_ssh_agent_no_keys_loaded 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225g_store_config_fail_manual_ssh_agent_no_keys_loaded.func 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225h_store_config_fail_manual_ssh_agent_runtime_error 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225h_store_config_fail_manual_ssh_agent_runtime_error.raiser 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225i_store_config_fail_manual_ssh_agent_refuses 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_225i_store_config_fail_manual_ssh_agent_refuses.func 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_226_no_arguments 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_226a_no_passphrase_or_key 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_230_config_directory_nonexistant 12 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_230a_config_directory_not_a_file 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_230a_config_directory_not_a_file.obstruct_config_saving 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_230b_store_config_custom_error 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_230b_store_config_custom_error.raiser 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_300_unicode_normalization_form_warning 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_301_unicode_normalization_form_error 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_301a_unicode_normalization_form_error_from_stored_config 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_310_bad_user_config_file 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_311_bad_user_config_is_a_directory 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLI.test_400_missing_af_unix_support 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_100_load_config 8 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_110_save_bad_config 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_111_prompt_for_selection_multiple 13 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_111_prompt_for_selection_multiple.driver 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_112_prompt_for_selection_single 13 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_112_prompt_for_selection_single.driver 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_113_prompt_for_passphrase 11 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_120_standard_logging_context_manager 16 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_121_standard_logging_warnings_context_manager 22 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.export_as_sh_helper 11 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_130a_export_as_sh_global 4 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_130b_export_as_sh_global_only_imports 6 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_130c_export_as_sh_service 4 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_130d_export_as_sh_service_only_imports 4 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_140a_get_tempdir 21 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_140a_get_tempdir.make_temporary_directory 4 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_140b_get_tempdir_force_default 14 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_140b_get_tempdir_force_default.is_dir_false 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_140b_get_tempdir_force_default.is_dir_error 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_203_repeated_config_deletion 10 0 0 2 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 11 0 11 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_400_key_to_phrase 20 0 0 8 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_400_key_to_phrase.ErrCallback.__init__ 3 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLIUtils.test_400_key_to_phrase.err 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_110_load_config_backup 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_111_migrate_config 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_112_migrate_config_error 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_113_migrate_config_error_bad_config_value 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_200_forward_export_vault_path_parameter 11 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_201_forward_export_vault_empty_commandline 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_210_forward_vault_disable_character_set 13 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_211_forward_vault_empty_command_line 8 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_300_export_using_old_config_file 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_300a_export_using_old_config_file_migration_error 12 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_300a_export_using_old_config_file_migration_error.raiser 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestCLITransition.test_400_completion_service_name_old_config_file 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py build_reduced_vault_config_settings 4 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py services_strategy 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py assemble_config 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py draw_service_name_and_data 6 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py vault_full_config 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.__init__ 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.declare_initial_configs 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.extract_initial_settings 4 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.fold_configs 4 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.set_globals 14 0 0 6 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.set_service 14 0 0 6 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.purge_global 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.purge_service 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.purge_all 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.import_configuration 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py ConfigManagementStateMachine.teardown 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py run_actions_handler 6 0 2 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.ConfigurationMutexStub.__init__ 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.ConfigurationMutexStub.__init__.lock 4 0 6 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.ConfigurationMutexStub.__init__.unlock 3 0 3 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.__init__ 3 0 5 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.declare_initial_configs 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.extract_initial_settings 4 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.declare_initial_action 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.add_set_globals_action 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.add_set_service_action 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.add_purge_global_action 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.add_purge_service_action 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.add_purge_all_action 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.add_import_configuration_action 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.run_actions 56 0 11 10 0 100.000%
tests\test_derivepassphrase_cli.py FakeConfigurationMutexStateMachine.mainloop 28 0 4 8 0 100.000%
tests\test_derivepassphrase_cli.py completion_item 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py assertable_item 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.Completions.__init__ 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.Completions.__call__ 3 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.Completions.get_words 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_100_is_completable_item 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_200_options 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_201_subcommands 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_202_paths 4 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_203_service_names 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_300_shell_completion_formatting 20 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_400_incompletable_service_names 14 0 0 2 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_410a_service_name_exceptions_not_found 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_410b_service_name_exceptions_custom_error 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py TestShellCompletion.test_410b_service_name_exceptions_custom_error.raiser 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli.py (no function) 458 0 6 6 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_200_path_parameter 8 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_201_key_parameter 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_210_load_vault_v02_v03_storeroom 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_301_vault_config_not_found 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_302_vault_config_invalid 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_302a_vault_config_invalid_just_a_directory 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_403_invalid_vault_config_bad_signature 7 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_500_vault_config_invalid_internal 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestCLI.test_500_vault_config_invalid_internal.export_vault_config_data 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_200_export_data_path_and_keys_type 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_400_decrypt_bucket_item_unknown_version 4 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_401_decrypt_bucket_file_bad_json_or_version 10 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_402_export_storeroom_data_bad_master_keys_file 9 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_403_export_storeroom_data_bad_directory_listing 6 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_404_decrypt_keys_wrong_data_length 19 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestStoreroom.test_405_decrypt_keys_invalid_signature 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_200_pbkdf2_manually 1 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_201_export_vault_native_data_explicit_version 9 0 0 2 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_202_export_data_path_and_keys_type 5 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_300_result_caching 14 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_300_result_caching.null_func 1 0 1 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_400_no_password 2 0 0 0 0 100.000%
tests\test_derivepassphrase_cli_export_vault.py (no function) 67 0 4 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.VaultKeyEnvironment.strategy 9 0 0 4 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_200_get_vault_key 11 0 0 4 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_210_get_vault_path 7 0 0 2 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_220_register_export_vault_config_data_handler 7 0 6 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_300_get_vault_key_without_envs 7 0 0 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_310_get_vault_path_without_home 6 0 0 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_310_get_vault_path_without_home.raiser 1 0 0 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_320_register_export_vault_config_data_handler_errors 5 0 6 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test001ExporterUtils.test_321_export_vault_config_data_bad_handler 5 0 0 0 0 100.000%
tests\test_derivepassphrase_exporter.py Test002CLI.test_300_invalid_format 7 0 0 2 0 100.000%
tests\test_derivepassphrase_exporter.py Test002CLI.test_999_no_cryptography_error_message 7 0 0 0 0 100.000%
tests\test_derivepassphrase_exporter.py (no function) 62 0 2 0 0 100.000%
tests\test_derivepassphrase_sequin.py bits 10 0 3 4 0 100.000%
tests\test_derivepassphrase_sequin.py bitseq 1 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestStaticFunctionality.test_100_bits 11 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestStaticFunctionality.test_101_bits 6 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestStaticFunctionality.BigEndianNumberTest.strategy 7 0 4 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestStaticFunctionality.test_200_big_endian_number 2 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestStaticFunctionality.test_300_big_endian_number_exceptions 2 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.ConstructorTestCase.strategy 21 1 0 10 1 93.548%
tests\test_derivepassphrase_sequin.py TestSequin.test_200_constructor 3 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.GenerationSequence.strategy 2 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.test_201_generating 6 0 1 4 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.test_201a_generating_errors 3 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.test_210_internal_generating 8 0 0 6 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.test_210a_internal_generating_errors 5 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.ShiftSequence.strategy 13 0 0 4 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.test_211_shifting 8 0 0 4 0 100.000%
tests\test_derivepassphrase_sequin.py TestSequin.test_300_constructor_exceptions 2 0 0 0 0 100.000%
tests\test_derivepassphrase_sequin.py (no function) 86 0 2 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_100_query_extensions 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_101_request_identities 14 0 0 2 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_102_sign 6 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_120_close_multiple 5 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_121_closed_agents_cannot_be_interacted_with 5 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_122_no_recv_without_sendall 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_123_invalid_ssh_agent_messages 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_124_unsupported_ssh_agent_messages 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestTestingMachineryFakeSSHAgentSocket.test_125_addresses 8 0 0 4 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.as_ssh_string 1 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.canonicalize1 1 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.canonicalize2 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_100_key_decoding 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_190_sh_export_line_parsing 4 0 0 2 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_200_constructor_posix_no_ssh_auth_sock 6 6 0 0 0 0.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_210_uint32 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_210a_uint32_from_number 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_210b_uint32_from_bytestring 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_211_string 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_211a_string_from_bytestring 4 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_212_unstring 4 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_212a_unstring_of_string_of_data 9 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_212b_string_of_unstring_of_data 5 0 0 4 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_220_registry_resolve 7 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_221_registry_resolve_chains 13 0 3 4 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_230_find_all_socket_providers 7 0 0 2 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_231_find_all_socket_providers_errors 4 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_310_uint32_exceptions 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_311_string_exceptions 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_312_unstring_exceptions 8 0 0 2 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_320_registry_already_registered 17 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestStaticFunctionality.test_321_registry_resolve_non_existant_entries 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_200_sign_data_via_agent 12 0 2 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_201_sign_data_via_agent_unsupported 8 5 2 2 0 30.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_210_ssh_key_selector 19 0 0 4 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_210_ssh_key_selector.key_is_suitable 3 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_210_ssh_key_selector.driver 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_300_constructor_bad_running_agent 5 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_301_constructor_no_af_unix_support 6 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_302_no_ssh_agent_socket_provider_available 5 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_303_explicit_socket 2 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_310_truncated_server_response 11 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_310_truncated_server_response.PseudoSocket.sendall 1 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_310_truncated_server_response.PseudoSocket.recv 1 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_320_list_keys_error_responses 8 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_320_list_keys_error_responses.request 9 0 2 4 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_330_sign_error_responses 12 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_330_sign_error_responses.request 8 0 3 2 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_340_request_error_responses 5 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_350_query_extensions_malformed_responses 8 0 0 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py TestAgentInteraction.test_350_query_extensions_malformed_responses.request 4 0 8 0 0 100.000%
tests\test_derivepassphrase_ssh_agent.py (no function) 130 0 3 2 0 100.000%
tests\test_derivepassphrase_types.py js_atoms_strategy 1 0 0 0 0 100.000%
tests\test_derivepassphrase_types.py js_nested_strategy 1 0 0 0 0 100.000%
tests\test_derivepassphrase_types.py test_100_js_truthiness 2 0 0 0 0 100.000%
tests\test_derivepassphrase_types.py test_200_is_vault_config 4 0 0 0 0 100.000%
tests\test_derivepassphrase_types.py test_200a_is_vault_config_smudged 5 0 0 0 0 100.000%
tests\test_derivepassphrase_types.py test_400_validate_vault_config 9 0 2 2 0 100.000%
tests\test_derivepassphrase_types.py test_400a_validate_vault_config_smudged 10 0 2 2 0 100.000%
tests\test_derivepassphrase_types.py (no function) 28 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py phrases_are_interchangable 4 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py phrases_are_interchangable.canon 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_100a_create_hash_phrase_dependence_small 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_100b_create_hash_phrase_dependence_medium 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_100c_create_hash_phrase_dependence_large 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_100d_create_hash_phrase_dependence_mixed 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_101_create_hash_service_name_dependence 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_102a_interchangable_phrases_small 2 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_102b_interchangable_phrases_large 2 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_200_basic_configuration 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_201_phrase_dependence 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_201a_phrase_dependence 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_202a_reproducibility_and_bytes_service_name 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_202b_reproducibility_and_bytearray_service_name 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_202c_reproducibility_and_buffer_like_service_name 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_203a_reproducibility_and_binary_phrases 5 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_203b_reproducibility_and_binary_service_name 5 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_204a_service_name_dependence 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_204b_service_name_dependence_with_config 2 0 3 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_210_nonstandard_length 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_210a_password_with_length 2 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_211_repetition_limit 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_212_without_symbols 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_213_no_numbers 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_214_no_lowercase_letters 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_215_at_least_5_digits 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_216_lots_of_spaces 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_217_all_character_classes 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_217a_all_length_character_and_occurrence_constraints_satisfied 16 0 3 10 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_217a_all_length_character_and_occurrence_constraints_satisfied.length_r_substrings 2 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_218_only_numbers_and_very_high_repetition_limit 4 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_218a_arbitrary_repetition_limit 3 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_219_very_limited_character_set 2 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_220_character_set_subtraction 1 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_221_entropy 6 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_222_hash_length_estimation 3 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_223_hash_length_expansion 4 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_224_binary_strings 6 0 0 2 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_310_too_many_symbols 2 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_311_no_viable_characters 2 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_320_character_set_subtraction_duplicate 4 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py TestVault.test_322_hash_length_estimation 5 0 0 0 0 100.000%
tests\test_derivepassphrase_vault.py (no function) 91 0 3 0 0 100.000%
tests\test_l10n.py use_debug_translations 3 0 0 0 0 100.000%
tests\test_l10n.py monkeypatched_null_translations 3 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_100_debug_translation_get_str 2 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_100a_debug_translation_get_ts 7 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_100b_debug_translation_get_enum 8 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_100c_debug_translation_get_ts_str 2 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_101_translated_strings_operations 12 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_101a_translated_strings_operations_interpolated 8 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_101b_translated_strings_operations_interpolated 7 0 0 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_102_translated_strings_suppressed_interpolation_fail 12 0 0 2 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_102a_translated_strings_suppressed_interpolation_str 4 0 3 0 0 100.000%
tests\test_l10n.py TestL10nMachineryWithDebugTranslations.test_102b_translated_strings_suppressed_interpolation_ts_manual 5 0 3 0 0 100.000%
tests\test_l10n.py (no function) 54 0 2 2 0 100.000%
Total   6658 64 1458 948 10 98.974%

No items found using the specified filter.

57 empty functions skipped.