jmathai / elodie

An EXIF-based photo assistant, organizer and workflow automation tool.
https://bit.ly/introducing-elodie
Apache License 2.0
1.27k stars 139 forks source link

Update code to work with new MapQuest API. gh-421 #429

Closed jmathai closed 2 years ago

jmathai commented 2 years ago

Tests pass locally. CI tests are currently not working (gh-427).

(.elodie-venv) ➜  elodie git:(mapquest-fix) ✗ ./elodie/tests/run_tests.py -w ./elodie/tests
elodie.tests.media.audio_test.test_audio_extensions ... ok
elodie.tests.media.audio_test.test_get_coordinate ... ok
elodie.tests.media.audio_test.test_get_camera_make ... ok
elodie.tests.media.audio_test.test_get_camera_model ... ok
elodie.tests.media.audio_test.test_get_coordinate_latitude ... ok
elodie.tests.media.audio_test.test_get_coordinate_longitude ... ok
elodie.tests.media.audio_test.test_get_date_taken ... ok
elodie.tests.media.audio_test.test_get_exiftool_attributes ... ok
elodie.tests.media.audio_test.test_is_valid ... ok
elodie.tests.media.audio_test.test_is_not_valid ... ok
elodie.tests.media.audio_test.test_set_date_taken ... ok
elodie.tests.media.audio_test.test_set_location ... ok
elodie.tests.media.audio_test.test_set_location_minus ... ok
elodie.tests.media.audio_test.test_set_title ... ok
elodie.tests.media.audio_test.test_set_title_non_ascii ... ok
/Users/jaisen/dev/self/elodie/elodie/external/pyexiftool.py:229: UserWarning: ExifTool already running; doing nothing.
  warnings.warn("ExifTool already running; doing nothing.")
