[INFO] fetching crate hearty 0.2.0...
[INFO] testing hearty-0.2.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate hearty 0.2.0 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate hearty 0.2.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate hearty 0.2.0
[INFO] tweaked toml for crates.io crate hearty 0.2.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate hearty 0.2.0 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 hearty 0.2.0 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-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387
[INFO] running `Command { std: "docker" "start" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", 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" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387" "/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" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", 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" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.26
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling find-msvc-tools v0.1.13
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling writeable v0.6.4
[INFO] [stderr]    Compiling crc32fast v1.5.2
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling icu_locale_fallback_data v2.3.0
[INFO] [stderr]    Compiling litemap v0.8.3
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling cc v1.4.7
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling icu_segmenter_data v2.3.0
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling bitflags v2.13.2
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling miniz_oxide v0.9.1
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling zlib-rs v0.6.8
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling gimli v0.32.3
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling zerocopy v0.8.58
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libmimalloc-sys v0.1.49
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rustc-demangle v0.1.28
[INFO] [stderr]    Compiling addr2line v0.25.1
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling smallvec v1.16.1
[INFO] [stderr]    Compiling portable-atomic v1.15.0
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling http v1.5.0
[INFO] [stderr]    Compiling is_ci v1.2.0
[INFO] [stderr]    Compiling clap_lex v1.1.1
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling synstructure v0.14.0
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling flate2 v1.1.10
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling base64 v0.23.1
[INFO] [stderr]    Compiling either v1.18.0
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling indexmap v2.14.2
[INFO] [stderr]    Compiling ureq-proto v0.6.4
[INFO] [stderr]    Compiling pest v2.9.2
[INFO] [stderr]    Compiling backtrace-ext v0.2.1
[INFO] [stderr]    Compiling num-format v0.4.4
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling zopfli v0.8.3
[INFO] [stderr]    Compiling clap_builder v4.6.7
[INFO] [stderr]    Compiling zerofrom-derive v0.1.8
[INFO] [stderr]    Compiling yoke-derive v0.8.3
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling zerovec v0.11.8
[INFO] [stderr]    Compiling rgb v0.8.53
[INFO] [stderr]    Compiling supports-color v3.0.2
[INFO] [stderr]    Compiling jomini_derive v0.4.0
[INFO] [stderr]    Compiling miette-derive v7.6.0
[INFO] [stderr]    Compiling tinystr v0.8.4
[INFO] [stderr]    Compiling potential_utf v0.1.6
[INFO] [stderr]    Compiling icu_locale_core v2.3.0
[INFO] [stderr]    Compiling icu_collections v2.3.0
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling console v0.16.6
[INFO] [stderr]    Compiling webpki-roots v1.0.9
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling quick-xml v0.41.0
[INFO] [stderr]    Compiling str_stack v0.1.1
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling typed-path v0.12.3
[INFO] [stderr]    Compiling unit-prefix v0.5.2
[INFO] [stderr]    Compiling supports-hyperlinks v3.2.0
[INFO] [stderr]    Compiling supports-unicode v3.0.0
[INFO] [stderr]    Compiling rawzip v0.5.1
[INFO] [stderr]    Compiling owo-colors v4.4.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling icu_provider v2.3.1
[INFO] [stderr]    Compiling zip v8.6.0
[INFO] [stderr]    Compiling jomini v0.37.1
[INFO] [stderr]    Compiling inferno v0.12.8
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling indicatif v0.18.6
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling icu_locale_fallback v2.3.0
[INFO] [stderr]    Compiling icu_segmenter v2.3.0
[INFO] [stderr]    Compiling ureq v3.4.2
[INFO] [stderr]    Compiling textwrap v0.16.4
[INFO] [stderr]    Compiling tar v0.4.46
[INFO] [stderr]    Compiling miette v7.6.0
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling keyvalues-parser v0.2.4
[INFO] [stderr]    Compiling mimalloc v0.1.52
[INFO] [stderr]    Compiling itertools v0.15.0
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling similar v3.2.0
[INFO] [stderr]    Compiling hearty v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unused dependency `indicatif`
[INFO] [stderr]   --> Cargo.toml:25:15
[INFO] [stderr]    |
[INFO] [stderr] 25 | [dependencies.indicatif]
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `indicatif`
[INFO] [stderr] warning: unused dependency `itertools`
[INFO] [stderr]   --> Cargo.toml:32:15
[INFO] [stderr]    |
[INFO] [stderr] 32 | [dependencies.itertools]
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `itertools`
[INFO] [stderr] warning: unused dependency `zip`
[INFO] [stderr]   --> Cargo.toml:84:15
[INFO] [stderr]    |
[INFO] [stderr] 84 | [dependencies.zip]
[INFO] [stderr]    |               ^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `zip`
[INFO] [stderr] warning: `hearty` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 06s
[INFO] running `Command { std: "docker" "inspect" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", 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" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387" "/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 base64 v0.23.1
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling keccak v0.1.6
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling copy_dir v0.1.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling sha3 v0.10.9
[INFO] [stderr]    Compiling ureq-proto v0.6.4
[INFO] [stderr]    Compiling dasher v0.3.3
[INFO] [stderr]    Compiling ureq v3.4.2
[INFO] [stderr]    Compiling hearty v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 25.17s
[INFO] running `Command { std: "docker" "inspect" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", 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" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/hearty/eac4b34941e9f64b/out/hearty-eac4b34941e9f64b)
[INFO] [stdout] 
[INFO] [stdout] running 174 tests
[INFO] [stdout] test cst::tests::corpus_matches_the_reference_parser ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test cst::tests::corpus_round_trip ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test cst::tests::apply_edits_sorts_and_rejects_overlaps ... ok
[INFO] [stdout] test cst::tests::bare_scalars_are_single_tokens ... ok
[INFO] [stdout] test cst::tests::block_value_entry_and_scalar_helpers ... ok
[INFO] [stdout] test cst::tests::crlf_and_lf_files ... ok
[INFO] [stdout] test cst::tests::bare_arrays_and_mixed_blocks ... ok
[INFO] [stdout] test cst::tests::bom_is_trivia_only_at_the_start ... ok
[INFO] [stdout] test cst::tests::deleting_a_line_unit_removes_the_entry_and_its_comments ... ok
[INFO] [stdout] test cst::tests::deep_nesting_is_an_error_not_a_stack_overflow ... ok
[INFO] [stdout] test cst::tests::empty_and_trivia_only_files_parse_to_an_empty_root ... ok
[INFO] [stdout] test cst::tests::documented_nesting_limit_is_the_enforced_one ... ok
[INFO] [stdout] test cst::tests::errors_are_reported_with_offsets ... ok
[INFO] [stdout] test cst::tests::inline_math_is_one_scalar_even_with_whitespace ... ok
[INFO] [stdout] test cst::tests::every_operator_is_lexed_with_longest_match ... ok
[INFO] [stdout] test cst::tests::files_without_trailing_newline ... ok
[INFO] [stdout] test cst::tests::comments_at_every_position ... ok
[INFO] [stdout] test cst::tests::line_end_on_the_newline_of_a_crlf_returns_the_cr ... ok
[INFO] [stdout] test cst::tests::line_start_and_line_end ... ok
[INFO] [stdout] test cst::tests::line_units_require_one_entry_per_line ... ok
[INFO] [stdout] test cst::tests::line_units_comment_edge_cases ... ok
[INFO] [stdout] test cst::tests::line_units_refuse_a_comment_behind_a_lone_cr ... ok
[INFO] [stdout] test cst::tests::line_units_attach_leading_comments_but_not_dangling_ones ... ok
[INFO] [stdout] test cst::tests::nested_blocks_and_spans ... ok
[INFO] [stdout] test cst::tests::line_units_crlf ... ok
[INFO] [stdout] test cst::tests::parse_throughput ... ignored, a benchmark; needs HEARTY_CORPUS
[INFO] [stdout] test cst::tests::operator_less_keyed_blocks_stay_operator_less ... ok
[INFO] [stdout] test cst::tests::operators_split_bare_scalars_but_lone_bang_and_question_do_not ... ok
[INFO] [stdout] test cst::tests::simple_assignment_spans ... ok
[INFO] [stdout] test cst::tests::unicode_and_control_whitespace_separate_tokens ... ok
[INFO] [stdout] test cst::tests::visit_blocks_reports_key_paths_in_pre_order ... ok
[INFO] [stdout] test field_order::tests::attached_comments_travel_with_their_field ... ok
[INFO] [stdout] test field_order::tests::blocks_whose_entries_share_lines_are_untouched ... ok
[INFO] [stdout] test field_order::tests::characters_are_sorted_three_levels_deep ... ok
[INFO] [stdout] test cst::tests::tagged_values ... ok
[INFO] [stdout] test field_order::tests::corpus_field_order ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test field_order::tests::crlf_mixed_line_endings_and_bom_are_preserved ... ok
[INFO] [stdout] test cst::tests::quoted_scalars ... ok
[INFO] [stdout] test field_order::tests::dangling_comments_and_blank_lines_stay_in_place ... ok
[INFO] [stdout] test field_order::tests::decision_icon_moves_before_complete_effect ... ok
[INFO] [stdout] test field_order::tests::innermost_prefers_the_smallest_disjoint_edits ... ok
[INFO] [stdout] test field_order::tests::non_definition_files_and_blocks_are_untouched ... ok
[INFO] [stdout] test cst::tests::matches_the_reference_parser_on_the_fixture_mod ... ok
[INFO] [stdout] test field_order::tests::count_is_the_number_of_blocks_reordered ... ok
[INFO] [stdout] test field_order::tests::nested_definition_blocks_are_all_sorted ... ok
[INFO] [stdout] test field_order::tests::repeated_fields_keep_their_relative_order ... ok
[INFO] [stdout] test field_order::tests::sorted_input_is_untouched ... ok
[INFO] [stdout] test field_order::tests::tagged_blocks_are_not_definitions ... ok
[INFO] [stdout] test field_order::tests::trailing_comments_travel_with_their_field ... ok
[INFO] [stdout] test field_order::tests::unlisted_fields_and_bare_elements_keep_their_slots ... ok
[INFO] [stdout] test field_order::tests::unparsable_input_is_returned_unchanged ... ok
[INFO] [stdout] test game::tests::library_folders_are_read_from_the_vdf ... ok
[INFO] [stdout] test files::tests::scripts_are_classified_and_sorted ... ok
[INFO] [stdout] test game::tests::the_flag_wins ... ok
[INFO] [stdout] test inline::tests::blocks_sharing_a_line_are_joined_in_turn ... ok
[INFO] [stdout] test files::tests::walks_every_file_at_any_depth ... ok
[INFO] [stdout] test game::tests::replaced_folders_are_read_from_the_descriptor ... ok
[INFO] [stdout] test inline::tests::corpus_formatting_is_lossless_and_idempotent ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test inline::tests::joins_a_single_entry_with_any_operator ... ok
[INFO] [stdout] test inline::tests::canonicalises_single_line_blocks ... ok
[INFO] [stdout] test inline::tests::joins_bare_scalar_arrays ... ok
[INFO] [stdout] test inline::tests::joins_inner_blocks_but_not_their_parents ... ok
[INFO] [stdout] test inline::tests::enclosing_blocks_left_on_one_line_become_canonical ... ok
[INFO] [stdout] test inline::tests::joins_the_user_examples ... ok
[INFO] [stdout] test inline::tests::keeps_quoted_strings_verbatim ... ok
[INFO] [stdout] test inline::tests::leaves_gaps_with_line_breaks_or_comments ... ok
[INFO] [stdout] test inline::tests::leaves_other_contents_multi_line ... ok
[INFO] [stdout] test inline::tests::never_joins_blocks_with_comments ... ok
[INFO] [stdout] test inline::tests::never_splits_long_single_line_blocks ... ok
[INFO] [stdout] test inline::tests::preserves_crlf ... ok
[INFO] [stdout] test inline::tests::never_joins_definition_blocks ... ok
[INFO] [stdout] test inline::tests::never_joins_multi_line_strings ... ok
[INFO] [stdout] test inline::tests::reports_joined_key_paths ... ok
[INFO] [stdout] test inline::tests::respaces_operator_less_and_tagged_blocks ... ok
[INFO] [stdout] test inline::tests::respaces_operators ... ok
[INFO] [stdout] test inline::tests::width_limit_counts_tabs_to_the_next_stop ... ok
[INFO] [stdout] test inline::tests::unparseable_input_is_returned_unchanged ... ok
[INFO] [stdout] test keys::tests::corpus_keys_match_jomini ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test inline::tests::width_limit_counts_the_rest_of_the_closing_line ... ok
[INFO] [stdout] test keys::tests::event_titles_descriptions_and_option_names ... ok
[INFO] [stdout] test keys::tests::focus_ids_and_technologies ... ok
[INFO] [stdout] test keys::tests::only_events_focuses_and_technologies_use_keys ... ok
[INFO] [stdout] test keys::tests::scripted_localisation_is_not_a_key ... ok
[INFO] [stdout] test keys::tests::spans_point_at_the_definition ... ok
[INFO] [stdout] test keys::tests::unparsable_files_fall_back_to_jomini ... ok
[INFO] [stdout] test localisation::tests::file_names_give_the_language ... ok
[INFO] [stdout] test localisation::tests::keys_are_the_text_before_the_first_colon ... ok
[INFO] [stdout] test localisation::tests::reading_stops_at_the_first_line_that_is_not_utf8 ... ok
[INFO] [stdout] test localisation::tests::the_header_line_is_skipped ... ok
[INFO] [stdout] test localisation::tests::masks_mark_the_languages_defining_each_key ... ok
[INFO] [stdout] test pipeline::tests::a_failed_write_leaves_the_file_as_it_was ... ok
[INFO] [stdout] test pipeline::tests::check_and_lint_leave_files_alone ... ok
[INFO] [stdout] test pipeline::tests::big_files_first_then_the_rest_interleaved ... ok
[INFO] [stdout] test pipeline::tests::every_action_in_order ... ok
[INFO] [stdout] test pipeline::tests::format_text_leaves_unparsable_text_alone ... ok
[INFO] [stdout] test redundant::tests::blank_lines_are_tidied ... ok
[INFO] [stdout] test redundant::tests::block_patterns_match_in_any_order ... ok
[INFO] [stdout] test pipeline::tests::outcomes_follow_the_files ... ok
[INFO] [stdout] test redundant::tests::corpus_fixes_are_lossless ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test redundant::tests::comments_are_never_deleted ... ok
[INFO] [stdout] test redundant::tests::crlf_and_bom_are_preserved ... ok
[INFO] [stdout] test redundant::tests::empty_blocks_are_flagged ... ok
[INFO] [stdout] test redundant::tests::event_options ... ok
[INFO] [stdout] test redundant::tests::each_fix_is_valid_on_its_own ... ok
[INFO] [stdout] test redundant::tests::findings_are_in_source_order ... ok
[INFO] [stdout] test redundant::tests::numbers_compare_numerically ... ok
[INFO] [stdout] test redundant::tests::only_listed_block_kinds_are_checked ... ok
[INFO] [stdout] test redundant::tests::only_plain_assignments_are_flagged ... ok
[INFO] [stdout] test redundant::tests::only_plain_decimals_are_numbers ... ok
[INFO] [stdout] test redundant::tests::overlapping_fixes_are_skipped ... ok
[INFO] [stdout] test redundant::tests::own_name_pictures ... ok
[INFO] [stdout] test redundant::tests::repeated_keys ... ok
[INFO] [stdout] test redundant::tests::scalar_defaults_are_flagged ... ok
[INFO] [stdout] test redundant::tests::shared_lines ... ok
[INFO] [stdout] test redundant::tests::text_collapses_whitespace ... ok
[INFO] [stdout] test redundant::tests::unparsable_files_have_no_findings ... ok
[INFO] [stdout] test report::tests::changes_accumulate_in_change_order ... ok
[INFO] [stdout] test report::tests::corpus_line_stats ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test report::tests::describe_singular_and_plural ... ok
[INFO] [stdout] test report::tests::file_change_new_computes_line_stats ... ok
[INFO] [stdout] test report::tests::line_stats_crlf ... ok
[INFO] [stdout] test report::tests::line_stats_empty ... ok
[INFO] [stdout] test report::tests::line_stats_identical ... ok
[INFO] [stdout] test report::tests::line_stats_pure_delete ... ok
[INFO] [stdout] test report::tests::line_stats_pure_insert ... ok
[INFO] [stdout] test report::tests::line_stats_replace ... ok
[INFO] [stdout] test report::tests::summary_empty ... ok
[INFO] [stdout] test report::tests::summary_fixed ... ok
[INFO] [stdout] test report::tests::summary_formatted ... ok
[INFO] [stdout] test report::tests::summary_unwritten ... ok
[INFO] [stdout] test report::tests::summary_would_format_many_files ... ok
[INFO] [stdout] test report::tests::summary_would_format_one_file ... ok
[INFO] [stdout] test report::tests::summary_zero_counts_and_no_changes ... ok
[INFO] [stdout] test schema::tests::classifies_blocks ... ok
[INFO] [stdout] test schema::tests::classifies_files ... ok
[INFO] [stdout] test schema::tests::field_orders_have_no_duplicates ... ok
[INFO] [stdout] test schema::tests::rules_lookup ... ok
[INFO] [stdout] test schema::tests::user_example_order_holds ... ok
[INFO] [stdout] test sort::tests::a_comment_after_a_closing_brace_stays_on_its_line ... ok
[INFO] [stdout] test sort::tests::a_tree_closing_on_its_last_focus_line_is_sorted ... ok
[INFO] [stdout] test sort::tests::an_entry_after_a_closing_brace_stays_put ... ok
[INFO] [stdout] test sort::tests::comments_travel_with_their_block ... ok
[INFO] [stdout] test sort::tests::corpus_sort_is_lossless_and_idempotent ... ignored, needs HEARTY_CORPUS=<root>;<root>;... pointing at HOI4 / mod directories
[INFO] [stdout] test sort::tests::events_follow_natural_order_and_chains ... ok
[INFO] [stdout] test sort::tests::events_keep_structural_gaps_and_normalise_blank_ones ... ok
[INFO] [stdout] test sort::tests::events_sharing_a_line_are_left_alone ... ok
[INFO] [stdout] test sort::tests::focus_trees_are_sorted_separately ... ok
[INFO] [stdout] test sort::tests::focus_trees_sharing_lines_are_left_alone ... ok
[INFO] [stdout] test sort::tests::focuses_follow_prerequisites_and_positions ... ok
[INFO] [stdout] test sort::tests::focuses_without_ids_and_other_entries_stay_put ... ok
[INFO] [stdout] test sort::tests::line_endings_bom_and_a_missing_final_newline ... ok
[INFO] [stdout] test sort::tests::natural_keys_order_numbers_by_value ... ok
[INFO] [stdout] test sort::tests::only_top_level_event_blocks_with_ids_move ... ok
[INFO] [stdout] test sort::tests::toposort_is_stable_and_groups_components ... ok
[INFO] [stdout] test sort::tests::unorderable_focus_trees_leave_the_file_alone ... ok
[INFO] [stdout] test sort::tests::unsortable_events_are_left_alone ... ok
[INFO] [stdout] test timings::tests::child_on_another_thread ... ok
[INFO] [stdout] test timings::tests::flamegraph_svg ... ok
[INFO] [stdout] test timings::tests::folded_stacks ... ok
[INFO] [stdout] test timings::tests::frames_subtract_nested_time ... ok
[INFO] [stdout] test cst::tests::byte_classes_match_the_lexing_rules ... ok
[INFO] [stdout] test timings::tests::ratios ... ok
[INFO] [stdout] test timings::tests::nested_spans_on_one_thread ... ok
[INFO] [stdout] test timings::tests::slowest_files_are_capped ... ok
[INFO] [stdout] test timings::tests::slowest_files_from_path_fields ... ok
[INFO] [stdout] test timings::tests::timings_tree ... ok
[INFO] [stdout] test timings::tests::reentered_span ... ok
[INFO] [stdout] test timings::tests::waiting_is_not_active ... ok
[INFO] [stdout] test cst::tests::hostile_inputs_never_panic_and_stay_lossless ... ok
[INFO] [stdout] test field_order::tests::out_of_order_single_line_blocks_on_one_line_take_linear_time ... ok
[INFO] [stdout] test inline::tests::random_documents_are_preserved_and_idempotent ... ok
[INFO] [stdout] test cst::tests::matches_the_reference_parser_on_fuzzed_inputs ... ok
[INFO] [stdout] test redundant::tests::every_small_layout_fixes_cleanly ... ok
[INFO] [stdout] test cst::tests::deepest_accepted_tree_is_safe_to_clone_debug_compare_and_drop_on_a_small_stack ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 165 passed; 0 failed; 9 ignored; 0 measured; 0 filtered out; finished in 10.52s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/bench_checkout.rs (/opt/rustwide/target/debug/build/hearty/ca8b7fb858a89ba0/out/bench_checkout-ca8b7fb858a89ba0)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test refuses_other_directories ... ok
[INFO] [stdout] test clones_into_an_empty_directory ... ok
[INFO] [stdout] test recovers_from_a_failed_clone ... ok
[INFO] [stdout] test clones_then_fetches ... ok
[INFO] [stderr]      Running tests/bench_workshop.rs (/opt/rustwide/target/debug/build/hearty/09c3b6b5235c01c8/out/bench_workshop-09c3b6b5235c01c8)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test durations_in_every_unit ... ok
[INFO] [stdout] test problems_of_a_clean_mod_are_zero ... ok
[INFO] [stdout] test library_folders_are_read_from_the_vdf ... ok
[INFO] [stdout] test mods_have_distinct_ids_and_slugs ... ok
[INFO] [stdout] test timings_are_read_as_a_tree ... ok
[INFO] [stdout] test problems_are_read_from_the_summary ... ok
[INFO] [stdout] test results_are_written_as_the_chart_script_reads_them ... ok
[INFO] [stdout] test sync_refuses_a_repository_it_did_not_create ... ok
[INFO] [stdout] test sync_copies_what_hearty_reads_byte_for_byte ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_tests.rs (/opt/rustwide/target/debug/build/hearty/3b504e9bd66fd312/out/integration_tests-3b504e9bd66fd312)
[INFO] [stdout] 
[INFO] [stdout] running 26 tests
[INFO] [stdout] test steamcmd_stub_login_anonymous ... ok
[INFO] [stdout] test test_fix ... ok
[INFO] [stdout] test test_fmt ... ok
[INFO] [stdout] test test_all_actions ... ok
[INFO] [stdout] test test_fmt_every_file_kind ... ok
[INFO] [stdout] test test_fmt_only_file_unwritable ... ok
[INFO] [stdout] test test_fmt_max_width ... ok
[INFO] [stdout] test test_fix_then_format_idempotent ... ok
[INFO] [stdout] test test_flamegraph_write_error ... ok
[INFO] [stdout] test test_fmt_idempotent ... ok
[INFO] [stdout] test test_fmt_unwritable_file ... ok
[INFO] [stdout] test test_lint_corrupt_cache ... ok
[INFO] [stdout] test test_flamegraph_of_every_action ... FAILED
[INFO] [stdout] test test_fmt_rules_and_report ... ok
[INFO] [stdout] test test_fix_every_rule ... ok
[INFO] [stdout] test test_lint_default ... ok
[INFO] [stdout] test test_check ... ok
[INFO] [stdout] test test_lint_all_languages ... ok
[INFO] [stdout] test test_lint_languages ... ok
[INFO] [stdout] test test_lint_stale_cache_and_steamcmd_failure ... ok
[INFO] [stdout] test test_lint_default_path_and_odd_names ... ok
[INFO] [stdout] test test_lint_base_game_localisation ... ok
[INFO] [stdout] test test_lint_not_a_mod ... ok
[INFO] [stdout] test test_lint_descriptor_versions ... ok
[INFO] [stdout] test test_lint_steamcmd_on_path ... ok
[INFO] [stdout] test test_timings_and_flamegraph ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- test_flamegraph_of_every_action stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'test_flamegraph_of_every_action' (2609) panicked at tests/integration_tests.rs:1708:9:
[INFO] [stdout] no lookup frame in <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" width="1200" height="190" onload="init(evt)" viewBox="0 0 1200 190" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fg="http://github.com/jonhoo/inferno"><!--Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples.--><!--NOTES: --><defs><linearGradient id="background" y1="0" y2="1" x1="0" x2="0"><stop stop-color="#eeeeee" offset="5%"/><stop stop-color="#eeeeb0" offset="95%"/></linearGradient></defs><style type="text/css">
[INFO] [stdout] text { font-family:monospace; font-size:12px }
[INFO] [stdout] #title { text-anchor:middle; font-size:17px; }
[INFO] [stdout] #matched { text-anchor:end; }
[INFO] [stdout] #search { text-anchor:end; opacity:0.1; cursor:pointer; }
[INFO] [stdout] #search:hover, #search.show { opacity:1; }
[INFO] [stdout] #subtitle { text-anchor:middle; font-color:rgb(160,160,160); }
[INFO] [stdout] #unzoom { cursor:pointer; }
[INFO] [stdout] #frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }
[INFO] [stdout] .hide { display:none; }
[INFO] [stdout] .parent { opacity:0.5; }
[INFO] [stdout] </style><script type="text/ecmascript"><![CDATA[
[INFO] [stdout]         var nametype = 'Span:';
[INFO] [stdout]         var fontsize = 12;
[INFO] [stdout]         var fontwidth = 0.59;
[INFO] [stdout]         var xpad = 10;
[INFO] [stdout]         var inverted = false;
[INFO] [stdout]         var searchcolor = 'rgb(230,0,230)';
[INFO] [stdout]         var fluiddrawing = true;
[INFO] [stdout]         var truncate_text_right = false;
[INFO] [stdout]     ]]><![CDATA["use strict";
[INFO] [stdout] var details, searchbtn, unzoombtn, matchedtxt, svg, searching, frames, known_font_width;
[INFO] [stdout] function init(evt) {
[INFO] [stdout]     details = document.getElementById("details").firstChild;
[INFO] [stdout]     searchbtn = document.getElementById("search");
[INFO] [stdout]     unzoombtn = document.getElementById("unzoom");
[INFO] [stdout]     matchedtxt = document.getElementById("matched");
[INFO] [stdout]     svg = document.getElementsByTagName("svg")[0];
[INFO] [stdout]     frames = document.getElementById("frames");
[INFO] [stdout]     known_font_width = get_monospace_width(frames);
[INFO] [stdout]     total_samples = parseInt(frames.attributes.total_samples.value);
[INFO] [stdout]     searching = 0;
[INFO] [stdout] 
[INFO] [stdout]     // Use GET parameters to restore a flamegraph's state.
[INFO] [stdout]     var restore_state = function() {
[INFO] [stdout]         var params = get_params();
[INFO] [stdout]         if (params.x && params.y)
[INFO] [stdout]             zoom(find_group(document.querySelector('[*|x="' + params.x + '"][y="' + params.y + '"]')));
[INFO] [stdout]         if (params.s)
[INFO] [stdout]             search(params.s);
[INFO] [stdout]     };
[INFO] [stdout] 
[INFO] [stdout]     if (fluiddrawing) {
[INFO] [stdout]         // Make width dynamic so the SVG fits its parent's width.
[INFO] [stdout]         svg.removeAttribute("width");
[INFO] [stdout]         // Edge requires us to have a viewBox that gets updated with size changes.
[INFO] [stdout]         var isEdge = /Edge\/\d./i.test(navigator.userAgent);
[INFO] [stdout]         if (!isEdge) {
[INFO] [stdout]             svg.removeAttribute("viewBox");
[INFO] [stdout]         }
[INFO] [stdout]         var update_for_width_change = function() {
[INFO] [stdout]             if (isEdge) {
[INFO] [stdout]                 svg.attributes.viewBox.value = "0 0 " + svg.width.baseVal.value + " " + svg.height.baseVal.value;
[INFO] [stdout]             }
[INFO] [stdout] 
[INFO] [stdout]             // Keep consistent padding on left and right of frames container.
[INFO] [stdout]             frames.attributes.width.value = svg.width.baseVal.value - xpad * 2;
[INFO] [stdout] 
[INFO] [stdout]             // Text truncation needs to be adjusted for the current width.
[INFO] [stdout]             update_text_for_elements(frames.children);
[INFO] [stdout] 
[INFO] [stdout]             // Keep search elements at a fixed distance from right edge.
[INFO] [stdout]             var svgWidth = svg.width.baseVal.value;
[INFO] [stdout]             searchbtn.attributes.x.value = svgWidth - xpad;
[INFO] [stdout]             matchedtxt.attributes.x.value = svgWidth - xpad;
[INFO] [stdout]         };
[INFO] [stdout]         window.addEventListener('resize', function() {
[INFO] [stdout]             update_for_width_change();
[INFO] [stdout]         });
[INFO] [stdout]         // This needs to be done asynchronously for Safari to work.
[INFO] [stdout]         setTimeout(function() {
[INFO] [stdout]             unzoom();
[INFO] [stdout]             update_for_width_change();
[INFO] [stdout]             restore_state();
[INFO] [stdout]         }, 0);
[INFO] [stdout]     } else {
[INFO] [stdout]         restore_state();
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] // event listeners
[INFO] [stdout] window.addEventListener("click", function(e) {
[INFO] [stdout]     var target = find_group(e.target);
[INFO] [stdout]     if (target) {
[INFO] [stdout]         if (target.nodeName == "a") {
[INFO] [stdout]             if (e.ctrlKey === false) return;
[INFO] [stdout]             e.preventDefault();
[INFO] [stdout]         }
[INFO] [stdout]         if (target.classList.contains("parent")) unzoom();
[INFO] [stdout]         zoom(target);
[INFO] [stdout] 
[INFO] [stdout]         // set parameters for zoom state
[INFO] [stdout]         var el = target.querySelector("rect");
[INFO] [stdout]         if (el && el.attributes && el.attributes.y && el.attributes["fg:x"]) {
[INFO] [stdout]             var params = get_params()
[INFO] [stdout]             params.x = el.attributes["fg:x"].value;
[INFO] [stdout]             params.y = el.attributes.y.value;
[INFO] [stdout]             history.replaceState(null, null, parse_params(params));
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout]     else if (e.target.id == "unzoom") {
[INFO] [stdout]         unzoom();
[INFO] [stdout] 
[INFO] [stdout]         // remove zoom state
[INFO] [stdout]         var params = get_params();
[INFO] [stdout]         if (params.x) delete params.x;
[INFO] [stdout]         if (params.y) delete params.y;
[INFO] [stdout]         history.replaceState(null, null, parse_params(params));
[INFO] [stdout]     }
[INFO] [stdout]     else if (e.target.id == "search") search_prompt();
[INFO] [stdout] }, false)
[INFO] [stdout] // mouse-over for info
[INFO] [stdout] // show
[INFO] [stdout] window.addEventListener("mouseover", function(e) {
[INFO] [stdout]     var target = find_group(e.target);
[INFO] [stdout]     if (target) details.nodeValue = nametype + " " + g_to_text(target);
[INFO] [stdout] }, false)
[INFO] [stdout] // clear
[INFO] [stdout] window.addEventListener("mouseout", function(e) {
[INFO] [stdout]     var target = find_group(e.target);
[INFO] [stdout]     if (target) details.nodeValue = ' ';
[INFO] [stdout] }, false)
[INFO] [stdout] // ctrl-F for search
[INFO] [stdout] window.addEventListener("keydown",function (e) {
[INFO] [stdout]     if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
[INFO] [stdout]         e.preventDefault();
[INFO] [stdout]         search_prompt();
[INFO] [stdout]     }
[INFO] [stdout] }, false)
[INFO] [stdout] // functions
[INFO] [stdout] function get_params() {
[INFO] [stdout]     var params = {};
[INFO] [stdout]     var paramsarr = window.location.search.substr(1).split('&');
[INFO] [stdout]     for (var i = 0; i < paramsarr.length; ++i) {
[INFO] [stdout]         var tmp = paramsarr[i].split("=");
[INFO] [stdout]         if (!tmp[0] || !tmp[1]) continue;
[INFO] [stdout]         params[tmp[0]]  = decodeURIComponent(tmp[1]);
[INFO] [stdout]     }
[INFO] [stdout]     return params;
[INFO] [stdout] }
[INFO] [stdout] function parse_params(params) {
[INFO] [stdout]     var uri = "?";
[INFO] [stdout]     for (var key in params) {
[INFO] [stdout]         uri += key + '=' + encodeURIComponent(params[key]) + '&';
[INFO] [stdout]     }
[INFO] [stdout]     if (uri.slice(-1) == "&")
[INFO] [stdout]         uri = uri.substring(0, uri.length - 1);
[INFO] [stdout]     if (uri == '?')
[INFO] [stdout]         uri = window.location.href.split('?')[0];
[INFO] [stdout]     return uri;
[INFO] [stdout] }
[INFO] [stdout] function find_child(node, selector) {
[INFO] [stdout]     var children = node.querySelectorAll(selector);
[INFO] [stdout]     if (children.length) return children[0];
[INFO] [stdout]     return;
[INFO] [stdout] }
[INFO] [stdout] function find_group(node) {
[INFO] [stdout]     var parent = node.parentElement;
[INFO] [stdout]     if (!parent) return;
[INFO] [stdout]     if (parent.id == "frames") return node;
[INFO] [stdout]     return find_group(parent);
[INFO] [stdout] }
[INFO] [stdout] function orig_save(e, attr, val) {
[INFO] [stdout]     if (e.attributes["fg:orig_" + attr] != undefined) return;
[INFO] [stdout]     if (e.attributes[attr] == undefined) return;
[INFO] [stdout]     if (val == undefined) val = e.attributes[attr].value;
[INFO] [stdout]     e.setAttribute("fg:orig_" + attr, val);
[INFO] [stdout] }
[INFO] [stdout] function orig_load(e, attr) {
[INFO] [stdout]     if (e.attributes["fg:orig_"+attr] == undefined) return;
[INFO] [stdout]     e.attributes[attr].value = e.attributes["fg:orig_" + attr].value;
[INFO] [stdout]     e.removeAttribute("fg:orig_" + attr);
[INFO] [stdout] }
[INFO] [stdout] function g_to_text(e) {
[INFO] [stdout]     var text = find_child(e, "title").firstChild.nodeValue;
[INFO] [stdout]     return (text)
[INFO] [stdout] }
[INFO] [stdout] function g_to_func(e) {
[INFO] [stdout]     var func = g_to_text(e);
[INFO] [stdout]     // if there's any manipulation we want to do to the function
[INFO] [stdout]     // name before it's searched, do it here before returning.
[INFO] [stdout]     return (func);
[INFO] [stdout] }
[INFO] [stdout] function get_monospace_width(frames) {
[INFO] [stdout]     // Given the id="frames" element, return the width of text characters if
[INFO] [stdout]     // this is a monospace font, otherwise return 0.
[INFO] [stdout]     text = find_child(frames.children[0], "text");
[INFO] [stdout]     originalContent = text.textContent;
[INFO] [stdout]     text.textContent = "!";
[INFO] [stdout]     bangWidth = text.getComputedTextLength();
[INFO] [stdout]     text.textContent = "W";
[INFO] [stdout]     wWidth = text.getComputedTextLength();
[INFO] [stdout]     text.textContent = originalContent;
[INFO] [stdout]     if (bangWidth === wWidth) {
[INFO] [stdout]         return bangWidth;
[INFO] [stdout]     } else {
[INFO] [stdout]         return 0;
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] function update_text_for_elements(elements) {
[INFO] [stdout]     // In order to render quickly in the browser, you want to do one pass of
[INFO] [stdout]     // reading attributes, and one pass of mutating attributes. See
[INFO] [stdout]     // https://web.dev/avoid-large-complex-layouts-and-layout-thrashing/ for details.
[INFO] [stdout] 
[INFO] [stdout]     // Fall back to inefficient calculation, if we're variable-width font.
[INFO] [stdout]     // TODO This should be optimized somehow too.
[INFO] [stdout]     if (known_font_width === 0) {
[INFO] [stdout]         for (var i = 0; i < elements.length; i++) {
[INFO] [stdout]             update_text(elements[i]);
[INFO] [stdout]         }
[INFO] [stdout]         return;
[INFO] [stdout]     }
[INFO] [stdout] 
[INFO] [stdout]     var textElemNewAttributes = [];
[INFO] [stdout]     for (var i = 0; i < elements.length; i++) {
[INFO] [stdout]         var e = elements[i];
[INFO] [stdout]         var r = find_child(e, "rect");
[INFO] [stdout]         var t = find_child(e, "text");
[INFO] [stdout]         var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3;
[INFO] [stdout]         var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,"");
[INFO] [stdout]         var newX = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value)));
[INFO] [stdout] 
[INFO] [stdout]         // Smaller than this size won't fit anything
[INFO] [stdout]         if (w < 2 * known_font_width) {
[INFO] [stdout]             textElemNewAttributes.push([newX, ""]);
[INFO] [stdout]             continue;
[INFO] [stdout]         }
[INFO] [stdout] 
[INFO] [stdout]         // Fit in full text width
[INFO] [stdout]         if (txt.length * known_font_width < w) {
[INFO] [stdout]             textElemNewAttributes.push([newX, txt]);
[INFO] [stdout]             continue;
[INFO] [stdout]         }
[INFO] [stdout] 
[INFO] [stdout]         var substringLength = Math.floor(w / known_font_width) - 2;
[INFO] [stdout]         if (truncate_text_right) {
[INFO] [stdout]             // Truncate the right side of the text.
[INFO] [stdout]             textElemNewAttributes.push([newX, txt.substring(0, substringLength) + ".."]);
[INFO] [stdout]             continue;
[INFO] [stdout]         } else {
[INFO] [stdout]             // Truncate the left side of the text.
[INFO] [stdout]             textElemNewAttributes.push([newX, ".." + txt.substring(txt.length - substringLength, txt.length)]);
[INFO] [stdout]             continue;
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] 
[INFO] [stdout]     console.assert(textElemNewAttributes.length === elements.length, "Resize failed, please file a bug at https://github.com/jonhoo/inferno/");
[INFO] [stdout] 
[INFO] [stdout]     // Now that we know new textContent, set it all in one go so we don't refresh a bazillion times.
[INFO] [stdout]     for (var i = 0; i < elements.length; i++) {
[INFO] [stdout]         var e = elements[i];
[INFO] [stdout]         var values = textElemNewAttributes[i];
[INFO] [stdout]         var t = find_child(e, "text");
[INFO] [stdout]         t.attributes.x.value = values[0];
[INFO] [stdout]         t.textContent = values[1];
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] function update_text(e) {
[INFO] [stdout]     var r = find_child(e, "rect");
[INFO] [stdout]     var t = find_child(e, "text");
[INFO] [stdout]     var w = parseFloat(r.attributes.width.value) * frames.attributes.width.value / 100 - 3;
[INFO] [stdout]     var txt = find_child(e, "title").textContent.replace(/\([^(]*\)$/,"");
[INFO] [stdout]     t.attributes.x.value = format_percent((parseFloat(r.attributes.x.value) + (100 * 3 / frames.attributes.width.value)));
[INFO] [stdout] 
[INFO] [stdout]     // Smaller than this size won't fit anything
[INFO] [stdout]     if (w < 2 * fontsize * fontwidth) {
[INFO] [stdout]         t.textContent = "";
[INFO] [stdout]         return;
[INFO] [stdout]     }
[INFO] [stdout]     t.textContent = txt;
[INFO] [stdout]     // Fit in full text width
[INFO] [stdout]     if (t.getComputedTextLength() < w)
[INFO] [stdout]         return;
[INFO] [stdout]     if (truncate_text_right) {
[INFO] [stdout]         // Truncate the right side of the text.
[INFO] [stdout]         for (var x = txt.length - 2; x > 0; x--) {
[INFO] [stdout]             if (t.getSubStringLength(0, x + 2) <= w) {
[INFO] [stdout]                 t.textContent = txt.substring(0, x) + "..";
[INFO] [stdout]                 return;
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]     } else {
[INFO] [stdout]         // Truncate the left side of the text.
[INFO] [stdout]         for (var x = 2; x < txt.length; x++) {
[INFO] [stdout]             if (t.getSubStringLength(x - 2, txt.length) <= w) {
[INFO] [stdout]                 t.textContent = ".." + txt.substring(x, txt.length);
[INFO] [stdout]                 return;
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout]     t.textContent = "";
[INFO] [stdout] }
[INFO] [stdout] // zoom
[INFO] [stdout] function zoom_reset(e) {
[INFO] [stdout]     if (e.tagName == "rect") {
[INFO] [stdout]         e.attributes.x.value = format_percent(100 * parseInt(e.attributes["fg:x"].value) / total_samples);
[INFO] [stdout]         e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / total_samples);
[INFO] [stdout]     }
[INFO] [stdout]     if (e.childNodes == undefined) return;
[INFO] [stdout]     for(var i = 0, c = e.childNodes; i < c.length; i++) {
[INFO] [stdout]         zoom_reset(c[i]);
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] function zoom_child(e, x, zoomed_width_samples) {
[INFO] [stdout]     if (e.tagName == "text") {
[INFO] [stdout]         var parent_x = parseFloat(find_child(e.parentNode, "rect[x]").attributes.x.value);
[INFO] [stdout]         e.attributes.x.value = format_percent(parent_x + (100 * 3 / frames.attributes.width.value));
[INFO] [stdout]     } else if (e.tagName == "rect") {
[INFO] [stdout]         e.attributes.x.value = format_percent(100 * (parseInt(e.attributes["fg:x"].value) - x) / zoomed_width_samples);
[INFO] [stdout]         e.attributes.width.value = format_percent(100 * parseInt(e.attributes["fg:w"].value) / zoomed_width_samples);
[INFO] [stdout]     }
[INFO] [stdout]     if (e.childNodes == undefined) return;
[INFO] [stdout]     for(var i = 0, c = e.childNodes; i < c.length; i++) {
[INFO] [stdout]         zoom_child(c[i], x, zoomed_width_samples);
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] function zoom_parent(e) {
[INFO] [stdout]     if (e.attributes) {
[INFO] [stdout]         if (e.attributes.x != undefined) {
[INFO] [stdout]             e.attributes.x.value = "0.0%";
[INFO] [stdout]         }
[INFO] [stdout]         if (e.attributes.width != undefined) {
[INFO] [stdout]             e.attributes.width.value = "100.0%";
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout]     if (e.childNodes == undefined) return;
[INFO] [stdout]     for(var i = 0, c = e.childNodes; i < c.length; i++) {
[INFO] [stdout]         zoom_parent(c[i]);
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] function zoom(node) {
[INFO] [stdout]     var attr = find_child(node, "rect").attributes;
[INFO] [stdout]     var width = parseInt(attr["fg:w"].value);
[INFO] [stdout]     var xmin = parseInt(attr["fg:x"].value);
[INFO] [stdout]     var xmax = xmin + width;
[INFO] [stdout]     var ymin = parseFloat(attr.y.value);
[INFO] [stdout]     unzoombtn.classList.remove("hide");
[INFO] [stdout]     var el = frames.children;
[INFO] [stdout]     var to_update_text = [];
[INFO] [stdout]     for (var i = 0; i < el.length; i++) {
[INFO] [stdout]         var e = el[i];
[INFO] [stdout]         var a = find_child(e, "rect").attributes;
[INFO] [stdout]         var ex = parseInt(a["fg:x"].value);
[INFO] [stdout]         var ew = parseInt(a["fg:w"].value);
[INFO] [stdout]         // Is it an ancestor
[INFO] [stdout]         if (!inverted) {
[INFO] [stdout]             var upstack = parseFloat(a.y.value) > ymin;
[INFO] [stdout]         } else {
[INFO] [stdout]             var upstack = parseFloat(a.y.value) < ymin;
[INFO] [stdout]         }
[INFO] [stdout]         if (upstack) {
[INFO] [stdout]             // Direct ancestor
[INFO] [stdout]             if (ex <= xmin && (ex+ew) >= xmax) {
[INFO] [stdout]                 e.classList.add("parent");
[INFO] [stdout]                 zoom_parent(e);
[INFO] [stdout]                 to_update_text.push(e);
[INFO] [stdout]             }
[INFO] [stdout]             // not in current path
[INFO] [stdout]             else
[INFO] [stdout]                 e.classList.add("hide");
[INFO] [stdout]         }
[INFO] [stdout]         // Children maybe
[INFO] [stdout]         else {
[INFO] [stdout]             // no common path
[INFO] [stdout]             if (ex < xmin || ex >= xmax) {
[INFO] [stdout]                 e.classList.add("hide");
[INFO] [stdout]             }
[INFO] [stdout]             else {
[INFO] [stdout]                 zoom_child(e, xmin, width);
[INFO] [stdout]                 to_update_text.push(e);
[INFO] [stdout]             }
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout]     update_text_for_elements(to_update_text);
[INFO] [stdout] }
[INFO] [stdout] function unzoom() {
[INFO] [stdout]     unzoombtn.classList.add("hide");
[INFO] [stdout]     var el = frames.children;
[INFO] [stdout]     for(var i = 0; i < el.length; i++) {
[INFO] [stdout]         el[i].classList.remove("parent");
[INFO] [stdout]         el[i].classList.remove("hide");
[INFO] [stdout]         zoom_reset(el[i]);
[INFO] [stdout]     }
[INFO] [stdout]     update_text_for_elements(el);
[INFO] [stdout] }
[INFO] [stdout] // search
[INFO] [stdout] function reset_search() {
[INFO] [stdout]     var el = document.querySelectorAll("#frames rect");
[INFO] [stdout]     for (var i = 0; i < el.length; i++) {
[INFO] [stdout]         orig_load(el[i], "fill")
[INFO] [stdout]     }
[INFO] [stdout]     var params = get_params();
[INFO] [stdout]     delete params.s;
[INFO] [stdout]     history.replaceState(null, null, parse_params(params));
[INFO] [stdout] }
[INFO] [stdout] function search_prompt() {
[INFO] [stdout]     if (!searching) {
[INFO] [stdout]         var term = prompt("Enter a search term (regexp " +
[INFO] [stdout]             "allowed, eg: ^ext4_)", "");
[INFO] [stdout]         if (term != null) {
[INFO] [stdout]             search(term)
[INFO] [stdout]         }
[INFO] [stdout]     } else {
[INFO] [stdout]         reset_search();
[INFO] [stdout]         searching = 0;
[INFO] [stdout]         searchbtn.classList.remove("show");
[INFO] [stdout]         searchbtn.firstChild.nodeValue = "Search"
[INFO] [stdout]         matchedtxt.classList.add("hide");
[INFO] [stdout]         matchedtxt.firstChild.nodeValue = ""
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] function search(term) {
[INFO] [stdout]     var re = new RegExp(term);
[INFO] [stdout]     var el = frames.children;
[INFO] [stdout]     var matches = new Object();
[INFO] [stdout]     var maxwidth = 0;
[INFO] [stdout]     for (var i = 0; i < el.length; i++) {
[INFO] [stdout]         var e = el[i];
[INFO] [stdout]         // Skip over frames which are either not visible, or below the zoomed-to frame
[INFO] [stdout]         if (e.classList.contains("hide") || e.classList.contains("parent")) {
[INFO] [stdout]             continue;
[INFO] [stdout]         }
[INFO] [stdout]         var func = g_to_func(e);
[INFO] [stdout]         var rect = find_child(e, "rect");
[INFO] [stdout]         if (func == null || rect == null)
[INFO] [stdout]             continue;
[INFO] [stdout]         // Save max width. Only works as we have a root frame
[INFO] [stdout]         var w = parseInt(rect.attributes["fg:w"].value);
[INFO] [stdout]         if (w > maxwidth)
[INFO] [stdout]             maxwidth = w;
[INFO] [stdout]         if (func.match(re)) {
[INFO] [stdout]             // highlight
[INFO] [stdout]             var x = parseInt(rect.attributes["fg:x"].value);
[INFO] [stdout]             orig_save(rect, "fill");
[INFO] [stdout]             rect.attributes.fill.value = searchcolor;
[INFO] [stdout]             // remember matches
[INFO] [stdout]             if (matches[x] == undefined) {
[INFO] [stdout]                 matches[x] = w;
[INFO] [stdout]             } else {
[INFO] [stdout]                 if (w > matches[x]) {
[INFO] [stdout]                     // overwrite with parent
[INFO] [stdout]                     matches[x] = w;
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]             searching = 1;
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout]     if (!searching)
[INFO] [stdout]         return;
[INFO] [stdout]     var params = get_params();
[INFO] [stdout]     params.s = term;
[INFO] [stdout]     history.replaceState(null, null, parse_params(params));
[INFO] [stdout] 
[INFO] [stdout]     searchbtn.classList.add("show");
[INFO] [stdout]     searchbtn.firstChild.nodeValue = "Reset Search";
[INFO] [stdout]     // calculate percent matched, excluding vertical overlap
[INFO] [stdout]     var count = 0;
[INFO] [stdout]     var lastx = -1;
[INFO] [stdout]     var lastw = 0;
[INFO] [stdout]     var keys = Array();
[INFO] [stdout]     for (k in matches) {
[INFO] [stdout]         if (matches.hasOwnProperty(k))
[INFO] [stdout]             keys.push(k);
[INFO] [stdout]     }
[INFO] [stdout]     // sort the matched frames by their x location
[INFO] [stdout]     // ascending, then width descending
[INFO] [stdout]     keys.sort(function(a, b){
[INFO] [stdout]         return a - b;
[INFO] [stdout]     });
[INFO] [stdout]     // Step through frames saving only the biggest bottom-up frames
[INFO] [stdout]     // thanks to the sort order. This relies on the tree property
[INFO] [stdout]     // where children are always smaller than their parents.
[INFO] [stdout]     for (var k in keys) {
[INFO] [stdout]         var x = parseInt(keys[k]);
[INFO] [stdout]         var w = matches[keys[k]];
[INFO] [stdout]         if (x >= lastx + lastw) {
[INFO] [stdout]             count += w;
[INFO] [stdout]             lastx = x;
[INFO] [stdout]             lastw = w;
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout]     // display matched percent
[INFO] [stdout]     matchedtxt.classList.remove("hide");
[INFO] [stdout]     var pct = 100 * count / maxwidth;
[INFO] [stdout]     if (pct != 100) pct = pct.toFixed(1);
[INFO] [stdout]     matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%";
[INFO] [stdout] }
[INFO] [stdout] function format_percent(n) {
[INFO] [stdout]     return n.toFixed(4) + "%";
[INFO] [stdout] }
[INFO] [stdout] ]]></script><rect x="0" y="0" width="100%" height="190" fill="url(#background)"/><text id="title" fill="rgb(0,0,0)" x="50.0000%" y="24.00">hearty: 173.83ms wall, 352.03ms active</text><text id="subtitle" x="50.0000%" y="48.00">hearty /tmp/.tmpMJMZDE/test_mod --fix --format --check --lint --timings --flamegraph /tmp/.tmpMJMZDE/flamegraph.svg</text><text id="details" fill="rgb(0,0,0)" x="10" y="173.00"> </text><text id="unzoom" class="hide" fill="rgb(0,0,0)" x="10" y="24.00">Reset Zoom</text><text id="search" fill="rgb(0,0,0)" x="1190" y="24.00">Search</text><text id="matched" fill="rgb(0,0,0)" x="1190" y="173.00"> </text><svg id="frames" x="10" width="1180" total_samples="352018"><g><title>find files (7,606 µs, 2.16%)</title><rect x="0.0000%" y="125" width="2.1607%" height="15" fill="rgb(227,0,7)" fg:x="0" fg:w="7606"/><text x="0.2500%" y="135.50">f..</text></g><g><title>walk (7,606 µs, 2.16%)</title><rect x="0.0000%" y="109" width="2.1607%" height="15" fill="rgb(217,0,24)" fg:x="0" fg:w="7606"/><text x="0.2500%" y="119.50">w..</text></g><g><title>keys (79 µs, 0.02%)</title><rect x="2.2536%" y="93" width="0.0224%" height="15" fill="rgb(221,193,54)" fg:x="7933" fg:w="79"/><text x="2.5036%" y="103.50"></text></g><g><title>localisation load (467 µs, 0.13%)</title><rect x="2.1607%" y="125" width="0.1327%" height="15" fill="rgb(248,212,6)" fg:x="7606" fg:w="467"/><text x="2.4107%" y="135.50"></text></g><g><title>file (467 µs, 0.13%)</title><rect x="2.1607%" y="109" width="0.1327%" height="15" fill="rgb(208,68,35)" fg:x="7606" fg:w="467"/><text x="2.4107%" y="119.50"></text></g><g><title>read (61 µs, 0.02%)</title><rect x="2.2760%" y="93" width="0.0173%" height="15" fill="rgb(232,128,0)" fg:x="8012" fg:w="61"/><text x="2.5260%" y="103.50"></text></g><g><title>missing keys (1,272 µs, 0.36%)</title><rect x="2.3334%" y="109" width="0.3613%" height="15" fill="rgb(207,160,47)" fg:x="8214" fg:w="1272"/><text x="2.5834%" y="119.50"></text></g><g><title>read (149 µs, 0.04%)</title><rect x="2.6947%" y="109" width="0.0423%" height="15" fill="rgb(228,23,34)" fg:x="9486" fg:w="149"/><text x="2.9447%" y="119.50"></text></g><g><title>redundant fields (535 µs, 0.15%)</title><rect x="2.7371%" y="109" width="0.1520%" height="15" fill="rgb(218,30,26)" fg:x="9635" fg:w="535"/><text x="2.9871%" y="119.50"></text></g><g><title>report (4,345 µs, 1.23%)</title><rect x="2.2999%" y="125" width="1.2343%" height="15" fill="rgb(220,122,19)" fg:x="8096" fg:w="4345"/><text x="2.5499%" y="135.50"></text></g><g><title>summary (2,271 µs, 0.65%)</title><rect x="2.8891%" y="109" width="0.6451%" height="15" fill="rgb(250,228,42)" fg:x="10170" fg:w="2271"/><text x="3.1391%" y="119.50"></text></g><g><title>summary (390 µs, 0.11%)</title><rect x="3.4234%" y="93" width="0.1108%" height="15" fill="rgb(240,193,28)" fg:x="12051" fg:w="390"/><text x="3.6734%" y="103.50"></text></g><g><title>field order (381 µs, 0.11%)</title><rect x="5.4477%" y="77" width="0.1082%" height="15" fill="rgb(216,20,37)" fg:x="19177" fg:w="381"/><text x="5.6977%" y="87.50"></text></g><g><title>inline (522 µs, 0.15%)</title><rect x="5.5560%" y="77" width="0.1483%" height="15" fill="rgb(206,188,39)" fg:x="19558" fg:w="522"/><text x="5.8060%" y="87.50"></text></g><g><title>sort events (365 µs, 0.10%)</title><rect x="5.7043%" y="77" width="0.1037%" height="15" fill="rgb(217,207,13)" fg:x="20080" fg:w="365"/><text x="5.9543%" y="87.50"></text></g><g><title>check (3,923 µs, 1.11%)</title><rect x="4.7552%" y="93" width="1.1144%" height="15" fill="rgb(231,73,38)" fg:x="16739" fg:w="3923"/><text x="5.0052%" y="103.50"></text></g><g><title>sort focuses (217 µs, 0.06%)</title><rect x="5.8079%" y="77" width="0.0616%" height="15" fill="rgb(225,20,46)" fg:x="20445" fg:w="217"/><text x="6.0579%" y="87.50"></text></g><g><title>line stats (121,774 µs, 34.59%)</title><rect x="6.2574%" y="77" width="34.5931%" height="15" fill="rgb(210,31,41)" fg:x="22027" fg:w="121774"/><text x="6.5074%" y="87.50">line stats</text></g><g><title>parse (3,221 µs, 0.92%)</title><rect x="40.8505%" y="77" width="0.9150%" height="15" fill="rgb(221,200,47)" fg:x="143801" fg:w="3221"/><text x="41.1005%" y="87.50"></text></g><g><title>redundant find (1,654 µs, 0.47%)</title><rect x="41.7655%" y="77" width="0.4699%" height="15" fill="rgb(226,26,5)" fg:x="147022" fg:w="1654"/><text x="42.0155%" y="87.50"></text></g><g><title>fix (128,148 µs, 36.40%)</title><rect x="5.8696%" y="93" width="36.4038%" height="15" fill="rgb(249,33,26)" fg:x="20662" fg:w="128148"/><text x="6.1196%" y="103.50">fix</text></g><g><title>redundant fix (134 µs, 0.04%)</title><rect x="42.2353%" y="77" width="0.0381%" height="15" fill="rgb(235,183,28)" fg:x="148676" fg:w="134"/><text x="42.4853%" y="87.50"></text></g><g><title>field order (24,168 µs, 6.87%)</title><rect x="75.4669%" y="77" width="6.8656%" height="15" fill="rgb(221,5,38)" fg:x="265657" fg:w="24168"/><text x="75.7169%" y="87.50">field ord..</text></g><g><title>parse (22,520 µs, 6.40%)</title><rect x="75.9350%" y="61" width="6.3974%" height="15" fill="rgb(247,18,42)" fg:x="267305" fg:w="22520"/><text x="76.1850%" y="71.50">parse</text></g><g><title>inline (2,718 µs, 0.77%)</title><rect x="82.3324%" y="77" width="0.7721%" height="15" fill="rgb(241,131,45)" fg:x="289825" fg:w="2718"/><text x="82.5824%" y="87.50"></text></g><g><title>parse (1,429 µs, 0.41%)</title><rect x="82.6986%" y="61" width="0.4059%" height="15" fill="rgb(249,31,29)" fg:x="291114" fg:w="1429"/><text x="82.9486%" y="71.50"></text></g><g><title>line stats (3,023 µs, 0.86%)</title><rect x="83.1046%" y="77" width="0.8588%" height="15" fill="rgb(225,111,53)" fg:x="292543" fg:w="3023"/><text x="83.3546%" y="87.50"></text></g><g><title>parse (879 µs, 0.25%)</title><rect x="83.9633%" y="77" width="0.2497%" height="15" fill="rgb(238,160,17)" fg:x="295566" fg:w="879"/><text x="84.2133%" y="87.50"></text></g><g><title>sort events (6,267 µs, 1.78%)</title><rect x="84.2130%" y="77" width="1.7803%" height="15" fill="rgb(214,148,48)" fg:x="296445" fg:w="6267"/><text x="84.4630%" y="87.50">s..</text></g><g><title>format (154,202 µs, 43.81%)</title><rect x="42.2734%" y="93" width="43.8051%" height="15" fill="rgb(232,36,49)" fg:x="148810" fg:w="154202"/><text x="42.5234%" y="103.50">format</text></g><g><title>sort focuses (300 µs, 0.09%)</title><rect x="85.9933%" y="77" width="0.0852%" height="15" fill="rgb(209,103,24)" fg:x="302712" fg:w="300"/><text x="86.2433%" y="87.50"></text></g><g><title>keys (136 µs, 0.04%)</title><rect x="86.3328%" y="77" width="0.0386%" height="15" fill="rgb(229,88,8)" fg:x="303907" fg:w="136"/><text x="86.5828%" y="87.50"></text></g><g><title>lint (3,454 µs, 0.98%)</title><rect x="86.0786%" y="93" width="0.9812%" height="15" fill="rgb(213,181,19)" fg:x="303012" fg:w="3454"/><text x="86.3286%" y="103.50"></text></g><g><title>redundant find (2,423 µs, 0.69%)</title><rect x="86.3714%" y="77" width="0.6883%" height="15" fill="rgb(254,191,54)" fg:x="304043" fg:w="2423"/><text x="86.6214%" y="87.50"></text></g><g><title>read (808 µs, 0.23%)</title><rect x="87.0598%" y="93" width="0.2295%" height="15" fill="rgb(241,83,37)" fg:x="306466" fg:w="808"/><text x="87.3098%" y="103.50"></text></g><g><title>scripts (338,843 µs, 96.26%)</title><rect x="3.5342%" y="125" width="96.2573%" height="15" fill="rgb(233,36,39)" fg:x="12441" fg:w="338843"/><text x="3.7842%" y="135.50">scripts</text></g><g><title>file (338,843 µs, 96.26%)</title><rect x="3.5342%" y="109" width="96.2573%" height="15" fill="rgb(226,3,54)" fg:x="12441" fg:w="338843"/><text x="3.7842%" y="119.50">file</text></g><g><title>write (44,010 µs, 12.50%)</title><rect x="87.2893%" y="93" width="12.5022%" height="15" fill="rgb(245,192,40)" fg:x="307274" fg:w="44010"/><text x="87.5393%" y="103.50">write</text></g><g><title>cache read (119 µs, 0.03%)</title><rect x="99.8136%" y="109" width="0.0338%" height="15" fill="rgb(238,167,29)" fg:x="351362" fg:w="119"/><text x="100.0636%" y="119.50"></text></g><g><title>all (352,018 µs, 100%)</title><rect x="0.0000%" y="141" width="100.0000%" height="15" fill="rgb(232,182,51)" fg:x="0" fg:w="352018"/><text x="0.2500%" y="151.50"></text></g><g><title>version check (734 µs, 0.21%)</title><rect x="99.7915%" y="125" width="0.2085%" height="15" fill="rgb(231,60,39)" fg:x="351284" fg:w="734"/><text x="100.0415%" y="135.50"></text></g><g><title>check descriptor (537 µs, 0.15%)</title><rect x="99.8475%" y="109" width="0.1525%" height="15" fill="rgb(208,69,12)" fg:x="351481" fg:w="537"/><text x="100.0975%" y="119.50"></text></g></svg></svg>
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x58ad1c441341 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x58ad1c441341 - std[617be2ca0a6fd877]::backtrace_rs::backtrace::trace_unsynchronized::<std[617be2ca0a6fd877]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x58ad1c441341 - std[617be2ca0a6fd877]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x58ad1c441341 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x58ad1c45681a - <core[a373ad73a504971]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x58ad1c45681a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    6:     0x58ad1c445aec - core[a373ad73a504971]::io::write::default_write_fmt::<alloc[2e1b2a31b91974c5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x58ad1c445aec - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x58ad1c4195e6 - <std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x58ad1c4195e6 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:289:27
[INFO] [stdout]   10:     0x58ad1c437469 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:313:9
[INFO] [stdout]   11:     0x58ad1c39cdc0 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   12:     0x58ad1c39cdc0 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x58ad1c437622 - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn for<'a, 'b> core[a373ad73a504971]::ops::function::Fn<(&'a std[617be2ca0a6fd877]::panic::PanicHookInfo<'b>,), Output = ()> + core[a373ad73a504971]::marker::Sync + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::Fn<(&std[617be2ca0a6fd877]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2328:9
[INFO] [stdout]   14:     0x58ad1c437622 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:819:13
[INFO] [stdout]   15:     0x58ad1c419692 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:685:13
[INFO] [stdout]   16:     0x58ad1c411fc9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x58ad1c41a44d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:676:5
[INFO] [stdout]   18:     0x58ad1c456fcc - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x58ad1c33811d - integration_tests[37bab46e2cfbd881]::test_flamegraph_of_every_action
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/integration_tests.rs:1708:9
[INFO] [stdout]   20:     0x58ad1c320647 - integration_tests[37bab46e2cfbd881]::test_flamegraph_of_every_action::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/integration_tests.rs:1643:37
[INFO] [stdout]   21:     0x58ad1c346cc6 - <integration_tests[37bab46e2cfbd881]::test_flamegraph_of_every_action::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x58ad1c39020b - <fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x58ad1c39020b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:701:18
[INFO] [stdout]   24:     0x58ad1c39d3e5 - test[aada8e7e76ba119b]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:74
[INFO] [stdout]   25:     0x58ad1c39d3e5 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x58ad1c39d3e5 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   27:     0x58ad1c39d3e5 - std[617be2ca0a6fd877]::panicking::catch_unwind::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   28:     0x58ad1c39d3e5 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<test[aada8e7e76ba119b]::run_test_in_process::{closure#0}>, core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x58ad1c39d3e5 - test[aada8e7e76ba119b]::run_test_in_process
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:724:27
[INFO] [stdout]   30:     0x58ad1c39d3e5 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:645:43
[INFO] [stdout]   31:     0x58ad1c396cd4 - test[aada8e7e76ba119b]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/test/src/lib.rs:675:41
[INFO] [stdout]   32:     0x58ad1c396cd4 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x58ad1c3a0472 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x58ad1c3a0472 - <core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x58ad1c3a0472 - std[617be2ca0a6fd877]::panicking::catch_unwind::do_call::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:573:43
[INFO] [stdout]   36:     0x58ad1c3a0472 - std[617be2ca0a6fd877]::panicking::catch_unwind::<(), core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panicking.rs:541:19
[INFO] [stdout]   37:     0x58ad1c3a0472 - std[617be2ca0a6fd877]::panic::catch_unwind::<core[a373ad73a504971]::panic::unwind_safe::AssertUnwindSafe<std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x58ad1c3a0472 - std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x58ad1c3a0472 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x58ad1c44028f - <alloc[2e1b2a31b91974c5]::boxed::Box<dyn core[a373ad73a504971]::ops::function::FnOnce<(), Output = ()> + core[a373ad73a504971]::marker::Send> as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/alloc/src/boxed.rs:2314:9
[INFO] [stdout]   41:     0x58ad1c44028f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/e3feeb59cd1bdd011a2bfcc0747b55125d9b8527/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   42:     0x7d6da91badfa - <unknown>
[INFO] [stdout]   43:     0x7d6da924e3d4 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     test_flamegraph_of_every_action
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 25 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test integration_tests`
[INFO] running `Command { std: "docker" "inspect" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387", kill_on_drop: false }`
[INFO] [stdout] 105b333690c984aba031c9d711b36259372c8d39e13f74ca86a9ba3c20c58387
