| meta_tags_parser/__init__.py |
(no function) |
5 |
0 |
0 |
100% |
| meta_tags_parser/download.py |
download_page_sync |
1 |
0 |
0 |
100% |
| meta_tags_parser/download.py |
download_page_async |
2 |
0 |
0 |
100% |
| meta_tags_parser/download.py |
(no function) |
7 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
set_settings_for_meta_tags |
1 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
resolve_active_options |
1 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_read_using_encoding |
4 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
convert_source_to_text |
10 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_build_boundary_pattern |
1 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_find_boundary_cut_position |
3 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_extract_html_scan_window |
5 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_find_social_tag_name |
4 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_extract_social_tags_from_precursor |
7 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_extract_basic_tags_from_precursor |
13 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_match_social_prefix |
1 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_extract_all_other_tags_from_precursor |
10 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
_prepare_normalized_meta_attrs |
8 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
parse_meta_tags_from_source |
12 |
0 |
0 |
100% |
| meta_tags_parser/parse.py |
(no function) |
30 |
0 |
0 |
100% |
| meta_tags_parser/public.py |
parse_tags_from_url |
1 |
0 |
0 |
100% |
| meta_tags_parser/public.py |
parse_tags_from_url_async |
1 |
0 |
0 |
100% |
| meta_tags_parser/public.py |
parse_snippets_from_url |
1 |
0 |
0 |
100% |
| meta_tags_parser/public.py |
parse_snippets_from_url_async |
1 |
0 |
0 |
100% |
| meta_tags_parser/public.py |
(no function) |
6 |
0 |
0 |
100% |
| meta_tags_parser/snippets.py |
_parse_dimension |
6 |
0 |
0 |
100% |
| meta_tags_parser/snippets.py |
parse_snippets_from_source |
15 |
0 |
0 |
100% |
| meta_tags_parser/snippets.py |
(no function) |
5 |
0 |
0 |
100% |
| meta_tags_parser/structs.py |
_transform_tag_name |
1 |
0 |
0 |
100% |
| meta_tags_parser/structs.py |
OneMetaTag.normalized_name |
1 |
0 |
0 |
100% |
| meta_tags_parser/structs.py |
(no function) |
59 |
0 |
0 |
100% |
| tests/__init__.py |
(no function) |
0 |
0 |
0 |
100% |
| tests/conftest.py |
provide_faker_seed |
1 |
0 |
0 |
100% |
| tests/conftest.py |
restore_global_settings |
2 |
0 |
0 |
100% |
| tests/conftest.py |
_build_tag_content |
5 |
0 |
0 |
100% |
| tests/conftest.py |
provide_fake_meta_page |
13 |
0 |
0 |
100% |
| tests/conftest.py |
provide_html_file_paths |
1 |
0 |
0 |
100% |
| tests/conftest.py |
(no function) |
27 |
0 |
0 |
100% |
| tests/corpus_support.py |
CorpusPageInfo.read_page_bytes |
1 |
0 |
0 |
100% |
| tests/corpus_support.py |
load_corpus_pages |
2 |
0 |
0 |
100% |
| tests/corpus_support.py |
convert_meta_tags_to_pairs |
1 |
0 |
0 |
100% |
| tests/corpus_support.py |
(no function) |
17 |
0 |
0 |
100% |
| tests/factories.py |
SettingsFromUserFactory.what_to_parse |
2 |
0 |
0 |
100% |
| tests/factories.py |
SettingsFromUserFactory.boundary_tags |
1 |
0 |
0 |
100% |
| tests/factories.py |
SettingsFromUserFactory.fallback_limit_chars |
1 |
0 |
0 |
100% |
| tests/factories.py |
SettingsFromUserFactory.max_scan_chars |
1 |
0 |
0 |
100% |
| tests/factories.py |
SettingsFromUserFactory.hard_limit_chars |
1 |
0 |
0 |
100% |
| tests/factories.py |
(no function) |
23 |
0 |
0 |
100% |
| tests/reference_parser.py |
ReferenceHeadParser.__init__ |
5 |
0 |
0 |
100% |
| tests/reference_parser.py |
ReferenceHeadParser.handle_starttag |
11 |
0 |
0 |
100% |
| tests/reference_parser.py |
ReferenceHeadParser.handle_endtag |
4 |
0 |
0 |
100% |
| tests/reference_parser.py |
ReferenceHeadParser.handle_data |
2 |
0 |
0 |
100% |
| tests/reference_parser.py |
_read_attribute |
1 |
0 |
0 |
100% |
| tests/reference_parser.py |
_collect_social_tags |
6 |
0 |
0 |
100% |
| tests/reference_parser.py |
_collect_basic_tags |
7 |
0 |
0 |
100% |
| tests/reference_parser.py |
_collect_other_tags |
1 |
0 |
0 |
100% |
| tests/reference_parser.py |
extract_reference_tags |
5 |
0 |
0 |
100% |
| tests/reference_parser.py |
(no function) |
19 |
0 |
0 |
100% |
| tests/test_captured_pages.py |
_read_captured_page |
1 |
0 |
0 |
100% |
| tests/test_captured_pages.py |
_find_tag_value |
2 |
0 |
0 |
100% |
| tests/test_captured_pages.py |
test_captured_page_is_parsed_as_expected |
7 |
0 |
0 |
100% |
| tests/test_captured_pages.py |
test_captured_page_snippet |
5 |
0 |
0 |
100% |
| tests/test_captured_pages.py |
test_all_captured_pages_are_covered |
1 |
0 |
0 |
100% |
| tests/test_captured_pages.py |
(no function) |
15 |
0 |
0 |
100% |
| tests/test_malformed_html.py |
test_unclosed_tag_does_not_hide_earlier_tags |
4 |
0 |
0 |
100% |
| tests/test_malformed_html.py |
test_degenerate_pages_never_raise |
4 |
0 |
0 |
100% |
| tests/test_malformed_html.py |
test_leading_byte_order_mark_does_not_break_the_title |
1 |
0 |
0 |
100% |
| tests/test_malformed_html.py |
test_attribute_without_closing_quote_yields_no_social_tags |
4 |
0 |
0 |
100% |
| tests/test_malformed_html.py |
test_arbitrary_text_is_parsed_without_errors |
5 |
0 |
0 |
100% |
| tests/test_malformed_html.py |
(no function) |
15 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_parse_title_and_social_tags_from_static_page |
6 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_twitter_tags_are_read_from_both_attributes |
3 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_open_graph_tags_are_read_only_from_the_property_attribute |
3 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_duplicated_basic_tags_keep_the_first_value_and_do_not_hide_the_rest |
3 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_basic_tags_never_exceed_the_known_tag_names |
4 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_tags_without_content_are_skipped |
2 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_upper_case_markup_is_normalized |
2 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_html_entities_are_decoded |
3 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_results_handed_to_the_user_are_immutable |
6 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_tags_after_the_head_are_ignored_by_default |
3 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_parse_from_generated_page |
6 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
test_only_the_leading_social_prefix_is_stripped |
2 |
0 |
0 |
100% |
| tests/test_parse_meta_tags.py |
(no function) |
22 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_what_to_parse_limits_the_result |
3 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_global_settings_are_used_and_can_be_restored |
9 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_explicit_options_win_over_global_settings |
4 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_snippets_follow_global_settings_too |
3 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_snippets_ignore_body_tags_with_default_settings |
1 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_hard_limit_chars_cuts_the_markup_that_is_looked_at |
3 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_hard_limit_larger_than_the_head_keeps_every_tag |
2 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_fallback_limit_decides_when_the_page_has_no_boundary_tag |
4 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_boundary_beyond_max_scan_chars_is_not_looked_for |
4 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_custom_boundary_tags_change_where_scanning_stops |
3 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_multi_character_lowercasing_does_not_shift_the_boundary |
5 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
test_generated_settings_never_fill_parts_that_were_not_requested |
5 |
0 |
0 |
100% |
| tests/test_parse_settings.py |
(no function) |
27 |
0 |
0 |
100% |
| tests/test_public_api.py |
_build_mock_transport |
2 |
0 |
0 |
100% |
| tests/test_public_api.py |
_build_mock_transport._handle_request |
3 |
0 |
0 |
100% |
| tests/test_public_api.py |
provide_recorded_request |
8 |
0 |
0 |
100% |
| tests/test_public_api.py |
provide_recorded_request._handle_sync_get |
4 |
0 |
0 |
100% |
| tests/test_public_api.py |
provide_recorded_request._make_async_client |
3 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_sync_download_follows_redirects_and_sets_a_timeout |
5 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_async_download_follows_redirects_and_sets_a_timeout |
4 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_custom_timeout_is_passed_through |
2 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_parse_tags_from_url |
4 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_parse_snippets_from_url |
3 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_options_reach_the_parser_through_the_url_helpers |
3 |
0 |
0 |
100% |
| tests/test_public_api.py |
test_async_url_helpers |
4 |
0 |
0 |
100% |
| tests/test_public_api.py |
(no function) |
28 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_package_and_reference_agree_on_the_documented_rules |
7 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_package_and_reference_stop_at_the_body_start_tag |
5 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_real_page_matches_the_reference_parser |
8 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_full_scan_starts_with_the_head_tags |
5 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_real_page_snippets_take_the_first_value |
7 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_real_page_invariants |
9 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_corpus_covers_many_sites_languages_and_encodings |
9 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
test_every_corpus_page_records_its_origin |
6 |
0 |
0 |
100% |
| tests/test_real_world_corpus.py |
(no function) |
31 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_snippets_are_stable_across_repeated_parsing |
1 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_snippets_are_empty_without_social_tags |
4 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_first_duplicated_tag_wins |
4 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_unknown_social_tags_do_not_reach_the_snippet |
2 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_snippets_accept_bytes |
2 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_image_width_examples |
2 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_image_dimensions_follow_the_ascii_digit_rule |
3 |
0 |
0 |
100% |
| tests/test_snippets.py |
test_any_title_survives_the_round_trip |
2 |
0 |
0 |
100% |
| tests/test_snippets.py |
(no function) |
24 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
_build_page_source |
1 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_declared_charset_is_honoured |
4 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_http_equiv_charset_declaration_is_honoured |
2 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_byte_order_mark_wins_over_the_default_encoding |
4 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_missing_declaration_falls_back_to_utf8 |
1 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_charset_that_cannot_decode_text_does_not_break_parsing |
2 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_charset_that_mangles_the_page_still_returns_a_result |
2 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_undecodable_bytes_are_dropped_instead_of_raising |
1 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
test_arbitrary_bytes_are_parsed_without_errors |
2 |
0 |
0 |
100% |
| tests/test_source_encodings.py |
(no function) |
21 |
0 |
0 |
100% |