[INFO] fetching crate pulpit-core 0.0.17...
[INFO] testing pulpit-core-0.0.17 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate pulpit-core 0.0.17 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate pulpit-core 0.0.17
[INFO] finished tweaking crates.io crate pulpit-core 0.0.17
[INFO] tweaked toml for crates.io crate pulpit-core 0.0.17 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate pulpit-core 0.0.17 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pulpit-core 0.0.17 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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] 492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343
[INFO] running `Command { std: "docker" "start" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", 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" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", 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" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling aho-corasick v1.1.5
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling pulpit-core v0.0.17 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.30s
[INFO] running `Command { std: "docker" "inspect" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", 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" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling pulpit-core v0.0.17 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 9.99s
[INFO] running `Command { std: "docker" "inspect" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", 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" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/pulpit_core-bbea44720d0dba35)
[INFO] [stdout] 
[INFO] [stdout] running 405 tests
[INFO] [stdout] test annotate::draft::tests::a_resize_out_of_a_box_with_no_area_is_refused_rather_than_dividing_by_it ... ok
[INFO] [stdout] test annotate::draft::tests::a_stamp_with_a_picture_that_does_not_match_its_dimensions_is_malformed ... ok
[INFO] [stdout] test annotate::draft::tests::a_stroke_with_more_points_than_the_limit_is_refused_before_anything_is_written ... ok
[INFO] [stdout] test annotate::draft::tests::a_zero_area_rectangle_is_not_an_annotation ... ok
[INFO] [stdout] test annotate::draft::tests::a_picture_of_a_signature_is_never_called_a_signature ... ok
[INFO] [stdout] test annotate::draft::tests::a_stroke_carrying_a_non_number_is_refused ... ok
[INFO] [stdout] test annotate::draft::tests::a_highlight_needs_quads_that_mark_something ... ok
[INFO] [stdout] test annotate::draft::tests::resizing_a_stroke_carries_its_points_with_the_box ... ok
[INFO] [stdout] test annotate::draft::tests::a_stroke_that_wanders_off_the_page_is_rejected_even_if_it_comes_back ... ok
[INFO] [stdout] test annotate::draft::tests::empty_free_text_is_not_committed ... ok
[INFO] [stdout] test annotate::draft::tests::rewriting_a_mark_changes_what_it_says_and_nothing_else ... ok
[INFO] [stdout] test annotate::draft::tests::style_repairs_bring_every_measure_back_into_range ... ok
[INFO] [stdout] test annotate::draft::tests::text_markup_is_not_freely_movable_and_the_rest_is ... ok
[INFO] [stdout] test annotate::gesture::tests::a_box_and_an_ellipse_reach_the_file_as_square_and_circle ... ok
[INFO] [stdout] test annotate::gesture::tests::a_box_is_the_rectangle_the_drag_bounded_however_it_was_drawn ... ok
[INFO] [stdout] test annotate::draft::tests::an_empty_note_is_not_committed_either ... ok
[INFO] [stdout] test annotate::draft::tests::an_empty_stroke_is_not_an_annotation_but_a_single_point_is ... ok
[INFO] [stdout] test annotate::gesture::tests::a_committed_stroke_is_simplified_before_it_is_sent ... ok
[INFO] [stdout] test annotate::gesture::tests::a_corner_drag_leaves_the_opposite_corner_where_it_was ... ok
[INFO] [stdout] test annotate::draft::tests::the_kinds_that_cannot_be_reshaped_refuse_rather_than_lie ... ok
[INFO] [stdout] test annotate::draft::tests::text_beyond_the_limit_is_refused ... ok
[INFO] [stdout] test annotate::gesture::tests::a_drag_by_something_that_is_not_a_number_moves_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::a_drag_that_returned_to_where_it_started_is_not_an_edit ... ok
[INFO] [stdout] test annotate::gesture::tests::a_corner_dragged_past_its_opposite_stops_rather_than_inverting ... ok
[INFO] [stdout] test annotate::gesture::tests::a_line_is_a_stroke_between_the_two_points_the_hand_visited ... ok
[INFO] [stdout] test annotate::gesture::tests::a_new_gesture_puts_down_the_held_selection ... ok
[INFO] [stdout] test annotate::draft::tests::commands_name_what_they_do_and_what_they_touch ... ok
[INFO] [stdout] test annotate::draft::tests::an_ink_rect_encloses_the_painted_width_rather_than_the_centre_line ... ok
[INFO] [stdout] test annotate::gesture::tests::a_default_interaction_is_the_same_as_a_new_one ... ok
[INFO] [stdout] test annotate::gesture::tests::a_gesture_cannot_grow_past_the_point_limit ... ok
[INFO] [stdout] test annotate::gesture::tests::a_placed_mark_off_the_page_commits_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::a_placed_note_commits_one_create ... ok
[INFO] [stdout] test annotate::gesture::tests::a_press_that_went_nowhere_still_makes_the_dot_it_meant_to ... ok
[INFO] [stdout] test annotate::gesture::tests::a_select_text_sweep_holds_the_words_and_commits_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::a_select_text_sweep_over_nothing_holds_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::a_selection_that_resolved_to_no_text_commits_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::a_shape_that_never_left_its_corner_commits_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::a_stroke_commits_exactly_one_create_command ... ok
[INFO] [stdout] test annotate::gesture::tests::a_resolved_selection_commits_one_highlight_carrying_its_text ... ok
[INFO] [stdout] test annotate::gesture::tests::changing_the_nib_mid_sweep_leaves_the_mark_under_the_hand_alone ... ok
[INFO] [stdout] test annotate::gesture::tests::an_eraser_sweep_that_touched_nothing_commits_nothing ... ok
[INFO] [stdout] test annotate::gesture::tests::cancelling_leaves_the_document_alone ... ok
[INFO] [stdout] test annotate::gesture::tests::an_arrowhead_never_outgrows_the_shaft_it_is_on ... ok
[INFO] [stdout] test annotate::gesture::tests::an_arrow_has_its_head_on_the_end_the_drag_finished_on ... ok
[INFO] [stdout] test annotate::gesture::tests::a_page_change_clears_the_transient_effects_and_nothing_else ... ok
[INFO] [stdout] test annotate::gesture::tests::a_page_change_puts_down_the_held_selection ... ok
[INFO] [stdout] test annotate::gesture::tests::changing_the_shape_mid_drag_leaves_the_one_under_the_hand_alone ... ok
[INFO] [stdout] test annotate::gesture::tests::changing_tool_mid_stroke_abandons_it ... ok
[INFO] [stdout] test annotate::gesture::tests::finishing_a_transform_here_never_deletes_the_mark ... ok
[INFO] [stdout] test annotate::gesture::tests::the_pointer_and_spotlight_tools_start_no_gesture ... ok
[INFO] [stdout] test annotate::gesture::tests::moving_carries_every_edge_the_same_distance ... ok
[INFO] [stdout] test annotate::gesture::tests::the_stamp_places_the_mark_it_is_set_to ... ok
[INFO] [stdout] test annotate::hit::tests::a_band_takes_what_it_encloses_and_not_what_it_merely_clips ... ok
[INFO] [stdout] test annotate::hit::tests::a_diagonal_stroke_is_not_selected_from_the_corner_of_its_bounding_box ... ok
[INFO] [stdout] test annotate::hit::tests::a_fast_sweep_does_not_jump_over_a_stroke ... ok
[INFO] [stdout] test annotate::hit::tests::a_flick_across_several_marks_takes_all_of_them_in_the_order_it_met_them ... ok
[INFO] [stdout] test annotate::hit::tests::a_highlight_is_hit_on_its_runs_rather_than_across_its_columns ... ok
[INFO] [stdout] test annotate::hit::tests::a_single_point_stroke_is_a_dot_that_can_be_hit ... ok
[INFO] [stdout] test annotate::hit::tests::a_wider_stroke_is_easier_to_hit ... ok
[INFO] [stdout] test annotate::hit::tests::the_eraser_never_takes_an_annotation_it_may_not_edit ... ok
[INFO] [stdout] test annotate::hit::tests::the_topmost_annotation_is_the_last_one_painted ... ok
[INFO] [stdout] test annotate::hit::tests::an_annotation_with_no_finer_geometry_falls_back_to_its_rectangle ... ok
[INFO] [stdout] test annotate::gesture::tests::styles_are_repaired_on_the_way_in ... ok
[INFO] [stdout] test annotate::id::tests::a_seed_reproduces_its_own_stream ... ok
[INFO] [stdout] test annotate::hit::tests::an_eraser_over_a_stack_takes_the_one_on_top_and_not_what_is_under_it ... ok
[INFO] [stdout] test annotate::id::tests::an_imported_name_is_not_claimed_as_pulpits_own ... ok
[INFO] [stdout] test annotate::gesture::tests::the_nib_chooses_the_subtype_the_sweep_commits ... ok
[INFO] [stdout] test annotate::id::tests::imported_names_are_adopted_only_when_usable ... ok
[INFO] [stdout] test annotate::id::tests::two_seeds_do_not_produce_the_same_stream ... ok
[INFO] [stdout] test annotate::presenter::tests::a_committed_label_comes_back_in_the_box_it_claims ... ok
[INFO] [stdout] test annotate::presenter::tests::a_committed_mark_comes_back_as_the_stroke_that_made_it ... ok
[INFO] [stdout] test annotate::presenter::tests::a_highlight_comes_back_as_the_runs_it_covers ... ok
[INFO] [stdout] test annotate::presenter::tests::a_highlighter_stroke_keeps_its_translucency ... ok
[INFO] [stdout] test annotate::presenter::tests::a_label_is_placed_and_sized_in_page_points ... ok
[INFO] [stdout] test annotate::presenter::tests::a_label_on_half_a_page_is_set_to_half_the_type_size ... ok
[INFO] [stdout] test annotate::presenter::tests::a_mark_on_another_page_is_not_drawn_on_this_slide ... ok
[INFO] [stdout] test annotate::presenter::tests::a_mark_on_the_left_half_of_a_split_page_lands_on_that_half ... ok
[INFO] [stdout] test annotate::presenter::tests::a_mark_on_the_notes_half_stays_off_the_slide_half ... ok
[INFO] [stdout] test annotate::presenter::tests::a_run_on_the_other_half_of_a_split_page_is_not_on_this_slide ... ok
[INFO] [stdout] test annotate::presenter::tests::a_stroke_with_nothing_in_it_commits_nothing ... ok
[INFO] [stdout] test annotate::presenter::tests::an_empty_label_is_not_an_annotation ... ok
[INFO] [stdout] test annotate::presenter::tests::a_label_on_the_other_half_of_a_split_page_is_not_adopted ... ok
[INFO] [stdout] test annotate::presenter::tests::a_mark_on_a_whole_page_lands_where_it_was_drawn ... ok
[INFO] [stdout] test annotate::presenter::tests::an_unusable_placement_refuses_rather_than_dividing_by_it ... ok
[INFO] [stdout] test annotate::stroke::tests::a_nonsense_tolerance_leaves_the_stroke_alone ... ok
[INFO] [stdout] test annotate::stroke::tests::a_sample_that_is_not_a_number_is_refused_before_it_reaches_a_buffer ... ok
[INFO] [stdout] test annotate::presenter::tests::every_placement_round_trips_a_point_it_could_carry ... ok
[INFO] [stdout] test annotate::stroke::tests::a_corner_survives_simplification ... ok
[INFO] [stdout] test annotate::stroke::tests::a_straight_line_simplifies_to_its_endpoints ... ok
[INFO] [stdout] test annotate::presenter::tests::a_resolved_text_run_lands_on_the_slide_it_was_swept_on ... ok
[INFO] [stdout] test annotate::stroke::tests::a_stroke_that_doubles_back_keeps_its_fold ... ok
[INFO] [stdout] test annotate::presenter::tests::a_stroke_becomes_a_draft_on_the_page_it_was_drawn_over ... ok
[INFO] [stdout] test annotate::stroke::tests::samples_on_top_of_each_other_are_refused ... ok
[INFO] [stdout] test annotate::stroke::tests::simplification_never_moves_the_ends_and_never_grows_a_stroke ... ok
[INFO] [stdout] test annotate::stroke::tests::the_bounds_are_the_ones_the_spec_names ... ok
[INFO] [stdout] test annotate::text_box::tests::a_box_is_never_too_small_to_find ... ok
[INFO] [stdout] test annotate::text_box::tests::a_line_is_measured_from_the_faces_own_widths ... ok
[INFO] [stdout] test annotate::text_box::tests::text_outside_the_table_is_charged_rather_than_ignored ... ok
[INFO] [stdout] test annotation::tests::a_highlighter_stroke_keeps_its_translucent_kind_and_own_width_range ... ok
[INFO] [stdout] test annotation::tests::a_mixed_colour_survives_the_round_trip_and_compares_equal ... ok
[INFO] [stdout] test annotation::tests::a_move_after_the_button_came_up_does_not_extend_anything ... ok
[INFO] [stdout] test annotation::tests::a_press_that_went_nowhere_leaves_a_dot_but_never_an_empty_stroke ... ok
[INFO] [stdout] test annotate::text_box::tests::a_blank_line_still_takes_its_height ... ok
[INFO] [stdout] test annotate::text_box::tests::a_box_is_as_wide_as_its_widest_line_and_as_tall_as_its_lines ... ok
[INFO] [stdout] test annotation::tests::a_stroke_stops_growing_at_its_point_limit ... ok
[INFO] [stdout] test annotation::tests::absurd_measures_are_brought_back_into_range ... ok
[INFO] [stdout] test annotation::tests::a_stroke_width_outside_the_range_is_bounded_when_the_stroke_starts ... ok
[INFO] [stdout] test annotation::tests::audience_visibility_is_a_deliberate_choice_that_survives_marks_coming_and_going ... ok
[INFO] [stdout] test annotation::tests::clearing_takes_the_marks_but_not_the_pen ... ok
[INFO] [stdout] test annotation::tests::coordinates_off_the_page_are_refused_rather_than_clamped ... ok
[INFO] [stdout] test annotation::tests::every_ink_colour_is_a_real_colour_with_a_name ... ok
[INFO] [stdout] test annotation::tests::arming_a_tool_takes_away_only_the_other_tools_marks ... ok
[INFO] [stdout] test annotation::tests::every_tool_with_a_panel_has_something_in_it ... ok
[INFO] [stdout] test annotation::tests::navigation_discards_everything_because_ink_is_temporary ... ok
[INFO] [stdout] test annotation::tests::only_the_bands_default_kind_touches_the_document ... ok
[INFO] [stdout] test annotate::gesture::tests::one_eraser_sweep_is_one_transaction_however_many_marks_it_takes ... ok
[INFO] [stdout] test annotation::tests::only_the_highlighters_default_nib_washes_the_words ... ok
[INFO] [stdout] test annotate::gesture::tests::samples_on_top_of_each_other_do_not_grow_the_stroke ... ok
[INFO] [stdout] test annotation::tests::points_closer_than_the_minimum_distance_are_dropped ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_band_holds_what_it_encloses_and_the_delete_takes_exactly_those ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_gesture_that_made_no_mark_hands_nothing_over ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_label_and_a_note_are_the_same_gesture_and_differ_at_the_commit ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_mark_the_document_has_not_named_cannot_be_held ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_page_turn_does_not_snatch_the_pen_out_of_a_moving_hand ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_page_turn_takes_what_the_document_says_is_there ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_re_adopted_label_keeps_the_same_local_id ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::erasing_a_stroke_the_document_has_not_named_reports_nothing ... ok
[INFO] [stdout] test annotation::tests::a_stroke_records_the_points_the_hand_actually_moved_through ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::erasing_before_the_answer_does_not_misname_the_next_stroke ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::settling_a_gesture_is_not_the_same_as_having_something_to_undo ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::the_pen_coming_up_hands_the_stroke_over ... ok
[INFO] [stdout] test annotation::tests::the_eraser_detects_a_crossing_between_sampled_points ... ok
[INFO] [stdout] test annotation::tests::the_eraser_removes_only_a_stroke_it_touches ... ok
[INFO] [stdout] test annotation::tests::the_oldest_stroke_is_dropped_rather_than_the_pen_going_dry ... ok
[INFO] [stdout] test autoadvance::tests::a_document_with_nowhere_to_go_stays_put ... ok
[INFO] [stdout] test autoadvance::tests::a_page_landing_never_starts_a_stopped_loop ... ok
[INFO] [stdout] test autoadvance::tests::a_stopped_loop_cannot_be_suspended_into_running ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::a_finished_label_is_handed_over_and_an_empty_one_is_not ... ok
[INFO] [stdout] test annotate::text_box::tests::the_box_is_never_wide_enough_to_clip_what_it_holds ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::the_answer_names_the_stroke_it_was_about ... ok
[INFO] [stdout] test autoadvance::tests::a_stopped_loop_is_never_due ... ok
[INFO] [stdout] test annotation::tests::the_document_owns_the_marks::the_eraser_reports_what_it_took_so_the_document_can_be_told ... ok
[INFO] [stdout] test autoadvance::tests::changing_the_dwell_re_dwells_the_page_in_hand ... ok
[INFO] [stdout] test autoadvance::tests::an_hour_with_the_lid_shut_owes_one_turn_at_most ... ok
[INFO] [stdout] test autoadvance::tests::stopping_at_the_end_and_wrapping_are_the_same_arithmetic ... ok
[INFO] [stdout] test autoadvance::tests::the_dwell_runs_from_the_page_landing_not_the_turn ... ok
[INFO] [stdout] test autoadvance::tests::the_page_in_hand_gets_a_full_dwell ... ok
[INFO] [stdout] test document::tests::a_document_without_any_measurement_has_no_page_size ... ok
[INFO] [stdout] test document::tests::a_page_without_links_never_takes_focus ... ok
[INFO] [stdout] test document::tests::a_single_page_deck_is_never_mixed ... ok
[INFO] [stdout] test document::tests::an_unmeasured_page_falls_back_to_the_first_page ... ok
[INFO] [stdout] test document::tests::keyboard_focus_starts_at_either_end_depending_on_direction ... ok
[INFO] [stdout] test document::tests::keyboard_focus_wraps_at_both_ends ... ok
[INFO] [stdout] test document::tests::mixed_page_sizes_are_detected_by_shape_not_by_points ... ok
[INFO] [stdout] test document::tests::only_the_first_page_size_still_answers_for_every_page ... ok
[INFO] [stdout] test document::tests::overlapping_links_resolve_to_the_one_drawn_last ... ok
[INFO] [stdout] test document::tests::page_sizes_set_the_first_page_size_too ... ok
[INFO] [stdout] test generation::tests::generations_are_monotonic ... ok
[INFO] [stdout] test history::tests::a_fresh_history_has_nowhere_to_go ... ok
[INFO] [stdout] test history::tests::a_jump_that_does_not_move_is_not_recorded ... ok
[INFO] [stdout] test history::tests::a_new_jump_discards_the_forward_stack ... ok
[INFO] [stdout] test history::tests::back_returns_where_the_presenter_actually_was_not_where_the_jump_landed ... ok
[INFO] [stdout] test history::tests::clearing_forgets_both_directions ... ok
[INFO] [stdout] test history::tests::forward_undoes_a_back ... ok
[INFO] [stdout] test history::tests::going_back_returns_the_place_a_jump_left_behind ... ok
[INFO] [stdout] test history::tests::history_spans_both_modes ... ok
[INFO] [stdout] test history::tests::stepping_records_nothing ... ok
[INFO] [stdout] test history::tests::the_stack_is_bounded_and_drops_the_oldest ... ok
[INFO] [stdout] test ipc::doorbell::tests::a_dropped_sink_closes_the_doorbell ... ok
[INFO] [stdout] test ipc::doorbell::tests::a_ring_wakes_a_waiter ... ok
[INFO] [stdout] test ipc::doorbell::tests::a_second_waiter_is_told_the_same_thing_as_a_closed_one ... ok
[INFO] [stdout] test autoadvance::tests::suspending_holds_until_started_again ... ok
[INFO] [stdout] test autoadvance::tests::the_dwell_has_a_floor ... ok
[INFO] [stdout] test document::tests::a_point_finds_the_link_it_is_inside ... ok
[INFO] [stdout] test ipc::doorbell::tests::the_message_is_on_the_channel_before_the_ring ... ok
[INFO] [stdout] test ipc::framing::tests::a_zero_length_message_is_malformed ... ok
[INFO] [stdout] test ipc::framing::tests::a_message_round_trips ... ok
[INFO] [stdout] test ipc::framing::tests::a_truncated_message_reads_as_a_closed_peer ... ok
[INFO] [stdout] test ipc::framing::tests::an_empty_pipe_reads_as_a_closed_peer ... ok
[INFO] [stdout] test ipc::framing::tests::an_oversized_length_is_refused_before_it_is_allocated ... ok
[INFO] [stdout] test ipc::framing::tests::writing_past_the_ceiling_is_refused_rather_than_sent ... ok
[INFO] [stdout] test ipc::shm::tests::a_pid_is_read_past_a_label_and_never_from_the_last_component ... ok
[INFO] [stdout] test ipc::shm::tests::a_dead_owners_region_is_reclaimed_whatever_its_label ... ok
[INFO] [stdout] test ipc::shm::tests::unsafe_names_are_refused ... ok
[INFO] [stdout] test ipc::worker::tests::a_built_command_carries_the_marker ... ok
[INFO] [stdout] test ipc::worker::tests::a_worker_may_not_spawn_a_worker ... ok
[INFO] [stdout] test ipc::worker::tests::an_explicit_program_is_bound_by_the_marker_too ... ok
[INFO] [stdout] test ipc::shm::tests::every_name_a_consumer_can_make_is_legible_to_the_sweep ... ok
[INFO] [stdout] test navigation::tests::a_bookmark_without_a_destination_lifts_its_children ... ok
[INFO] [stdout] test navigation::tests::a_cyclic_outline_terminates_instead_of_recursing_forever ... ok
[INFO] [stdout] test navigation::tests::a_new_top_level_bookmark_lands_in_page_order ... ok
[INFO] [stdout] test navigation::tests::a_page_before_the_first_bookmark_is_in_no_section ... ok
[INFO] [stdout] test navigation::tests::a_page_belongs_to_the_latest_section_that_starts_at_or_before_it ... ok
[INFO] [stdout] test navigation::tests::a_path_and_its_flattened_ordinal_round_trip_both_ways ... ok
[INFO] [stdout] test navigation::tests::a_path_names_the_same_entry_the_flattened_ordinal_does ... ok
[INFO] [stdout] test navigation::tests::a_retitle_returns_the_old_title_and_cleans_the_new_one ... ok
[INFO] [stdout] test navigation::tests::an_edit_that_names_nothing_is_refused ... ok
[INFO] [stdout] test navigation::tests::an_insert_shifts_siblings_and_a_removal_gives_the_subtree_back ... ok
[INFO] [stdout] test navigation::tests::an_inserted_subtree_is_renumbered_from_its_new_position ... ok
[INFO] [stdout] test navigation::tests::an_outline_flattens_into_reading_order ... ok
[INFO] [stdout] test navigation::tests::bookmarks_pointing_outside_the_document_do_not_order_sections ... ok
[INFO] [stdout] test navigation::tests::depth_is_recorded_and_queryable ... ok
[INFO] [stdout] test navigation::tests::nesting_stops_at_the_depth_bound ... ok
[INFO] [stdout] test navigation::tests::page_labels_travel_with_the_navigation_model ... ok
[INFO] [stdout] test navigation::tests::a_document_without_an_outline_answers_nothing_rather_than_guessing ... ok
[INFO] [stdout] test ipc::framing::tests::garbage_behind_a_plausible_length_does_not_panic ... ok
[INFO] [stdout] test navigation::tests::titles_are_trimmed_and_truncated ... ok
[INFO] [stdout] test annotate::id::tests::generated_identities_are_unique_and_recognisable ... ok
[INFO] [stdout] test notes::split_detection_tests::a_doubled_four_by_three_deck_is_a_split ... ok
[INFO] [stdout] test notes::split_detection_tests::a_doubled_sixteen_by_nine_deck_is_a_split ... ok
[INFO] [stdout] test notes::split_detection_tests::an_empty_document_is_left_alone ... ok
[INFO] [stdout] test notes::split_detection_tests::a_deck_of_mixed_shapes_is_left_alone ... ok
[INFO] [stdout] test ipc::doorbell::tests::a_gone_receiver_is_reported_and_rings_nothing ... ok
[INFO] [stdout] test notes::split_detection_tests::ordinary_slide_shapes_are_left_alone ... ok
[INFO] [stdout] test notes::split_detection_tests::rounding_within_tolerance_still_counts_as_one_shape ... ok
[INFO] [stdout] test notes::split_detection_tests::swapping_a_split_exchanges_the_halves ... ok
[INFO] [stdout] test notes::tests::alternating_pages ... ok
[INFO] [stdout] test notes::tests::alternating_with_odd_trailing_page_has_no_notes ... ok
[INFO] [stdout] test ipc::doorbell::tests::a_burst_of_rings_wakes_the_waiter_once ... ok
[INFO] [stdout] test ipc::doorbell::tests::silence_times_out_rather_than_blocking_forever ... ok
[INFO] [stdout] test notes::tests::malformed_metadata_is_rejected_not_guessed ... ok
[INFO] [stdout] test notes::tests::metadata_contract_round_trip ... ok
[INFO] [stdout] test notes::tests::two_ranges ... ok
[INFO] [stdout] test notes::tests::slides_only_is_identity ... ok
[INFO] [stdout] test notes::tests::regions_intersect_where_they_overlap ... ok
[INFO] [stdout] test notes::tests::split_page_crops_the_same_page ... ok
[INFO] [stdout] test overlay::tests::a_manifest_carries_viewport_and_requirements_into_the_spec ... ok
[INFO] [stdout] test overlay::tests::a_gap_in_the_page_run_starts_a_new_overlay ... ok
[INFO] [stdout] test overlay::tests::a_moved_rectangle_is_a_different_overlay ... ok
[INFO] [stdout] test overlay::tests::a_newer_manifest_version_is_rejected_not_guessed_at ... ok
[INFO] [stdout] test overlay::tests::a_default_manifest_is_valid_and_denies_everything ... ok
[INFO] [stdout] test overlay::tests::a_poster_names_an_attachment ... ok
[INFO] [stdout] test overlay::tests::a_reveal_sequence_keeps_one_overlay_and_one_session ... ok
[INFO] [stdout] test overlay::tests::a_reveal_run_keeps_one_identity_as_each_step_arrives ... ok
[INFO] [stdout] test overlay::tests::a_traversing_entrypoint_is_refused ... ok
[INFO] [stdout] test overlay::tests::a_multibyte_character_in_the_uri_does_not_panic ... ok
[INFO] [stdout] test overlay::tests::a_run_link_to_a_program_is_not_an_overlay_and_is_never_executed ... ok
[INFO] [stdout] test overlay::tests::an_overlay_keeps_its_identity_as_other_pages_arrive ... ok
[INFO] [stdout] test overlay::tests::a_truncated_percent_escape_next_to_a_multibyte_character_does_not_panic ... ok
[INFO] [stdout] test overlay::tests::an_html_file_at_the_document_root_still_resolves ... ok
[INFO] [stdout] test overlay::tests::a_traversing_manifest_entrypoint_is_rejected ... ok
[INFO] [stdout] test overlay::tests::a_web_uri_without_an_entrypoint_defaults_to_index_html ... ok
[INFO] [stdout] test overlay::tests::every_uri_form_resolves_to_its_content_kind ... ok
[INFO] [stdout] test overlay::tests::different_content_on_the_same_page_run_stays_separate ... ok
[INFO] [stdout] test overlay::tests::every_media_kind_takes_the_press_it_now_has_something_to_do_with ... ok
[INFO] [stdout] test overlay::tests::external_paths_that_escape_the_document_directory_are_refused ... ok
[INFO] [stdout] test overlay::tests::overlays_paint_and_hit_test_by_z_index ... ok
[INFO] [stdout] test overlay::tests::page_labels_stop_a_run_at_the_logical_slide_boundary ... ok
[INFO] [stdout] test overlay::tests::hit_testing_respects_the_rectangle ... ok
[INFO] [stdout] test overlay::tests::playback_defaults_are_off_so_nothing_starts_unasked ... ok
[INFO] [stdout] test overlay::tests::percent_encoding_is_decoded_before_the_containment_check ... ok
[INFO] [stdout] test overlay::tests::playback_parameters_follow_the_version_one_grammar ... ok
[INFO] [stdout] test overlay::tests::the_pdfpc_run_convention_is_understood ... ok
[INFO] [stdout] test overlay::tests::the_scheme_is_case_insensitive_but_the_asset_id_is_not ... ok
[INFO] [stdout] test overlay::tests::the_link_rectangle_is_the_overlay_region ... ok
[INFO] [stdout] test overlay::tests::the_run_convention_covers_gifs_and_html_too ... ok
[INFO] [stdout] test overlay::tests::floating_point_noise_does_not_split_an_overlay ... ok
[INFO] [stdout] test overlay::tests::the_uri_entrypoint_wins_only_when_the_manifest_allows_it ... ok
[INFO] [stdout] test overlay::tests::two_identical_declarations_on_one_page_stay_two_overlays ... ok
[INFO] [stdout] test overlay::tests::unknown_and_malformed_parameters_warn_but_still_play ... ok
[INFO] [stdout] test overlay::tests::ordinary_links_are_not_media ... ok
[INFO] [stdout] test overlay::tests::unknown_forms_and_empty_assets_are_errors_not_guesses ... ok
[INFO] [stdout] test page::tests::a_quarter_turn_sends_the_top_left_corner_to_the_top_right ... ok
[INFO] [stdout] test page::tests::a_rotated_rect_stays_well_formed_and_keeps_its_area ... ok
[INFO] [stdout] test page::tests::a_user_unit_that_is_not_a_scale_falls_back_to_one ... ok
[INFO] [stdout] test page::tests::absurd_and_zero_pages_are_not_pages ... ok
[INFO] [stdout] test page::tests::canonical_and_user_space_round_trip_at_every_rotation_and_crop ... ok
[INFO] [stdout] test page::tests::geometry_outside_the_documented_margin_is_rejected ... ok
[INFO] [stdout] test page::tests::normalised_coordinates_convert_only_through_the_page ... ok
[INFO] [stdout] test page::tests::pages_are_counted_from_one_when_a_human_reads_them ... ok
[INFO] [stdout] test page::tests::quads_round_trip_corner_by_corner ... ok
[INFO] [stdout] test page::tests::rectangles_enclose_grow_and_meet ... ok
[INFO] [stdout] test page::tests::rotate_entries_that_are_not_multiples_of_ninety_are_treated_as_absent ... ok
[INFO] [stdout] test page::tests::rotation_exchanges_the_displayed_dimensions ... ok
[INFO] [stdout] test page::tests::a_rect_stays_a_well_formed_pdf_rect_at_every_rotation ... ok
[INFO] [stdout] test overlay::tests::video_only_parameters_are_not_offered_to_images ... ok
[INFO] [stdout] test page::tests::a_quad_with_no_area_is_degenerate ... ok
[INFO] [stdout] test page::tests::a_rotated_pages_top_left_is_a_corner_of_the_unrotated_crop_box ... ok
[INFO] [stdout] test pdfpc::tests::a_future_format_is_refused_rather_than_guessed_at ... ok
[INFO] [stdout] test page::tests::the_canonical_origin_is_the_crop_boxs_top_left_corner ... ok
[INFO] [stdout] test pdfpc::tests::a_slide_reads_the_note_on_its_audience_page ... ok
[INFO] [stdout] test pdfpc::tests::a_split_deck_reads_notes_from_the_audience_page ... ok
[INFO] [stdout] test page::tests::the_rotation_ladder_cycles_and_inverts ... ok
[INFO] [stdout] test page::tests::view_rotation_round_trips_at_every_turn ... ok
[INFO] [stdout] test page::tests::y_grows_downward_in_canonical_space_and_upward_in_user_space ... ok
[INFO] [stdout] test pdfpc::tests::a_page_index_of_zero_is_dropped_rather_than_wrapped ... ok
[INFO] [stdout] test pdfpc::tests::payloads_that_are_not_pdfpc_are_refused ... ok
[INFO] [stdout] test pdfpc::tests::the_json_dialect_is_read_and_renumbered_from_zero ... ok
[INFO] [stdout] test pdfpc::tests::the_sectioned_dialect_can_declare_markdown ... ok
[INFO] [stdout] test pdfpc::tests::empty_notes_are_not_notes ... ok
[INFO] [stdout] test pdfpc::tests::unknown_fields_do_not_stop_the_notes_being_read ... ok
[INFO] [stdout] test pdfpc::tests::the_sectioned_dialect_is_read ... ok
[INFO] [stdout] test pdfpc::tests::resolving_every_slide_gives_one_entry_per_slide ... ok
[INFO] [stdout] test pdfpc::tests::text_outside_the_notes_section_is_not_a_note ... ok
[INFO] [stdout] test pdfpc::tests::an_oversized_payload_is_refused_before_it_is_parsed ... ok
[INFO] [stdout] test search::tests::a_chunk_for_the_previous_document_lands_nowhere ... ok
[INFO] [stdout] test search::tests::a_failed_scan_keeps_what_it_found_and_says_so ... ok
[INFO] [stdout] test search::tests::a_chunk_that_arrives_twice_does_not_count_its_pages_twice ... ok
[INFO] [stdout] test search::tests::a_long_query_is_truncated_not_refused ... ok
[INFO] [stdout] test search::tests::a_scan_begins_at_the_page_the_reader_is_on_and_wraps ... ok
[INFO] [stdout] test search::tests::a_result_can_be_focused_by_stable_identity ... ok
[INFO] [stdout] test search::tests::a_stale_chunk_lands_nowhere ... ok
[INFO] [stdout] test search::tests::an_empty_query_matches_nothing ... ok
[INFO] [stdout] test search::tests::a_repeated_chunk_is_absorbed_not_duplicated ... ok
[INFO] [stdout] test search::tests::a_scan_covers_every_page_exactly_once ... ok
[INFO] [stdout] test search::tests::an_empty_query_asks_for_nothing ... ok
[INFO] [stdout] test search::tests::an_invalid_regular_expression_is_reported_before_scanning ... ok
[INFO] [stdout] test search::tests::an_unsupported_backend_is_not_no_matches ... ok
[INFO] [stdout] test search::tests::context_collapses_whitespace_and_marks_the_match ... ok
[INFO] [stdout] test search::tests::context_is_windowed_with_ellipses ... ok
[INFO] [stdout] test search::tests::ascii_fast_path_keeps_offsets_case_and_word_boundaries ... ok
[INFO] [stdout] test search::tests::clearing_forgets_everything ... ok
[INFO] [stdout] test search::tests::focus_near_starts_where_the_reader_is ... ok
[INFO] [stdout] test search::tests::matches_do_not_overlap ... ok
[INFO] [stdout] test search::tests::matching_is_case_insensitive_by_default ... ok
[INFO] [stdout] test search::tests::one_character_index_builds_unicode_correct_contexts_for_many_hits ... ok
[INFO] [stdout] test search::tests::overlay_hits_are_only_the_ones_on_that_page_with_geometry ... ok
[INFO] [stdout] test search::tests::reopening_a_rebuilt_document_keeps_the_query_and_drops_what_it_found ... ok
[INFO] [stdout] test search::tests::notes_are_searched_in_process ... ok
[INFO] [stdout] test search::tests::regular_expressions_match_notes_and_page_text_with_character_offsets ... ok
[INFO] [stdout] test search::tests::the_cursor_follows_its_hit_when_earlier_ones_arrive ... ok
[INFO] [stdout] test search::tests::hits_are_held_in_document_order_however_they_arrive ... ok
[INFO] [stdout] test search::tests::requests_start_small_and_grow_so_the_first_hits_arrive_first ... ok
[INFO] [stdout] test search::tests::setting_the_same_query_does_not_restart_the_scan ... ok
[INFO] [stdout] test search::tests::the_cursor_wraps_in_both_directions ... ok
[INFO] [stdout] test search::tests::whole_word_needs_boundaries ... ok
[INFO] [stdout] test speech::cursor::tests::a_selection_is_read_once_and_never_highlighted ... ok
[INFO] [stdout] test search::tests::too_many_hits_stops_the_scan ... ok
[INFO] [stdout] test speech::cursor::tests::an_engine_failure_ends_the_session ... ok
[INFO] [stdout] test speech::cursor::tests::document_scope_reads_through_a_page_with_no_text ... ok
[INFO] [stdout] test speech::cursor::tests::finishing_a_sentence_speaks_the_next ... ok
[INFO] [stdout] test speech::cursor::tests::document_scope_turns_the_page_and_shows_it ... ok
[INFO] [stdout] test speech::cursor::tests::pause_stops_and_resume_repeats_the_same_sentence ... ok
[INFO] [stdout] test speech::cursor::tests::pausing_while_the_page_is_still_loading_resumes_by_asking_again ... ok
[INFO] [stdout] test speech::cursor::tests::skipping_moves_a_sentence_at_a_time ... ok
[INFO] [stdout] test speech::cursor::tests::an_empty_selection_finishes_instead_of_speaking_nothing ... ok
[INFO] [stdout] test speech::cursor::tests::skipping_while_paused_moves_without_starting_to_talk ... ok
[INFO] [stdout] test speech::cursor::tests::a_finish_that_races_a_pause_does_not_skip_a_sentence ... ok
[INFO] [stdout] test speech::cursor::tests::page_scope_finishes_at_the_end_of_the_page ... ok
[INFO] [stdout] test speech::cursor::tests::stopping_forgets_everything ... ok
[INFO] [stdout] test speech::cursor::tests::starting_asks_for_text_before_it_can_speak ... ok
[INFO] [stdout] test speech::cursor::tests::text_arriving_starts_the_first_sentence_and_highlights_it ... ok
[INFO] [stdout] test speech::cursor::tests::text_for_a_page_we_have_left_is_ignored ... ok
[INFO] [stdout] test speech::cursor::tests::the_end_of_the_document_finishes_rather_than_erroring ... ok
[INFO] [stdout] test speech::cursor::tests::the_last_sentence_of_a_page_prefetches_nothing ... ok
[INFO] [stdout] test speech::language::tests::a_page_of_equations_has_nothing_to_detect ... ok
[INFO] [stdout] test speech::language::tests::japanese_is_not_reported_as_chinese ... ok
[INFO] [stdout] test speech::language::tests::a_script_subtag_is_dropped_rather_than_refused ... ok
[INFO] [stdout] test speech::language::tests::nonsense_is_not_a_tag ... ok
[INFO] [stdout] test speech::language::tests::a_language_with_no_markers_scores_low_rather_than_guessing_loudly ... ok
[INFO] [stdout] test speech::language::tests::lookup_prefers_the_region_but_accepts_the_language ... ok
[INFO] [stdout] test speech::language::tests::latin_languages_are_told_apart_by_function_words ... ok
[INFO] [stdout] test speech::language::tests::short_text_is_never_confident ... ok
[INFO] [stdout] test speech::language::tests::tags_normalise_separator_and_case ... ok
[INFO] [stdout] test speech::language::tests::tags_round_trip_through_json_as_plain_strings ... ok
[INFO] [stdout] test speech::policy::tests::a_hand_edited_rate_is_clamped_on_load_not_trusted ... ok
[INFO] [stdout] test speech::policy::tests::a_declared_language_seeds_the_prior_but_a_confident_page_wins ... ok
[INFO] [stdout] test speech::language::tests::scripts_identify_their_language_without_scoring ... ok
[INFO] [stdout] test speech::policy::tests::a_medium_confidence_page_does_not_overrule_an_established_language ... ok
[INFO] [stdout] test speech::policy::tests::a_page_with_no_text_keeps_the_current_voice ... ok
[INFO] [stdout] test speech::policy::tests::a_regional_mismatch_is_reported_as_such ... ok
[INFO] [stdout] test speech::policy::tests::auto_switches_for_a_confidently_different_page ... ok
[INFO] [stdout] test speech::policy::tests::changing_the_setting_re_decides_the_next_page ... ok
[INFO] [stdout] test speech::policy::tests::rate_is_clamped_and_never_inverted_by_accident ... ok
[INFO] [stdout] test speech::segment::tests::a_blank_line_ends_a_sentence_that_has_no_terminator ... ok
[INFO] [stdout] test speech::segment::tests::a_lowercase_continuation_is_not_a_new_sentence ... ok
[INFO] [stdout] test speech::policy::tests::an_explicit_setting_ignores_the_page_entirely ... ok
[INFO] [stdout] test speech::policy::tests::auto_does_not_flip_on_a_short_quotation ... ok
[INFO] [stdout] test speech::policy::tests::auto_picks_a_voice_for_a_confident_page ... ok
[INFO] [stdout] test speech::segment::tests::a_short_sentence_is_never_split ... ok
[INFO] [stdout] test speech::segment::tests::cjk_terminators_need_no_following_space ... ok
[INFO] [stdout] test speech::segment::tests::abbreviations_do_not_end_a_sentence ... ok
[INFO] [stdout] test speech::segment::tests::closing_punctuation_belongs_to_the_sentence_it_closes ... ok
[INFO] [stdout] test speech::segment::tests::initials_and_decimals_stay_together ... ok
[INFO] [stdout] test speech::segment::tests::long_sentences_split_at_clauses_then_words_never_mid_word ... ok
[INFO] [stdout] test speech::segment::tests::ranges_are_on_character_boundaries_and_in_order ... ok
[INFO] [stdout] test speech::segment::tests::runs_of_terminators_are_one_boundary ... ok
[INFO] [stdout] test speech::segment::tests::splitting_a_word_longer_than_the_limit_still_terminates ... ok
[INFO] [stdout] test state::tests::blanking_hides_the_audience_source_only ... ok
[INFO] [stdout] test state::tests::cancel_preview_snaps_back ... ok
[INFO] [stdout] test state::tests::changing_the_mapping_advances_the_generation_and_clamps ... ok
[INFO] [stdout] test speech::segment::tests::nothing_speakable_yields_no_sentences ... ok
[INFO] [stdout] test speech::segment::tests::plain_prose_splits_on_terminators ... ok
[INFO] [stdout] test state::tests::committed_navigation_drags_the_preview_along ... ok
[INFO] [stdout] test state::tests::document_replacement_with_more_pages_keeps_the_page ... ok
[INFO] [stdout] test state::tests::empty_document_navigation_does_not_panic ... ok
[INFO] [stdout] test state::tests::jump_to_page_shows_no_intermediate_page_to_the_audience ... ok
[INFO] [stdout] test state::tests::navigation_is_bounded ... ok
[INFO] [stdout] test state::tests::preview_moves_do_not_release_the_zoom ... ok
[INFO] [stdout] test state::tests::preview_never_moves_the_audience ... ok
[INFO] [stdout] test state::tests::priority_order_is_clamped_at_the_deck_boundaries ... ok
[INFO] [stdout] test state::tests::priority_order_puts_the_audience_page_first ... ok
[INFO] [stdout] test state::tests::setting_the_same_zoom_twice_changes_nothing ... ok
[INFO] [stdout] test state::tests::split_mapping_projects_both_windows_from_one_page ... ok
[INFO] [stdout] test state::tests::white_and_black_blanking_are_distinct_modes ... ok
[INFO] [stdout] test state::tests::zoom_crops_the_audience_source_and_navigation_clears_it ... ok
[INFO] [stdout] test timer::tests::accumulates_only_while_running ... ok
[INFO] [stdout] test state::tests::invalidating_renders_keeps_every_logical_value ... ok
[INFO] [stdout] test timer::tests::overrun_is_reported ... ok
[INFO] [stdout] test timer::tests::reset_preserves_running_state ... ok
[INFO] [stdout] test state::tests::document_replacement_preserves_state_and_clamps_the_page ... ok
[INFO] [stdout] test search::tests::a_prepared_query_has_the_same_matches_across_many_texts ... ok
[INFO] [stdout] test navigation::tests::the_entry_count_is_bounded ... ok
[INFO] [stdout] test navigation::tests::the_edit_bounds_hold ... ok
[INFO] [stdout] test annotate::stroke::tests::a_zigzag_deep_enough_to_have_overflowed_a_recursive_pass_is_handled ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 405 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 12.62s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests pulpit_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343", kill_on_drop: false }`
[INFO] [stdout] 492dd6367bc2175b320bd4b4985aecb2af2d8230b1832cb7f8afd5dc6cb23343
