[INFO] fetching crate tomesole 0.1.8...
[INFO] testing tomesole-0.1.8 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate tomesole 0.1.8 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate tomesole 0.1.8
[INFO] finished tweaking crates.io crate tomesole 0.1.8
[INFO] tweaked toml for crates.io crate tomesole 0.1.8 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate tomesole 0.1.8 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate tomesole 0.1.8 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315
[INFO] running `Command { std: "docker" "start" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling rustversion v1.0.23
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling cc v1.3.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling rustls v0.23.42
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling webpki-roots v1.0.9
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling lru v0.18.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling time v0.3.54
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling ratatui-macros v0.7.2
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]    Compiling tomesole v0.1.8 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `xattr`
[INFO] [stderr]   --> Cargo.toml:41:34
[INFO] [stderr]    |
[INFO] [stderr] 41 | [target."cfg(unix)".dependencies.xattr]
[INFO] [stderr]    |                                  ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `xattr`
[INFO] [stderr] warning: `tomesole` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 37.02s
[INFO] running `Command { std: "docker" "inspect" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tomesole v0.1.8 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `xattr`
[INFO] [stderr]   --> Cargo.toml:41:34
[INFO] [stderr]    |
[INFO] [stderr] 41 | [target."cfg(unix)".dependencies.xattr]
[INFO] [stderr]    |                                  ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `xattr`
[INFO] [stderr] warning: `tomesole` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.92s
[INFO] running `Command { std: "docker" "inspect" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused dependency `xattr`
[INFO] [stderr]   --> Cargo.toml:41:34
[INFO] [stderr]    |
[INFO] [stderr] 41 | [target."cfg(unix)".dependencies.xattr]
[INFO] [stderr]    |                                  ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `xattr`
[INFO] [stderr] warning: `tomesole` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/tomesole/435ead0cac5db799/out/tomesole-435ead0cac5db799)
[INFO] [stdout] 
[INFO] [stdout] running 358 tests
[INFO] [stdout] test args::tests::a_bare_md5_downloads_directly ... ok
[INFO] [stdout] test args::tests::get_accepts_urls_containing_an_md5 ... ok
[INFO] [stdout] test args::tests::field_flags_scope_the_query ... ok
[INFO] [stdout] test args::tests::missing_values_are_rejected ... ok
[INFO] [stdout] test args::tests::equals_form_is_equivalent ... ok
[INFO] [stdout] test args::tests::subcommands_are_recognised ... ok
[INFO] [stdout] test args::tests::bare_words_are_a_search ... ok
[INFO] [stdout] test args::tests::command_words_still_work_as_queries ... ok
[INFO] [stdout] test args::tests::queries_that_look_like_negative_numbers_still_work ... ok
[INFO] [stdout] test args::tests::history_and_open_are_recognised ... ok
[INFO] [stdout] test args::tests::leading_dot_on_extension_is_tolerated ... ok
[INFO] [stdout] test args::tests::double_dash_stops_flag_parsing ... ok
[INFO] [stdout] test args::tests::tags_in_a_bare_query_are_left_for_the_search_to_parse ... ok
[INFO] [stdout] test args::tests::explicit_search_subcommand_works_too ... ok
[INFO] [stdout] test args::tests::topics_accept_lists ... ok
[INFO] [stdout] test args::tests::unknown_flags_are_rejected ... ok
[INFO] [stdout] test args::tests::limit_is_validated_and_capped ... ok
[INFO] [stdout] test args::tests::no_arguments_opens_the_interface ... ok
[INFO] [stdout] test config::tests::a_default_config_renders_to_all_defaults ... ok
[INFO] [stdout] test args::tests::global_safety_flags_are_collected ... ok
[INFO] [stdout] test args::tests::mirrors_can_be_repeated_or_listed ... ok
[INFO] [stdout] test config::tests::a_relative_download_path_is_anchored_to_the_working_directory ... ok
[INFO] [stdout] test config::tests::a_tilde_that_is_not_a_prefix_is_left_alone ... ok
[INFO] [stdout] test config::tests::comma_separated_mirrors_split ... ok
[INFO] [stdout] test cover::tests::a_page_with_no_cover_says_so ... ok
[INFO] [stdout] test config::tests::quotes_are_stripped ... ok
[INFO] [stdout] test config::tests::a_populated_config_survives_a_render_round_trip ... ok
[INFO] [stdout] test config::tests::unknown_keys_survive_rendering_and_saving ... ok
[INFO] [stdout] test config::tests::parses_a_full_config ... ok
[INFO] [stdout] test cover::tests::covers_can_be_fetched_from_a_real_mirror ... ignored, needs the network and a working mirror
[INFO] [stdout] test config::tests::empty_config_is_defaults ... ok
[INFO] [stdout] test cover::tests::a_cache_path_is_always_a_direct_child_of_the_cache_directory ... ok
[INFO] [stdout] test config::tests::malformed_lines_are_reported_with_line_numbers ... ok
[INFO] [stdout] test cover::tests::a_cover_named_without_a_covers_directory_is_still_found ... ok
[INFO] [stdout] test config::tests::unknown_keys_are_ignored_not_fatal ... ok
[INFO] [stdout] test cover::tests::a_png_cover_is_kept_but_not_decoded_here ... ok
[INFO] [stdout] test cover::tests::hosts_are_compared_for_the_image_url ... ok
[INFO] [stdout] test cover::tests::a_web_page_is_not_an_image ... ok
[INFO] [stdout] test cover::tests::image_signatures_decide_the_kind ... ok
[INFO] [stdout] test config::tests::rejects_bad_values ... ok
[INFO] [stdout] test config::tests::the_home_directory_is_found_on_every_platform ... ok
[INFO] [stdout] test config::tests::tilde_expands_to_home ... ok
[INFO] [stdout] test cover::tests::a_real_jpeg_cover_decodes_to_pixels ... ok
[INFO] [stdout] test cover::tests::only_a_real_md5_names_a_cache_file ... ok
[INFO] [stdout] test cover::tests::the_cover_is_picked_out_of_the_page_furniture ... ok
[INFO] [stdout] test cover::tests::an_interrupted_cover_body_is_an_error_not_a_missing_cover ... ok
[INFO] [stdout] test download::tests::builds_a_readable_filename ... ok
[INFO] [stdout] test download::tests::a_matching_file_is_saved_and_marked_verified ... ok
[INFO] [stdout] test download::tests::absolute_paths_and_backslashes_are_neutralised ... ok
[INFO] [stdout] test download::tests::control_characters_and_newlines_are_stripped ... ok
[INFO] [stdout] test download::tests::html_responses_are_rejected_unless_expected ... ok
[INFO] [stdout] test download::tests::executable_extensions_are_refused ... ok
[INFO] [stdout] test download::tests::known_good_extensions_are_kept ... ok
[INFO] [stdout] test download::tests::extension_tricks_do_not_slip_through ... ok
[INFO] [stdout] test download::tests::no_replace_install_never_clobbers_an_existing_file ... ok
[INFO] [stdout] test download::tests::multibyte_titles_are_capped_on_char_boundaries ... ok
[INFO] [stdout] test download::tests::only_a_missing_link_facility_falls_back_to_copying ... ok
[INFO] [stdout] test download::tests::forced_install_replaces_an_existing_file ... ok
[INFO] [stdout] test download::tests::content_range_must_name_a_valid_start ... ok
[INFO] [stdout] test download::tests::dangerous_double_extensions_are_defused ... ok
[INFO] [stdout] test download::tests::empty_metadata_falls_back_to_the_md5 ... ok
[INFO] [stdout] test download::tests::path_separators_never_survive_sanitising ... ok
[INFO] [stdout] test embedded::tests::a_cbz_takes_the_first_page ... ok
[INFO] [stdout] test download::tests::the_copy_fallback_installs_without_a_hard_link ... ok
[INFO] [stdout] test embedded::tests::a_mobi_cover_is_found_through_its_exth_index ... ok
[INFO] [stdout] test embedded::tests::a_mobi_without_a_cover_tag_falls_back_to_the_largest_image ... ok
[INFO] [stdout] test embedded::tests::a_non_image_entry_is_not_mistaken_for_a_cover ... ok
[INFO] [stdout] test download::tests::a_tampered_file_is_rejected_and_leaves_nothing_behind ... ok
[INFO] [stdout] test embedded::tests::a_truncated_mobi_yields_none_not_a_panic ... ok
[INFO] [stdout] test embedded::tests::extracts_from_a_real_file ... ignored
[INFO] [stdout] test embedded::tests::an_epub_prefers_the_image_named_cover ... ok
[INFO] [stdout] test embedded::tests::an_epub_without_a_named_cover_takes_the_largest_image ... ok
[INFO] [stdout] test download::tests::the_copy_fallback_keeps_the_file_private ... ok
[INFO] [stdout] test download::tests::a_captcha_page_is_not_saved_as_a_book ... ok
[INFO] [stdout] test graphics::tests::a_terminal_that_cannot_do_anything_is_left_alone ... ok
[INFO] [stdout] test download::tests::the_copy_fallback_never_clobbers_an_existing_file ... ok
[INFO] [stdout] test download::tests::unknown_extensions_become_inert_bin ... ok
[INFO] [stdout] test download::tests::very_long_titles_are_capped ... ok
[INFO] [stdout] test graphics::tests::base64_matches_the_standard ... ok
[INFO] [stdout] test download::tests::user_supplied_names_are_sanitised_too ... ok
[INFO] [stdout] test download::tests::windows_reserved_names_are_escaped ... ok
[INFO] [stdout] test graphics::tests::an_odd_number_of_pixel_rows_does_not_run_off_the_end ... ok
[INFO] [stdout] test graphics::tests::empty_images_produce_no_escape_at_all ... ok
[INFO] [stdout] test graphics::tests::fitting_a_degenerate_image_does_not_panic ... ok
[INFO] [stdout] test graphics::tests::fitting_never_enlarges ... ok
[INFO] [stdout] test embedded::tests::garbage_is_rejected_without_panicking ... ok
[INFO] [stdout] test graphics::tests::iterm_is_recognised ... ok
[INFO] [stdout] test graphics::tests::kitty_terminals_are_recognised ... ok
[INFO] [stdout] test graphics::tests::terminals_without_images_still_get_blocks ... ok
[INFO] [stdout] test graphics::tests::a_single_chunk_image_says_so_immediately ... ok
[INFO] [stdout] test download::tests::version_suffixes_are_not_mistaken_for_extensions ... ok
[INFO] [stdout] test graphics::tests::half_blocks_fill_the_space_they_are_given ... ok
[INFO] [stdout] test history::tests::a_corrupt_line_is_skipped_not_fatal ... ok
[INFO] [stdout] test download::tests::a_resume_with_the_wrong_range_is_rejected_before_append ... ok
[INFO] [stdout] test history::tests::a_same_named_file_of_another_size_is_not_adopted ... ok
[INFO] [stdout] test graphics::tests::the_delete_escape_frees_the_image ... ok
[INFO] [stdout] test history::tests::an_entry_survives_a_round_trip ... ok
[INFO] [stdout] test history::tests::a_skip_of_a_known_file_changes_nothing ... ok
[INFO] [stdout] test graphics::tests::a_kitty_escape_is_well_formed_and_chunked ... ok
[INFO] [stdout] test history::tests::a_present_file_is_left_alone ... ok
[INFO] [stdout] test graphics::tests::an_iterm_escape_carries_the_file_verbatim ... ok
[INFO] [stdout] test history::tests::dates_are_converted_correctly ... ok
[INFO] [stdout] test history::tests::relative_times_read_naturally ... ok
[INFO] [stdout] test history::tests::selecting_by_md5_works_and_reports_a_miss ... ok
[INFO] [stdout] test history::tests::selecting_by_position_counts_from_the_newest ... ok
[INFO] [stdout] test history::tests::selecting_by_text_matches_title_author_and_filename ... ok
[INFO] [stdout] test history::tests::tabs_and_newlines_in_metadata_cannot_break_the_format ... ok
[INFO] [stdout] test html::tests::attribute_lookup_is_not_fooled_by_prefixes ... ok
[INFO] [stdout] test graphics::tests::fitting_preserves_the_aspect_ratio ... ok
[INFO] [stdout] test html::tests::cell_text_is_flattened_and_decoded ... ok
[INFO] [stdout] test html::tests::control_characters_never_survive_into_attributes ... ok
[INFO] [stdout] test history::tests::a_skip_of_an_unknown_file_is_recorded ... ok
[INFO] [stdout] test html::tests::control_characters_never_survive_into_text ... ok
[INFO] [stdout] test html::tests::extracts_md5_from_the_mirrors_cell ... ok
[INFO] [stdout] test html::tests::nested_tables_do_not_split_into_extra_rows ... ok
[INFO] [stdout] test history::tests::removing_an_entry_leaves_the_rest ... ok
[INFO] [stdout] test download::tests::oversized_downloads_are_refused ... ok
[INFO] [stdout] test history::tests::a_book_moved_to_the_new_download_directory_is_found_again ... ok
[INFO] [stdout] test download::tests::verification_can_be_disabled_but_is_reported_as_unverified ... ok
[INFO] [stdout] test history::tests::newest_comes_first ... ok
[INFO] [stdout] test html::tests::finds_the_right_table_among_several ... ok
[INFO] [stdout] test history::tests::re_downloading_updates_rather_than_duplicates ... ok
[INFO] [stdout] test html::tests::decodes_entities ... ok
[INFO] [stdout] test html::tests::raw_text_is_skipped_whatever_its_closing_tag_looks_like ... ok
[INFO] [stdout] test html::tests::skips_script_contents ... ok
[INFO] [stdout] test html::tests::splits_rows_into_nine_cells ... ok
[INFO] [stdout] test html::tests::handles_unclosed_rows ... ok
[INFO] [stdout] test html::tests::ignores_greater_than_inside_attribute_values ... ok
[INFO] [stdout] test html::tests::malformed_input_does_not_panic ... ok
[INFO] [stdout] test html::tests::missing_table_returns_none ... ok
[INFO] [stdout] test html::tests::text_does_not_glue_words_across_tags ... ok
[INFO] [stdout] test jpeg::tests::a_flat_block_transforms_to_a_flat_field ... ok
[INFO] [stdout] test html::tests::tolerates_stray_quotes_in_attributes ... ok
[INFO] [stdout] test jpeg::tests::extend_recovers_signed_coefficients ... ok
[INFO] [stdout] test jpeg::tests::the_bit_reader_stops_at_a_marker ... ok
[INFO] [stdout] test jpeg::tests::a_greyscale_jpeg_decodes_to_neutral_pixels ... ok
[INFO] [stdout] test jpeg::tests::a_progressive_file_is_refused_by_name ... ok
[INFO] [stdout] test jpeg::tests::absurd_dimensions_are_refused_before_allocating ... ok
[INFO] [stdout] test launch::tests::a_bare_program_name_is_not_a_path ... ok
[INFO] [stdout] test jpeg::tests::colours_land_in_the_right_quadrants ... ok
[INFO] [stdout] test jpeg::tests::signatures_are_recognised ... ok
[INFO] [stdout] test launch::tests::a_long_title_cannot_crowd_out_the_advice ... ok
[INFO] [stdout] test launch::tests::a_missing_file_is_reported_clearly ... ok
[INFO] [stdout] test jpeg::tests::rubbish_is_refused_rather_than_guessed_at ... ok
[INFO] [stdout] test jpeg::tests::running_off_the_end_yields_zeroes_not_a_panic ... ok
[INFO] [stdout] test jpeg::tests::the_bit_reader_unstuffs_ff_bytes ... ok
[INFO] [stdout] test launch::tests::a_reader_splits_into_a_program_and_its_options ... ok
[INFO] [stdout] test launch::tests::an_existing_path_with_a_space_is_not_split ... ok
[INFO] [stdout] test launch::tests::resolving_makes_the_path_absolute ... ok
[INFO] [stdout] test launch::tests::file_uris_escape_what_they_must ... ok
[INFO] [stdout] test launch::tests::a_quoted_program_keeps_the_spaces_in_its_path ... ok
[INFO] [stdout] test launch::tests::showing_a_file_is_not_told_to_set_a_reader ... ok
[INFO] [stdout] test html::tests::printable_entities_are_unaffected ... ok
[INFO] [stdout] test launch::tests::the_no_handler_message_says_what_to_do_next ... ok
[INFO] [stdout] test launch::tests::an_unknown_reader_fails_gracefully ... ok
[INFO] [stdout] test libgen::tests::ads_url_rejects_bad_md5 ... ok
[INFO] [stdout] test libgen::tests::builds_search_urls_with_filters ... ok
[INFO] [stdout] test launch::tests::a_reader_may_carry_arguments ... ok
[INFO] [stdout] test libgen::tests::extracts_md5_from_assorted_link_shapes ... ok
[INFO] [stdout] test libgen::tests::metadata_falls_back_to_the_md5_when_absent ... ok
[INFO] [stdout] test libgen::tests::finds_keyed_download_link ... ok
[INFO] [stdout] test libgen::tests::missing_download_link_is_an_error ... ok
[INFO] [stdout] test libgen::tests::garbage_pages_parse_to_nothing ... ok
[INFO] [stdout] test libgen::tests::bibtex_values_may_contain_braces ... ok
[INFO] [stdout] test libgen::tests::markup_inside_attributes_does_not_break_title_extraction ... ok
[INFO] [stdout] test libgen::tests::reads_metadata_from_the_interstitial_bibtex ... ok
[INFO] [stdout] test libgen::tests::series_link_does_not_masquerade_as_the_title ... ok
[INFO] [stdout] test libgen::tests::column_positions_come_from_the_header ... ok
[INFO] [stdout] test libgen::tests::parses_real_search_page ... ok
[INFO] [stdout] test md5::tests::hex_encoding_is_lowercase_and_padded ... ok
[INFO] [stdout] test mirror::tests::a_libgen_shaped_subdomain_of_another_domain_is_refused ... ok
[INFO] [stdout] test mirror::tests::discovery_only_accepts_plausible_libgen_hosts ... ok
[INFO] [stdout] test mirror::tests::long_error_messages_are_shortened_for_display ... ok
[INFO] [stdout] test mirror::tests::mirror_parsing_enforces_the_network_policy ... ok
[INFO] [stdout] test libgen::tests::every_parsed_row_has_a_usable_md5 ... ok
[INFO] [stdout] test libgen::tests::tolerates_an_inserted_column ... ok
[INFO] [stdout] test mirror::tests::parses_mirrors_in_several_forms ... ok
[INFO] [stdout] test jpeg::tests::a_real_jpeg_decodes_to_the_right_shape ... ok
[INFO] [stdout] test history::tests::concurrent_updates_are_merged_without_loss ... ok
[INFO] [stdout] test md5::tests::matches_rfc1321_vectors ... ok
[INFO] [stdout] test mirror::tests::empty_pool_is_an_error ... ok
[INFO] [stdout] test mirror::tests::every_seed_mirror_is_well_formed ... ok
[INFO] [stdout] test mirror::tests::pool_falls_through_to_the_next_mirror ... ok
[INFO] [stdout] test md5::tests::handles_block_boundary_lengths ... ok
[INFO] [stdout] test libgen::tests::title_excludes_isbn_noise_from_the_cell ... ok
[INFO] [stdout] test mirror::tests::pool_reports_all_failures_when_nothing_works ... ok
[INFO] [stdout] test mirror::tests::private_mirrors_allowed_only_with_opt_in ... ok
[INFO] [stdout] test model::tests::topic_names_round_trip ... ok
[INFO] [stdout] test model::tests::client_side_filters_apply ... ok
[INFO] [stdout] test net::tests::a_joined_non_http_scheme_is_refused ... ok
[INFO] [stdout] test net::tests::a_genuine_scheme_is_still_recognised ... ok
[INFO] [stdout] test model::tests::validates_md5_keys ... ok
[INFO] [stdout] test mirror::tests::ranking_puts_fastest_healthy_first_and_drops_failures ... ok
[INFO] [stdout] test net::tests::a_url_inside_a_query_string_does_not_look_absolute ... ok
[INFO] [stdout] test net::tests::accepts_normal_mirror_uris ... ok
[INFO] [stdout] test net::tests::allows_ordinary_public_addresses ... ok
[INFO] [stdout] test model::tests::formats_bytes_readably ... ok
[INFO] [stdout] test net::tests::blocks_ipv6_local_ranges ... ok
[INFO] [stdout] test net::tests::blocks_loopback_and_private_addresses ... ok
[INFO] [stdout] test net::tests::encodes_query_values ... ok
[INFO] [stdout] test model::tests::parses_libgen_size_strings ... ok
[INFO] [stdout] test model::tests::over_fetches_when_filtering_client_side ... ok
[INFO] [stdout] test net::tests::a_redirect_without_a_location_is_an_error ... ok
[INFO] [stdout] test net::tests::join_resolves_dot_segments_and_drops_fragments ... ok
[INFO] [stdout] test net::tests::joins_relative_links_like_a_browser ... ok
[INFO] [stdout] test net::tests::http_allowed_only_with_opt_in ... ok
[INFO] [stdout] test net::tests::rejects_dangerous_uri_shapes ... ok
[INFO] [stdout] test net::tests::the_hop_guard_refuses_cloud_metadata ... ok
[INFO] [stdout] test query::tests::a_colon_that_is_not_a_tag_stays_in_the_query ... ok
[INFO] [stdout] test net::tests::a_ranged_request_asks_for_an_untransformed_body ... ok
[INFO] [stdout] test net::tests::follows_a_redirect_carrying_a_url_in_its_query ... ok
[INFO] [stdout] test query::tests::a_column_tag_scopes_the_search_and_keeps_its_value ... ok
[INFO] [stdout] test net::tests::a_failing_status_is_reported_against_its_host ... ok
[INFO] [stdout] test net::tests::a_referer_is_sent_only_to_the_host_it_names ... ok
[INFO] [stdout] test query::tests::a_tag_with_no_value_is_ignored ... ok
[INFO] [stdout] test query::tests::an_empty_string_is_harmless ... ok
[INFO] [stdout] test query::tests::plain_text_is_left_alone ... ok
[INFO] [stdout] test query::tests::quoted_values_hold_together ... ok
[INFO] [stdout] test query::tests::repeated_tags_do_not_repeat_the_column ... ok
[INFO] [stdout] test query::tests::applying_to_a_query_respects_flags_already_set ... ok
[INFO] [stdout] test query::tests::filters_do_not_leak_into_the_query_terms ... ok
[INFO] [stdout] test query::tests::multibyte_text_is_tokenised_by_character ... ok
[INFO] [stdout] test term::tests::formats_eta_readably ... ok
[INFO] [stdout] test term::tests::padding_uses_display_width ... ok
[INFO] [stdout] test term::tests::parses_selection_forms ... ok
[INFO] [stdout] test term::tests::rejects_out_of_range_and_malformed_selections ... ok
[INFO] [stdout] test query::tests::short_aliases_work ... ok
[INFO] [stdout] test query::tests::topics_are_understood_and_bad_ones_ignored ... ok
[INFO] [stdout] test term::tests::styles_wrap_when_enabled ... ok
[INFO] [stdout] test term::tests::measures_wide_characters ... ok
[INFO] [stdout] test term::tests::styles_are_inert_when_disabled ... ok
[INFO] [stdout] test term::tests::terminal_width_is_always_sane ... ok
[INFO] [stdout] test query::tests::tags_mix_with_free_text_in_order ... ok
[INFO] [stdout] test net::tests::caps_the_hop_count_and_names_the_original_url ... ok
[INFO] [stdout] test term::tests::truncation_respects_display_width ... ok
[INFO] [stdout] test net::tests::follows_redirects_relative_to_the_hop_that_sent_them ... ok
[INFO] [stdout] test tui::tests::a_field_edit_captures_the_tab_key_instead_of_switching ... ok
[INFO] [stdout] test tui::tests::a_decoded_cover_is_scaled_before_it_is_kept ... ok
[INFO] [stdout] test tui::tests::a_failure_is_surfaced_rather_than_swallowed ... ok
[INFO] [stdout] test tui::tests::a_library_cover_with_no_local_source_falls_back_to_a_mirror ... ok
[INFO] [stdout] test tui::tests::a_line_field_rejects_junk_and_accepts_a_valid_value ... ok
[INFO] [stdout] test tui::tests::a_mirror_arriving_revives_library_covers_that_had_none_to_ask ... ok
[INFO] [stdout] test md5::tests::streaming_matches_one_shot ... ok
[INFO] [stdout] test tui::tests::a_filter_that_matches_nothing_says_so ... ok
[INFO] [stdout] test tui::tests::a_query_of_nothing_but_filters_is_refused ... ok
[INFO] [stdout] test net::tests::a_hostile_redirect_target_is_refused_mid_chain ... ok
[INFO] [stdout] test tui::tests::a_superseded_search_cannot_replace_newer_results ... ok
[INFO] [stdout] test tui::tests::a_terminal_without_graphics_never_reserves_cover_space ... ok
[INFO] [stdout] test download::tests::a_slow_stream_is_not_bound_by_the_page_deadline ... ok
[INFO] [stdout] test tui::tests::an_author_fragment_reaches_the_full_name ... ok
[INFO] [stdout] test tui::tests::a_yank_is_sent_once_and_then_forgotten ... ok
[INFO] [stdout] test tui::tests::an_error_carrying_advice_is_not_shortened ... ok
[INFO] [stdout] test tui::tests::an_empty_library_tab_is_harmless_and_explains_itself ... ok
[INFO] [stdout] test tui::tests::a_runaway_message_is_cut_back_to_a_word ... ok
[INFO] [stdout] test tui::tests::arrows_move_the_field_cursor_after_tabbing_in_from_a_fresh_session ... ok
[INFO] [stdout] test tui::tests::an_eta_reads_compactly ... ok
[INFO] [stdout] test tui::tests::an_over_narrow_filter_pair_explains_itself ... ok
[INFO] [stdout] test tui::tests::capital_a_toggles_every_mark ... ok
[INFO] [stdout] test tui::tests::collections_can_be_toggled_in_a_sub_list ... ok
[INFO] [stdout] test tui::tests::covers_are_only_looked_up_after_the_selection_settles ... ok
[INFO] [stdout] test tui::tests::ctrl_u_clears_the_line ... ok
[INFO] [stdout] test tui::tests::ctrl_w_deletes_a_word ... ok
[INFO] [stdout] test tui::tests::ctrl_c_quits_from_editing_too ... ok
[INFO] [stdout] test tui::tests::clearing_live_fields_restores_built_in_defaults ... ok
[INFO] [stdout] test tui::tests::dump_design_previews ... ignored
[INFO] [stdout] test tui::tests::a_cover_is_drawn_as_blocks_when_there_is_no_image_protocol ... ok
[INFO] [stdout] test tui::tests::editing_a_path_field_expands_a_tilde ... ok
[INFO] [stdout] test tui::tests::each_protocol_keeps_only_what_it_can_draw ... ok
[INFO] [stdout] test tui::tests::editing_handles_multibyte_text ... ok
[INFO] [stdout] test tui::tests::editing_respects_the_caret ... ok
[INFO] [stdout] test tui::tests::empty_results_leave_nothing_selected ... ok
[INFO] [stdout] test tui::tests::enabling_covers_live_initializes_the_graphics_protocol ... ok
[INFO] [stdout] test tui::tests::empty_search_is_reported_not_sent ... ok
[INFO] [stdout] test tui::tests::esc_leaves_the_sort_untouched ... ok
[INFO] [stdout] test tui::tests::filters_survive_a_new_search ... ok
[INFO] [stdout] test tui::tests::finishing_the_last_job_clears_the_busy_flag ... ok
[INFO] [stdout] test tui::tests::forgetting_covers_clears_both_halves ... ok
[INFO] [stdout] test tui::tests::facet_counts_respect_the_other_filter ... ok
[INFO] [stdout] test tui::tests::job_labels_cover_every_state ... ok
[INFO] [stdout] test tui::tests::a_marked_batch_reports_its_combined_size ... ok
[INFO] [stdout] test tui::tests::live_config_edits_do_not_override_cli_values ... ok
[INFO] [stdout] test tui::tests::mode_switching_and_quitting ... ok
[INFO] [stdout] test tui::tests::navigation_on_an_empty_list_is_harmless ... ok
[INFO] [stdout] test tui::tests::navigation_stays_in_bounds ... ok
[INFO] [stdout] test tui::tests::only_the_first_line_of_an_error_is_shown ... ok
[INFO] [stdout] test tui::tests::open_then_enter_takes_the_most_common_value ... ok
[INFO] [stdout] test tui::tests::mirrors_can_be_added_and_deleted ... ok
[INFO] [stdout] test tui::tests::opening_a_picker_does_not_leak_keys_to_the_list ... ok
[INFO] [stdout] test tui::tests::q_quits_from_the_library_tab_too ... ok
[INFO] [stdout] test tui::tests::remembered_covers_are_capped ... ok
[INFO] [stdout] test tui::tests::moving_in_the_library_arms_a_cover_lookup ... ok
[INFO] [stdout] test tui::tests::opening_a_result_that_was_never_downloaded_says_so ... ok
[INFO] [stdout] test tui::tests::help_overlay_lists_the_keys ... ok
[INFO] [stdout] test tui::tests::results_reset_selection_and_marks ... ok
[INFO] [stdout] test tui::tests::search_without_a_mirror_is_deferred_not_lost ... ok
[INFO] [stdout] test tui::tests::selection_downloads_and_marks_follow_the_visible_rows ... ok
[INFO] [stdout] test tui::tests::shortcut_letters_are_literal_while_editing ... ok
[INFO] [stdout] test tui::tests::sorting_reorders_the_list_and_keeps_the_selection ... ok
[INFO] [stdout] test tui::tests::space_marks_and_advances ... ok
[INFO] [stdout] test tui::tests::renders_the_empty_and_error_states ... ok
[INFO] [stdout] test tui::tests::tab_rotates_the_open_picker_between_facets ... ok
[INFO] [stdout] test tui::tests::terminal_title_is_pushed_set_and_restored ... ok
[INFO] [stdout] test tui::tests::the_author_picker_filters_by_name ... ok
[INFO] [stdout] test tui::tests::the_filter_keeps_the_highlighted_book_when_it_survives ... ok
[INFO] [stdout] test tui::tests::download_state_is_visible_in_the_row_and_detail ... ok
[INFO] [stdout] test tui::tests::the_focused_cover_is_never_evicted ... ok
[INFO] [stdout] test tui::tests::the_language_picker_narrows_the_results ... ok
[INFO] [stdout] test tui::tests::the_library_is_reachable_before_any_search ... ok
[INFO] [stdout] test tui::tests::the_filter_narrows_the_library_as_you_type ... ok
[INFO] [stdout] test tui::tests::the_library_reuses_a_cover_across_tabs_by_md5 ... ok
[INFO] [stdout] test tui::tests::the_library_strip_summarises_the_shelf ... ok
[INFO] [stdout] test tui::tests::the_library_tab_navigates ... ok
[INFO] [stdout] test tui::tests::the_meter_stays_within_its_width ... ok
[INFO] [stdout] test tui::tests::a_result_already_in_the_library_is_flagged ... ok
[INFO] [stdout] test tui::tests::a_list_taller_than_the_screen_grows_a_scroll_indicator ... ok
[INFO] [stdout] test tui::tests::the_library_tab_lists_past_downloads ... ok
[INFO] [stdout] test tui::tests::the_settings_form_scrolls_to_keep_the_selection_visible ... ok
[INFO] [stdout] test tui::tests::the_settings_form_scrolls_within_a_long_mirror_list ... ok
[INFO] [stdout] test tui::tests::the_sort_menu_flips_direction_in_place ... ok
[INFO] [stdout] test tui::tests::the_filter_bar_reports_the_narrowing ... ok
[INFO] [stdout] test tui::tests::the_sort_menu_selects_a_column_directly ... ok
[INFO] [stdout] test tui::tests::a_pixel_cover_is_placed_once_and_not_repainted ... ok
[INFO] [stdout] test tui::tests::the_settings_tab_renders_with_its_fields_and_sub_lists ... ok
[INFO] [stdout] test tui::tests::the_three_filters_compose_and_x_clears_them ... ok
[INFO] [stdout] test tui::tests::toggling_a_bool_updates_the_config_applies_live_and_saves ... ok
[INFO] [stdout] test tui::tests::tui_searches_use_the_startup_config_defaults ... ok
[INFO] [stdout] test tui::tests::renders_results_and_details ... ok
[INFO] [stdout] test tui::tests::typing_builds_the_query ... ok
[INFO] [stdout] test tui::tests::upgrading_a_cover_in_place_does_not_double_count_it ... ok
[INFO] [stdout] test ui::tests::a_missing_file_is_marked_even_with_a_long_title ... ok
[INFO] [stdout] test ui::tests::an_entry_with_nothing_in_it_still_renders ... ok
[INFO] [stdout] test ui::tests::a_hostile_title_still_respects_the_terminal_width ... ok
[INFO] [stdout] test ui::tests::empty_results_produce_an_empty_json_array ... ok
[INFO] [stdout] test ui::tests::flex_widths_stay_positive_on_narrow_terminals ... ok
[INFO] [stdout] test ui::tests::escape_sequences_from_a_mirror_never_reach_the_table ... ok
[INFO] [stdout] test ui::tests::history_json_carries_both_forms_of_the_time ... ok
[INFO] [stdout] test ui::tests::json_is_well_formed_and_escaped ... ok
[INFO] [stdout] test ui::tests::json_escapes_control_characters ... ok
[INFO] [stdout] test ui::tests::missing_metadata_renders_blank_not_none ... ok
[INFO] [stdout] test tui::tests::y_copies_the_md5_to_the_status_line ... ok
[INFO] [stdout] test ui::tests::rows_never_exceed_the_terminal_width ... ok
[INFO] [stdout] test ui::tests::overlong_fixed_width_fields_do_not_shift_the_row ... ok
[INFO] [stdout] test ui::tests::wide_titles_stay_aligned ... ok
[INFO] [stdout] test ui::tests::table_has_a_row_per_book_plus_headers ... ok
[INFO] [stdout] test ui::tests::the_history_table_lines_up ... ok
[INFO] [stdout] test tui::tests::a_library_book_shows_its_cover_in_both_layouts ... ok
[INFO] [stdout] test history::tests::the_file_is_capped ... ok
[INFO] [stdout] test tui::tests::the_sort_menu_opens_on_the_current_order ... ok
[INFO] [stdout] test net::tests::retry_gives_up_and_reports_last_error ... ok
[INFO] [stdout] test net::tests::retry_succeeds_after_failure ... ok
[INFO] [stdout] test tui::tests::the_picker_lists_the_values_present_with_counts ... ok
[INFO] [stdout] test tui::tests::the_tab_bar_shows_both_tabs_and_the_count ... ok
[INFO] [stdout] test tui::tests::the_selection_reads_along_the_bottom_band ... ok
[INFO] [stdout] test tui::tests::a_cover_never_squeezes_out_the_results ... ok
[INFO] [stdout] test tui::tests::renders_at_awkward_sizes_without_panicking ... ok
[INFO] [stdout] test jpeg::tests::truncation_at_any_point_is_survivable ... ok
[INFO] [stdout] test jpeg::tests::corrupt_bytes_do_not_panic ... ok
[INFO] [stdout] test net::tests::get_text_enforces_the_page_cap ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 355 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 1.25s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315", kill_on_drop: false }`
[INFO] [stdout] 40d4caab2ace7e91eb475f11fe97d560f06ead829b7e1bddee0ee691a6beb315