elodie.tests.media.base_test.test_get_all_subclasses ... ok
elodie.tests.media.base_test.test_get_class_by_file_without_extension ... ok
elodie.tests.media.base_test.test_get_original_name ... ok
elodie.tests.media.base_test.test_get_original_name_invalid_file ... ok
elodie.tests.media.base_test.test_set_album_from_folder_invalid_file ... ok
elodie.tests.media.base_test.test_set_album_from_folder ... ok
elodie.tests.media.base_test.test_set_metadata ... ok
elodie.tests.media.base_test.test_set_metadata_basename ... ok
elodie.tests.media.media_test.test_get_file_path ... ok
elodie.tests.media.media_test.test_get_class_by_file_photo ... ok
elodie.tests.media.media_test.test_get_class_by_file_video ... ok
elodie.tests.media.media_test.test_get_class_by_file_unsupported ... ok
elodie.tests.media.media_test.test_get_class_by_file_ds_store ... ok
elodie.tests.media.media_test.test_get_class_by_file_invalid_type ... ok
elodie.tests.media.media_test.test_get_original_name ... ok
elodie.tests.media.media_test.test_get_original_name_invalid_file ... ok
elodie.tests.media.media_test.test_set_original_name_when_exists ... ok
elodie.tests.media.media_test.test_set_original_name_when_does_not_exist ... ok
elodie.tests.media.media_test.test_set_original_name_with_arg ... ok
elodie.tests.media.media_test.test_set_original_name ... ok
elodie.tests.media.photo_test.test_photo_extensions ... ok
elodie.tests.media.photo_test.test_empty_album ... ok
elodie.tests.media.photo_test.test_has_album ... ok
elodie.tests.media.photo_test.test_get_metadata_of_invalid_photo ... ok
elodie.tests.media.photo_test.test_get_coordinate_default ... ok
elodie.tests.media.photo_test.test_get_coordinate_latitude ... ok
elodie.tests.media.photo_test.test_get_coordinate_latitude_minus ... ok
elodie.tests.media.photo_test.test_get_coordinate_longitude ... ok
elodie.tests.media.photo_test.test_get_coordinate_longitude_plus ... ok
elodie.tests.media.photo_test.test_get_coordinates_without_exif ... ok
elodie.tests.media.photo_test.test_get_coordinates_with_zero_coordinate ... ok
elodie.tests.media.photo_test.test_get_coordinates_with_null_coordinate ... ok
elodie.tests.media.photo_test.test_get_date_taken ... ok
elodie.tests.media.photo_test.test_get_date_taken_without_exif ... ok
elodie.tests.media.photo_test.test_get_camera_make ... ok
elodie.tests.media.photo_test.test_get_camera_make_not_set ... ok
elodie.tests.media.photo_test.test_get_camera_model ... ok
elodie.tests.media.photo_test.test_get_camera_model_not_set ... ok
elodie.tests.media.photo_test.test_is_valid ... ok
elodie.tests.media.photo_test.test_is_not_valid ... ok
elodie.tests.media.photo_test.test_is_valid_fallback_using_pillow ... ok
elodie.tests.media.photo_test.test_pillow_not_loaded ... ok
elodie.tests.media.photo_test.test_set_album ... ok
elodie.tests.media.photo_test.test_set_date_taken_with_missing_datetimeoriginal ... ok
elodie.tests.media.photo_test.test_set_date_taken ... ok
elodie.tests.media.photo_test.test_set_location ... ok
elodie.tests.media.photo_test.test_set_location_minus ... ok
elodie.tests.media.photo_test.test_set_title ... ok
elodie.tests.media.photo_test.test_set_title_non_ascii ... ok
elodie.tests.media.photo_test.test_various_types('arw', (2007, 4, 8, 17, 41, 18, 6, 98, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('arw', (2007, 4, 8, 17, 41, 18, 6, 98, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('cr2', (2005, 10, 29, 16, 14, 44, 5, 302, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('cr2', (2005, 10, 29, 16, 14, 44, 5, 302, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('dng', (2009, 10, 20, 9, 10, 46, 1, 293, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('dng', (2009, 10, 20, 9, 10, 46, 1, 293, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('heic', (2019, 5, 26, 10, 33, 20, 6, 146, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('heic', (2019, 5, 26, 10, 33, 20, 6, 146, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('nef', (2008, 10, 24, 9, 12, 56, 4, 298, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('nef', (2008, 10, 24, 9, 12, 56, 4, 298, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('png', (2015, 1, 18, 12, 1, 1, 6, 18, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('png', (2015, 1, 18, 12, 1, 1, 6, 18, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('rw2', (2014, 11, 19, 23, 7, 44, 2, 323, 0)) ... ok
elodie.tests.media.photo_test.test_various_types('rw2', (2014, 11, 19, 23, 7, 44, 2, 323, 0)) ... ok
elodie.tests.media.text_test.test_text_extensions ... ok
elodie.tests.media.text_test.test_get_original_name ... ok
elodie.tests.media.text_test.test_get_original_name_when_does_not_exist ... ok
elodie.tests.media.text_test.test_get_title ... ok
elodie.tests.media.text_test.test_get_default_coordinate ... ok
elodie.tests.media.text_test.test_get_coordinate_latitude ... ok
elodie.tests.media.text_test.test_get_coordinate_longitude ... ok
elodie.tests.media.text_test.test_get_date_taken ... ok
elodie.tests.media.text_test.test_get_date_taken_from_invalid ... ok
elodie.tests.media.text_test.test_get_metadata_with_numeric_header ... ok
elodie.tests.media.text_test.test_set_album ... ok
elodie.tests.media.text_test.test_set_date_taken ... ok
elodie.tests.media.text_test.test_set_location ... ok
elodie.tests.media.text_test.test_set_album_without_header ... ok
elodie.tests.media.text_test.test_set_date_taken_without_header ... ok
elodie.tests.media.text_test.test_set_location_without_header ... ok
elodie.tests.media.text_test.test_set_original_name ... ok
elodie.tests.media.text_test.test_set_original_name_with_arg ... ok
elodie.tests.media.video_test.test_video_extensions ... ok
elodie.tests.media.video_test.test_empty_album ... ok
elodie.tests.media.video_test.test_get_camera_make ... ok
elodie.tests.media.video_test.test_get_camera_model ... ok
elodie.tests.media.video_test.test_get_coordinate ... ok
elodie.tests.media.video_test.test_get_coordinate_latitude ... ok
elodie.tests.media.video_test.test_get_coordinate_longitude ... ok
elodie.tests.media.video_test.test_get_date_taken ... ok
elodie.tests.media.video_test.test_get_exiftool_attributes ... ok
elodie.tests.media.video_test.test_is_valid ... ok
elodie.tests.media.video_test.test_is_not_valid ... ok
elodie.tests.media.video_test.test_set_album ... ok
elodie.tests.media.video_test.test_set_date_taken ... ok
elodie.tests.media.video_test.test_set_location ... ok
elodie.tests.media.video_test.test_set_title ... ok
elodie.tests.media.video_test.test_set_title_non_ascii ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_after_supported ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_after_unsupported ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_batch ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_set_session ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_upload ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_upload_dne ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_upload_invalid_empty ... ok
elodie.tests.plugins.googlephotos.googlephotos_test.test_googlephotos_upload_session_fail ... ok
elodie.tests.config_test.test_load_config_singleton_no_file ... ok
elodie.tests.config_test.test_load_config_singleton_success ... ok
elodie.tests.config_test.test_load_plugin_config_exists_not_set ... ok
elodie.tests.config_test.test_load_plugin_config_many ... ok
elodie.tests.config_test.test_load_plugin_config_one ... ok
elodie.tests.config_test.test_load_plugin_config_one_with_invalid ... ok
elodie.tests.config_test.test_load_plugin_config_unset_backwards_compat ... ok
elodie.tests.constants_test.test_debug ... ok
elodie.tests.constants_test.test_application_directory_default ... ok
elodie.tests.constants_test.test_application_directory_override_invalid ... ok
elodie.tests.constants_test.test_application_directory_override_valid ... ok
elodie.tests.constants_test.test_hash_db ... ok
elodie.tests.constants_test.test_location_db ... ok
elodie.tests.constants_test.test_script_directory ... ok
elodie.tests.constants_test.test_exiftool_config ... ok
elodie.tests.constants_test.test_mapquest_base_url_default ... ok
elodie.tests.constants_test.test_mapquest_base_url_override ... ok
elodie.tests.constants_test.test_mapquest_key_default ... ok
elodie.tests.constants_test.test_mapquest_key_override ... ok
elodie.tests.constants_test.test_accepted_language ... ok
elodie.tests.constants_test.test_python_version ... ok
elodie.tests.dependencies_test.test_exiftool ... ok
elodie.tests.elodie_test.test_import_file_text ... ok
elodie.tests.elodie_test.test_import_file_audio ... ok
elodie.tests.elodie_test.test_import_file_photo ... ok
elodie.tests.elodie_test.test_import_file_video ... ok
elodie.tests.elodie_test.test_import_file_path_utf8_encoded_ascii_checkmark ... ok
elodie.tests.elodie_test.test_import_file_path_unicode_checkmark ... ok
elodie.tests.elodie_test.test_import_file_path_utf8_encoded_ascii_latin_nbsp ... ok
elodie.tests.elodie_test.test_import_file_path_unicode_latin_nbsp ... ok
elodie.tests.elodie_test.test_import_file_allow_duplicate_false ... ok
elodie.tests.elodie_test.test_import_file_allow_duplicate_true ... ok
elodie.tests.elodie_test.test_import_file_send_to_trash_false ... ok
elodie.tests.elodie_test.test_import_file_send_to_trash_true ... SKIP: Temporarily disable send2trash test gh-230
elodie.tests.elodie_test.test_import_destination_in_source ... ok
elodie.tests.elodie_test.test_import_destination_in_source_gh_287 ... ok
elodie.tests.elodie_test.test_import_invalid_file_exit_code ... ok
elodie.tests.elodie_test.test_import_file_with_single_exclude ... ok
elodie.tests.elodie_test.test_import_file_with_multiple_exclude ... ok
elodie.tests.elodie_test.test_import_file_with_non_matching_exclude ... ok
elodie.tests.elodie_test.test_import_directory_with_matching_exclude ... ok
elodie.tests.elodie_test.test_import_directory_with_non_matching_exclude ... ok
elodie.tests.elodie_test.test_update_location_on_audio ... ok
elodie.tests.elodie_test.test_update_location_on_photo ... ok
elodie.tests.elodie_test.test_update_location_on_text ... ok
elodie.tests.elodie_test.test_update_location_on_video ... ok
elodie.tests.elodie_test.test_update_time_on_audio ... ok
elodie.tests.elodie_test.test_update_time_on_photo ... ok
elodie.tests.elodie_test.test_update_time_on_text ... ok
elodie.tests.elodie_test.test_update_time_on_video ... ok
elodie.tests.elodie_test.test_update_with_directory_passed_in ... ok
elodie.tests.elodie_test.test_update_invalid_file_exit_code ... ok
elodie.tests.elodie_test.test_regenerate_db_invalid_source ... ok
elodie.tests.elodie_test.test_regenerate_valid_source ... ok
elodie.tests.elodie_test.test_regenerate_valid_source_with_invalid_files ... ok
elodie.tests.elodie_test.test_verify_ok ... ok
elodie.tests.elodie_test.test_verify_error ... ok
elodie.tests.elodie_test.test_cli_debug_import ... ok
elodie.tests.elodie_test.test_cli_debug_update ... ok
elodie.tests.elodie_test.test_cli_batch_plugin_googlephotos ... ok
elodie.tests.elodie_test.test_import_file_with_multiple_config_exclude ... ok
elodie.tests.elodie_test.test_import_file_with_single_config_exclude ... ok
elodie.tests.filesystem_test.test_create_directory_success ... ok
elodie.tests.filesystem_test.test_create_directory_recursive_success ... ok
elodie.tests.filesystem_test.test_delete_directory_if_empty ... ok
elodie.tests.filesystem_test.test_delete_directory_if_empty_when_not_empty ... ok
elodie.tests.filesystem_test.test_get_all_files_success ... ok
elodie.tests.filesystem_test.test_get_all_files_by_extension ... ok
elodie.tests.filesystem_test.test_get_all_files_with_only_invalid_file ... ok
elodie.tests.filesystem_test.test_get_all_files_with_invalid_file ... ok
elodie.tests.filesystem_test.test_get_all_files_for_loop ... ok
elodie.tests.filesystem_test.test_get_current_directory ... ok
elodie.tests.filesystem_test.test_get_file_name_definition_default ... ok
elodie.tests.filesystem_test.test_get_file_name_plain ... ok
elodie.tests.filesystem_test.test_get_file_name_with_title ... ok
elodie.tests.filesystem_test.test_get_file_name_with_original_name_exif ... ok
elodie.tests.filesystem_test.test_get_file_name_with_original_name_title_exif ... ok
elodie.tests.filesystem_test.test_get_file_name_with_uppercase_and_spaces ... ok
elodie.tests.filesystem_test.test_get_folder_path_plain ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_title ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_location ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_int_in_source_path ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_location_and_title ... ok
elodie.tests.filesystem_test.test_parse_folder_name_default ... ok
elodie.tests.filesystem_test.test_parse_folder_name_multiple ... ok
elodie.tests.filesystem_test.test_parse_folder_name_static_chars ... ok
elodie.tests.filesystem_test.test_parse_folder_name_key_not_found ... ok
elodie.tests.filesystem_test.test_parse_folder_name_key_not_found_with_static_chars ... ok
elodie.tests.filesystem_test.test_parse_folder_name_multiple_keys_not_found ... ok
elodie.tests.filesystem_test.test_process_file_invalid ... ok
elodie.tests.filesystem_test.test_process_file_plain ... ok
elodie.tests.filesystem_test.test_process_file_with_title ... ok
elodie.tests.filesystem_test.test_process_file_with_location ... ok
elodie.tests.filesystem_test.test_process_file_validate_original_checksum ... ok
elodie.tests.filesystem_test.test_process_file_no_exif_date_is_correct_gh_330 ... ok
elodie.tests.filesystem_test.test_process_file_with_location_and_title ... ok
elodie.tests.filesystem_test.test_process_file_with_album ... ok
elodie.tests.filesystem_test.test_process_file_with_album_and_title ... ok
elodie.tests.filesystem_test.test_process_file_with_album_and_title_and_location ... ok
elodie.tests.filesystem_test.test_process_video_with_album_then_title ... ok
elodie.tests.filesystem_test.test_process_existing_file_without_changes ... ok
elodie.tests.filesystem_test.test_set_utime_with_exif_date ... ok
elodie.tests.filesystem_test.test_set_utime_without_exif_date ... ok
elodie.tests.filesystem_test.test_should_exclude_with_no_exclude_arg ... ok
elodie.tests.filesystem_test.test_should_exclude_with_non_matching_regex ... ok
elodie.tests.filesystem_test.test_should_exclude_with_matching_regex ... ok
elodie.tests.filesystem_test.test_should_not_exclude_with_multiple_with_non_matching_regex ... ok
elodie.tests.filesystem_test.test_should_exclude_with_multiple_with_one_matching_regex ... ok
elodie.tests.filesystem_test.test_should_exclude_with_complex_matching_regex ... ok
elodie.tests.filesystem_test.test_create_directory_invalid_permissions ... ok
elodie.tests.filesystem_test.test_get_file_name_custom ... ok
elodie.tests.filesystem_test.test_get_file_name_custom_with_empty_value ... ok
elodie.tests.filesystem_test.test_get_file_name_custom_with_invalid_capitalization ... ok
elodie.tests.filesystem_test.test_get_file_name_custom_with_lower_capitalization ... ok
elodie.tests.filesystem_test.test_get_file_name_custom_with_title ... ok
elodie.tests.filesystem_test.test_get_file_name_custom_with_upper_capitalization ... ok
elodie.tests.filesystem_test.test_get_file_name_definition_custom ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_cached ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_date_location ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_default ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_location_date ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_multi_level_custom ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_with_more_than_two_levels ... ok
elodie.tests.filesystem_test.test_get_folder_path_definition_with_only_one_level ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_album_and_location_fallback ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_camera_make_and_model ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_camera_make_and_model_fallback ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_combined_date_and_album ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_custom_path ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_fallback_folder ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_int_in_config_component ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_original_default_unknown_location ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_with_more_than_two_levels ... ok
elodie.tests.filesystem_test.test_get_folder_path_with_with_only_one_level ... ok
elodie.tests.filesystem_test.test_process_file_fallback_folder ... ok
elodie.tests.filesystem_test.test_process_file_with_plugin_runtime_error ... ok
elodie.tests.filesystem_test.test_process_file_with_plugin_throw_error ... ok
elodie.tests.filesystem_test.test_process_twice_more_than_two_levels_of_directories ... ok
elodie.tests.geolocation_test.test_decimal_to_dms ... ok
elodie.tests.geolocation_test.test_dms_to_decimal_positive_sign ... ok
elodie.tests.geolocation_test.test_dms_to_decimal_negative_sign ... ok
elodie.tests.geolocation_test.test_dms_string_latitude ... ok
elodie.tests.geolocation_test.test_dms_string_longitude ... ok
elodie.tests.geolocation_test.test_reverse_lookup_with_valid_key ... ok
elodie.tests.geolocation_test.test_reverse_lookup_with_invalid_lat_lon ... ok
elodie.tests.geolocation_test.test_lookup_with_valid_key ... ok
elodie.tests.geolocation_test.test_lookup_with_invalid_location ... ok
elodie.tests.geolocation_test.test_place_name_no_default ... ok
elodie.tests.geolocation_test.test_parse_result_with_error ... ok
elodie.tests.geolocation_test.test_parse_result_with_city ... ok
elodie.tests.geolocation_test.test_parse_result_with_lat_lon ... ok
elodie.tests.geolocation_test.test_parse_result_with_unknown_lat_lon ... ok
elodie.tests.geolocation_test.test_lookup_with_invalid_key ... ok
elodie.tests.geolocation_test.test_lookup_with_no_key ... ok
elodie.tests.geolocation_test.test_lookup_with_prefer_english_names_false ... SKIP: gh-425 MapQuest API no longer supports prefer_english_names.
elodie.tests.geolocation_test.test_lookup_with_prefer_english_names_true ... SKIP: gh-425 MapQuest API no longer supports prefer_english_names.
elodie.tests.geolocation_test.test_place_name_cached ... ok
elodie.tests.geolocation_test.test_place_name_deprecated_string_cached ... ok
elodie.tests.geolocation_test.test_reverse_lookup_with_invalid_key ... ok
elodie.tests.localstorage_test.test_init_writes_files ... ok
elodie.tests.localstorage_test.test_add_hash_default_do_not_write ... ok
elodie.tests.localstorage_test.test_add_hash_explicit_do_not_write ... ok
elodie.tests.localstorage_test.test_add_hash_explicit_write ... ok
elodie.tests.localstorage_test.test_backup_hash_db ... ok
elodie.tests.localstorage_test.test_check_hash_exists ... ok
elodie.tests.localstorage_test.test_check_hash_does_not_exist ... ok
elodie.tests.localstorage_test.test_get_hash_exists ... ok
elodie.tests.localstorage_test.test_get_hash_does_not_exist ... ok
elodie.tests.localstorage_test.test_get_all ... ok
elodie.tests.localstorage_test.test_get_all_empty ... ok
elodie.tests.localstorage_test.test_reset_hash_db ... ok
elodie.tests.localstorage_test.test_update_hash_db ... ok
elodie.tests.localstorage_test.test_checksum ... ok
elodie.tests.localstorage_test.test_add_location ... ok
elodie.tests.localstorage_test.test_get_location_name ... ok
elodie.tests.localstorage_test.test_get_location_name_within_threshold ... ok
elodie.tests.localstorage_test.test_get_location_name_outside_threshold ... ok
elodie.tests.localstorage_test.test_get_location_coordinates_exists ... ok
elodie.tests.localstorage_test.test_get_location_coordinates_does_not_exists ... ok
elodie.tests.log_test.test_calls_print_debug_false ... ok
elodie.tests.log_test.test_calls_print_debug_true ... ok
elodie.tests.log_test.test_calls_print_progress_no_new_line ... ok
elodie.tests.log_test.test_calls_print_progress_with_new_line ... ok
elodie.tests.plugins_test.test_plugin_base_inherits_db ... ok
elodie.tests.plugins_test.test_db_initialize_file ... ok
elodie.tests.plugins_test.test_db_get_then_set_then_get_then_delete ... ok
elodie.tests.plugins_test.test_db_get_all ... ok
elodie.tests.plugins_test.test_load_plugins_exists_not_set ... ok
elodie.tests.plugins_test.test_load_plugins_many ... ok
elodie.tests.plugins_test.test_load_plugins_one ... ok
elodie.tests.plugins_test.test_load_plugins_one_with_invalid ... ok
elodie.tests.plugins_test.test_load_plugins_set_many_with_invalid ... ok
elodie.tests.plugins_test.test_load_plugins_unset_backwards_compat ... ok
elodie.tests.plugins_test.test_run_before ... ok
elodie.tests.plugins_test.test_throw_error ... ok
elodie.tests.plugins_test.test_throw_error_one_of_many ... ok
elodie.tests.plugins_test.test_throw_error_runtime_error ... ok
elodie.tests.result_test.test_add_multiple_rows_with_success ... ok
elodie.tests.result_test.test_add_multiple_rows_with_failure ... ok
elodie.tests.result_test.test_add_multiple_rows_with_failure_and_success ... ok

----------------------------------------------------------------------
Ran 320 tests in 12.606s

OK (SKIP=3)