[INFO] fetching crate ocpi-tariffs 0.46.0... [INFO] testing ocpi-tariffs-0.46.0 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate ocpi-tariffs 0.46.0 into /workspace/builds/worker-1-tc2/source [INFO] started tweaking crates.io crate ocpi-tariffs 0.46.0 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate ocpi-tariffs 0.46.0 [INFO] tweaked toml for crates.io crate ocpi-tariffs 0.46.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate ocpi-tariffs 0.46.0 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate ocpi-tariffs 0.46.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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "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/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5d7398f0ac1755d1b199049905630ca886ffa8a12afd465289bd56e4d0fffb98 [INFO] running `Command { std: "docker" "start" "-a" "5d7398f0ac1755d1b199049905630ca886ffa8a12afd465289bd56e4d0fffb98", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5d7398f0ac1755d1b199049905630ca886ffa8a12afd465289bd56e4d0fffb98", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5d7398f0ac1755d1b199049905630ca886ffa8a12afd465289bd56e4d0fffb98", kill_on_drop: false }` [INFO] [stdout] 5d7398f0ac1755d1b199049905630ca886ffa8a12afd465289bd56e4d0fffb98 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b1e3c3adf6a9c84b23ca1a00a32c69425114c819fd7ff240adbd7b0c14d52a6d [INFO] running `Command { std: "docker" "start" "-a" "b1e3c3adf6a9c84b23ca1a00a32c69425114c819fd7ff240adbd7b0c14d52a6d", kill_on_drop: false }` [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling rust_decimal v1.39.0 [INFO] [stderr] Compiling chrono-tz v0.10.4 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling phf_shared v0.12.1 [INFO] [stderr] Compiling ocpi-tariffs v0.46.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling json-tools v1.1.3 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling phf v0.12.1 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling rust_decimal_macros v1.39.0 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.59s [INFO] running `Command { std: "docker" "inspect" "b1e3c3adf6a9c84b23ca1a00a32c69425114c819fd7ff240adbd7b0c14d52a6d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b1e3c3adf6a9c84b23ca1a00a32c69425114c819fd7ff240adbd7b0c14d52a6d", kill_on_drop: false }` [INFO] [stdout] b1e3c3adf6a9c84b23ca1a00a32c69425114c819fd7ff240adbd7b0c14d52a6d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0266a48e42c55cc8514175d12a2d8f5628b1ea4555a7067cc0b7df39eb735d91 [INFO] running `Command { std: "docker" "start" "-a" "0266a48e42c55cc8514175d12a2d8f5628b1ea4555a7067cc0b7df39eb735d91", kill_on_drop: false }` [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling rand_core v0.10.0 [INFO] [stderr] Compiling cpufeatures v0.3.0 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling json-strip-comments v3.1.0 [INFO] [stderr] Compiling assert_matches v1.5.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling test-each-codegen v0.3.1 [INFO] [stderr] Compiling chacha20 v0.10.0 [INFO] [stderr] Compiling test-each v0.3.1 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling rand v0.10.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling rust_decimal v1.39.0 [INFO] [stderr] Compiling ocpi-tariffs v0.46.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: function `read_file_content` is never used [INFO] [stdout] --> src/test.rs:68:8 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn read_file_content(file_path: &Path) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: requested on the command line with `-W dead-code` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VersionedType` is never used [INFO] [stdout] --> src/test.rs:132:11 [INFO] [stdout] | [INFO] [stdout] 132 | pub trait VersionedType: fmt::Debug { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `into_option` and `expect_value` are never used [INFO] [stdout] --> src/test.rs:198:12 [INFO] [stdout] | [INFO] [stdout] 193 | / impl ExpectValue [INFO] [stdout] 194 | | where [INFO] [stdout] 195 | | T: fmt::Debug, [INFO] [stdout] | |__________________- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 198 | pub fn into_option(self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | pub fn expect_value(self) -> T { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExpectFile` is never constructed [INFO] [stdout] --> src/test.rs:243:19 [INFO] [stdout] | [INFO] [stdout] 243 | pub(crate) struct ExpectFile { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `as_deref` is never used [INFO] [stdout] --> src/test.rs:257:12 [INFO] [stdout] | [INFO] [stdout] 256 | impl ExpectFile { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] 257 | pub fn as_deref(&self) -> ExpectFile<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `with_value` and `only_file_name` are never used [INFO] [stdout] --> src/test.rs:266:12 [INFO] [stdout] | [INFO] [stdout] 265 | impl ExpectFile { [INFO] [stdout] | --------------------- associated functions in this implementation [INFO] [stdout] 266 | pub fn with_value(value: Option, file_name: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | pub fn only_file_name(file_name: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `IntoFields` is never used [INFO] [stdout] --> src/test.rs:281:18 [INFO] [stdout] | [INFO] [stdout] 281 | pub(crate) trait IntoFields { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_expect_json` is never used [INFO] [stdout] --> src/test.rs:297:8 [INFO] [stdout] | [INFO] [stdout] 297 | pub fn read_expect_json(json_file_path: &Path, feature: &str) -> ExpectFile { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_expect_json` is never used [INFO] [stdout] --> src/test.rs:328:8 [INFO] [stdout] | [INFO] [stdout] 328 | pub fn parse_expect_json<'de, T>(json: ExpectFile<&'de str>) -> ExpectFile [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TARIFF_FILE_NAME` is never used [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 31 | const TARIFF_FILE_NAME: &str = "tariff.json"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_price_cdr_generated_from_tariff` is never used [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:97:4 [INFO] [stdout] | [INFO] [stdout] 97 | fn should_price_cdr_generated_from_tariff(test_run_json: &str, test_run_file_path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestRun` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:256:8 [INFO] [stdout] | [INFO] [stdout] 256 | struct TestRun { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Expect` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:301:8 [INFO] [stdout] | [INFO] [stdout] 301 | struct Expect { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Tolerance` is never used [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:332:7 [INFO] [stdout] | [INFO] [stdout] 332 | trait Tolerance { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TolerancePrice` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:342:8 [INFO] [stdout] | [INFO] [stdout] 342 | struct TolerancePrice { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ToleranceKwh` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:359:8 [INFO] [stdout] | [INFO] [stdout] 359 | struct ToleranceKwh { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ToleranceHms` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:379:8 [INFO] [stdout] | [INFO] [stdout] 379 | struct ToleranceHms { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `partial_to_cdr` is never used [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:422:4 [INFO] [stdout] | [INFO] [stdout] 422 | fn partial_to_cdr(partial_cdr: super::PartialCdr) -> serde_json::Value { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `random_alpha_num_string` is never used [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:539:4 [INFO] [stdout] | [INFO] [stdout] 539 | fn random_alpha_num_string(len: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ChargingPeriod` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:564:8 [INFO] [stdout] | [INFO] [stdout] 564 | struct ChargingPeriod { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Dimension` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:595:8 [INFO] [stdout] | [INFO] [stdout] 595 | struct Dimension { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Price` is never constructed [INFO] [stdout] --> src/generate/test_popular_tariffs.rs:619:8 [INFO] [stdout] | [INFO] [stdout] 619 | struct Price { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_guess_version_v221` is never used [INFO] [stdout] --> src/guess/test_real_world.rs:17:4 [INFO] [stdout] | [INFO] [stdout] 17 | fn should_guess_version_v221(cdr_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_guess_version_v211` is never used [INFO] [stdout] --> src/guess/test_real_world.rs:24:4 [INFO] [stdout] | [INFO] [stdout] 24 | fn should_guess_version_v211(cdr_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_guess` is never used [INFO] [stdout] --> src/guess/test_real_world.rs:31:4 [INFO] [stdout] | [INFO] [stdout] 31 | fn test_guess(expected_version: crate::Version, cdr_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `filter_matches` is never used [INFO] [stdout] --> src/json/test.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 62 | impl<'buf> UnexpectedFields<'buf> { [INFO] [stdout] | --------------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 69 | fn filter_matches(&mut self, glob: &PathGlob) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `expect_no_unexpected_fields` is never used [INFO] [stdout] --> src/json/test.rs:154:15 [INFO] [stdout] | [INFO] [stdout] 154 | pub(crate) fn expect_no_unexpected_fields( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `expect_unexpected_fields` is never used [INFO] [stdout] --> src/json/test.rs:190:15 [INFO] [stdout] | [INFO] [stdout] 190 | pub(crate) fn expect_unexpected_fields( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TestRun` is never constructed [INFO] [stdout] --> src/lint/tariff/test.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | struct TestRun<'buf> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Expect` is never constructed [INFO] [stdout] --> src/lint/tariff/test.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | struct Expect { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_lint` is never used [INFO] [stdout] --> src/lint/tariff/test.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn run_lint(test_json: &str, test_file_path: &Path, expected_version: Version) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_lint_tariff` is never used [INFO] [stdout] --> src/lint/tariff/v211/test.rs:10:4 [INFO] [stdout] | [INFO] [stdout] 10 | fn should_lint_tariff(test_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_lint_tariff` is never used [INFO] [stdout] --> src/lint/tariff/v221/test.rs:10:4 [INFO] [stdout] | [INFO] [stdout] 10 | fn should_lint_tariff(test_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PRECISION` is never used [INFO] [stdout] --> src/price/test.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const PRECISION: u32 = 2; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Expect` is never constructed [INFO] [stdout] --> src/price/test.rs:95:19 [INFO] [stdout] | [INFO] [stdout] 95 | pub(crate) struct Expect { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExpectFields` is never constructed [INFO] [stdout] --> src/price/test.rs:115:19 [INFO] [stdout] | [INFO] [stdout] 115 | pub(crate) struct ExpectFields { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_parse_report` is never used [INFO] [stdout] --> src/price/test.rs:163:15 [INFO] [stdout] | [INFO] [stdout] 163 | pub(crate) fn assert_parse_report( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_price_report` is never used [INFO] [stdout] --> src/price/test.rs:194:15 [INFO] [stdout] | [INFO] [stdout] 194 | pub(crate) fn assert_price_report( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `unexpected_fields` is never read [INFO] [stdout] --> src/price/test.rs:411:5 [INFO] [stdout] | [INFO] [stdout] 409 | pub struct ParseExpect { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 410 | #[serde(default)] [INFO] [stdout] 411 | unexpected_fields: Expectation>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/price/test.rs:421:5 [INFO] [stdout] | [INFO] [stdout] 416 | pub struct PriceExpect { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 421 | warnings: Expectation>>, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 425 | tariff_index: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 429 | tariff_id: Expectation, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 435 | tariff_reports: Expectation>, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 439 | total_cost: Expectation, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 443 | total_fixed_cost: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 447 | total_time: Expectation, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | total_time_cost: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | total_energy: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 459 | total_energy_cost: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 463 | total_parking_time: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 467 | total_parking_cost: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 471 | total_reservation_cost: Expectation, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id` and `warnings` are never read [INFO] [stdout] --> src/price/test.rs:477:5 [INFO] [stdout] | [INFO] [stdout] 475 | struct TariffReportExpect { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 476 | /// The id of the tariff. [INFO] [stdout] 477 | id: String, [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 483 | warnings: BTreeMap>, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TariffReportExpect` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `expect_opt_price` and `expect_price` are never used [INFO] [stdout] --> src/price/test.rs:488:8 [INFO] [stdout] | [INFO] [stdout] 486 | impl Expectation { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] 487 | #[track_caller] [INFO] [stdout] 488 | fn expect_opt_price(self, field_name: &str, total: &Total>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 526 | fn expect_price(self, field_name: &str, total: &Total>) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `expect_duration` and `expect_opt_duration` are never used [INFO] [stdout] --> src/price/test.rs:560:8 [INFO] [stdout] | [INFO] [stdout] 558 | impl Expectation { [INFO] [stdout] | ------------------------------ methods in this implementation [INFO] [stdout] 559 | #[track_caller] [INFO] [stdout] 560 | fn expect_duration(self, field_name: &str, total: &Total) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | fn expect_opt_duration( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `expect_opt_kwh` is never used [INFO] [stdout] --> src/price/test.rs:607:8 [INFO] [stdout] | [INFO] [stdout] 605 | impl Expectation { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] 606 | #[track_caller] [INFO] [stdout] 607 | fn expect_opt_kwh(self, field_name: &str, total: &Total>) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_price_v211_cdr` is never used [INFO] [stdout] --> src/price/test_real_world.rs:18:4 [INFO] [stdout] | [INFO] [stdout] 18 | fn should_price_v211_cdr(cdr_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_price_v221_cdr` is never used [INFO] [stdout] --> src/price/test_real_world.rs:28:4 [INFO] [stdout] | [INFO] [stdout] 28 | fn should_price_v221_cdr(cdr_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `price_cdr` is never used [INFO] [stdout] --> src/price/test_real_world.rs:35:4 [INFO] [stdout] | [INFO] [stdout] 35 | fn price_cdr(version: Version, cdr_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ParseExpect` is never constructed [INFO] [stdout] --> src/tariff/test.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ParseExpect { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FromJsonExpect` is never constructed [INFO] [stdout] --> src/tariff/test.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct FromJsonExpect { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_parse_report` is never used [INFO] [stdout] --> src/tariff/test.rs:29:15 [INFO] [stdout] | [INFO] [stdout] 29 | pub(crate) fn assert_parse_report( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_from_json_warnings` is never used [INFO] [stdout] --> src/tariff/test.rs:50:15 [INFO] [stdout] | [INFO] [stdout] 50 | pub(crate) fn assert_from_json_warnings( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_parse_v211_tariff` is never used [INFO] [stdout] --> src/tariff/test_real_world.rs:17:4 [INFO] [stdout] | [INFO] [stdout] 17 | fn should_parse_v211_tariff(tariff_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `should_parse_v221_tariff` is never used [INFO] [stdout] --> src/tariff/test_real_world.rs:27:4 [INFO] [stdout] | [INFO] [stdout] 27 | fn should_parse_v221_tariff(tariff_json: &str, path: &Path) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_tariff` is never used [INFO] [stdout] --> src/tariff/test_real_world.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn parse_tariff<'buf, T>(tariff_json: &'buf str, path: &Path) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FindOrInferExpect` is never constructed [INFO] [stdout] --> src/timezone/test.rs:15:19 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) struct FindOrInferExpect { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_find_or_infer_outcome` is never used [INFO] [stdout] --> src/timezone/test.rs:26:15 [INFO] [stdout] | [INFO] [stdout] 26 | pub(crate) fn assert_find_or_infer_outcome( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `path_and_ids` and `ids` are never used [INFO] [stdout] --> src/warning/test.rs:79:8 [INFO] [stdout] | [INFO] [stdout] 71 | / impl Group [INFO] [stdout] 72 | | where [INFO] [stdout] 73 | | W: Warning, [INFO] [stdout] | |_______________- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 79 | fn path_and_ids(&self) -> (&str, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn ids(&self) -> Vec { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Debug` is never constructed [INFO] [stdout] --> src/warning/test.rs:97:19 [INFO] [stdout] | [INFO] [stdout] 97 | pub(crate) struct Debug<'a, W: Warning> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Location` is never constructed [INFO] [stdout] --> src/warning/test.rs:121:8 [INFO] [stdout] | [INFO] [stdout] 121 | struct Location(&'static std::panic::Location<'static>); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Message` is never constructed [INFO] [stdout] --> src/warning/test.rs:130:8 [INFO] [stdout] | [INFO] [stdout] 130 | struct Message<'a, W: Warning>(&'a W); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `path_debug_map` is never used [INFO] [stdout] --> src/warning/test.rs:143:19 [INFO] [stdout] | [INFO] [stdout] 138 | / impl Set [INFO] [stdout] 139 | | where [INFO] [stdout] 140 | | W: Warning, [INFO] [stdout] | |_______________- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 143 | pub(crate) fn path_debug_map(&self) -> BTreeMap<&str, Vec>> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `assert_warnings` is never used [INFO] [stdout] --> src/warning/test.rs:269:15 [INFO] [stdout] | [INFO] [stdout] 269 | pub(crate) fn assert_warnings( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 23.34s [INFO] running `Command { std: "docker" "inspect" "0266a48e42c55cc8514175d12a2d8f5628b1ea4555a7067cc0b7df39eb735d91", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0266a48e42c55cc8514175d12a2d8f5628b1ea4555a7067cc0b7df39eb735d91", kill_on_drop: false }` [INFO] [stdout] 0266a48e42c55cc8514175d12a2d8f5628b1ea4555a7067cc0b7df39eb735d91 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] c9e1344d5465dfbdd9c433265f405325412f7e5dc9c3ce2824634acb9a3ba5cd [INFO] running `Command { std: "docker" "start" "-a" "c9e1344d5465dfbdd9c433265f405325412f7e5dc9c3ce2824634acb9a3ba5cd", kill_on_drop: false }` [INFO] [stderr] warning: function `read_file_content` is never used [INFO] [stdout] [INFO] [stderr] --> src/test.rs:68:8 [INFO] [stdout] running 475 tests [INFO] [stderr] | [INFO] [stdout] test country::test::alpha2_country_code_matches ... ok [INFO] [stderr] 68 | pub fn read_file_content(file_path: &Path) -> io::Result { [INFO] [stdout] test country::test::should_create_country3_without_issue ... ok [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] test currency::test::should_raise_currency_case_issue ... ok [INFO] [stderr] | [INFO] [stdout] test country::test::should_raise_country_content_issue ... ok [INFO] [stderr] = note: requested on the command line with `-W dead-code` [INFO] [stdout] test currency::test::should_raise_currency_xxx_issue ... ok [INFO] [stderr] [INFO] [stdout] test country::test::should_parse_invalid_case ... ok [INFO] [stderr] warning: trait `VersionedType` is never used [INFO] [stdout] test currency::test::should_raise_currency_xts_issue ... ok [INFO] [stderr] --> src/test.rs:132:11 [INFO] [stdout] test country::test::should_raise_country_length_issue ... ok [INFO] [stderr] | [INFO] [stdout] test datetime::test_datetime_from_json::should_parse_timezone_naive_to_utc ... ok [INFO] [stderr] 132 | pub trait VersionedType: fmt::Debug { [INFO] [stdout] test country::test::alpha3_country_code_matches ... ok [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stdout] test currency::test::should_create_currency_without_issue ... ok [INFO] [stderr] [INFO] [stdout] test country::test::should_create_country2_without_issue ... ok [INFO] [stderr] warning: methods `into_option` and `expect_value` are never used [INFO] [stdout] test currency::test::should_raise_currency_content_issue ... ok [INFO] [stderr] --> src/test.rs:198:12 [INFO] [stdout] test datetime::test_datetime_from_json::should_parse_utc_datetime ... ok [INFO] [stderr] | [INFO] [stdout] test datetime::test_datetime_from_json::should_parse_timezone_to_utc ... ok [INFO] [stderr] 193 | / impl ExpectValue [INFO] [stdout] test duration::test::should_parse_hms ... ok [INFO] [stderr] 194 | | where [INFO] [stdout] test cdr::test_every_field_set::should_parse_v221_cdr_as_v211_with_unexpected_fields ... ok [INFO] [stderr] 195 | | T: fmt::Debug, [INFO] [stdout] test duration::test_hms::should_display_hours_mins_secs ... ok [INFO] [stderr] | |__________________- methods in this implementation [INFO] [stdout] test duration::test_hms::should_display_minutes ... ok [INFO] [stderr] ... [INFO] [stdout] test duration::test_hms::should_display_seconds ... ok [INFO] [stderr] 198 | pub fn into_option(self) -> Option { [INFO] [stdout] test duration::test_hour_decimal::as_seconds_dec_should_not_overflow ... ok [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stdout] test duration::test_hour_decimal::ninety_minutes_should_be_fraction_of_hour ... ok [INFO] [stderr] ... [INFO] [stdout] test duration::test_hour_decimal::sixty_minutes_should_be_fraction_of_hour ... ok [INFO] [stderr] 211 | pub fn expect_value(self) -> T { [INFO] [stdout] test duration::test_hour_decimal::thirty_minutes_should_be_fraction_of_hour ... ok [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stdout] test generate::test_clamp_date_time_span::should_not_clamp_if_start_and_end_are_contained ... ok [INFO] [stderr] [INFO] [stdout] test generate::test_clamp_date_time_span::should_clamp_if_end_later ... ok [INFO] [stderr] warning: struct `ExpectFile` is never constructed [INFO] [stdout] test generate::test_clamp_date_time_span::should_clamp_if_span_start_earlier ... ok [INFO] [stderr] --> src/test.rs:243:19 [INFO] [stdout] test generate::test_gen_time_events::should_emit_no_events_before_start_time ... ok [INFO] [stderr] | [INFO] [stdout] test generate::test_clamp_date_time_span::should_not_clamp_if_start_and_end_are_none ... ok [INFO] [stderr] 243 | pub(crate) struct ExpectFile { [INFO] [stdout] test duration::test_hour_decimal::zero_minutes_should_be_zero_hours ... ok [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stdout] test generate::test_gen_time_events::should_emit_one_event_almost_full_day ... ok [INFO] [stderr] [INFO] [stdout] test generate::test_gen_time_events::should_emit_no_events_finishes_at_start_time_precisely ... ok [INFO] [stderr] warning: method `as_deref` is never used [INFO] [stdout] test generate::test_gen_time_events::should_emit_two_events_full_day_precisely ... ok [INFO] [stderr] --> src/test.rs:257:12 [INFO] [stdout] test duration::test_hms::should_display_hours ... ok [INFO] [stderr] | [INFO] [stdout] test generate::test_gen_time_events::should_emit_one_event_hour_before_start_time ... ok [INFO] [stderr] 256 | impl ExpectFile { [INFO] [stdout] test generate::test_gen_time_events::should_emit_one_event_precise_overlap_with_start_time ... ok [INFO] [stderr] | ----------------------- method in this implementation [INFO] [stdout] test generate::test_generate_from_single_elem_tariff::should_warn_duration_below_min ... ok [INFO] [stderr] 257 | pub fn as_deref(&self) -> ExpectFile<&str> { [INFO] [stdout] test generate::test_generate_from_single_elem_tariff::should_warn_end_before_start ... ok [INFO] [stderr] | ^^^^^^^^ [INFO] [stdout] test generate::test_generate::should_warn_no_elements ... ok [INFO] [stderr] [INFO] [stdout] test generate::test_gen_time_events::should_emit_two_events_full_day_with_hour_margin ... ok [INFO] [stderr] warning: associated functions `with_value` and `only_file_name` are never used [INFO] [stdout] test generate::test_generate_from_single_elem_tariff::should_generate_energy_for_ten_minutes ... ok [INFO] [stderr] --> src/test.rs:266:12 [INFO] [stdout] test generate::test_local_to_utc::should_choose_earliest_date_from_dst_end_fold ... ok [INFO] [stderr] | [INFO] [stdout] test generate::test_local_to_utc::should_convert_from_utc_plus_one ... ok [INFO] [stderr] 265 | impl ExpectFile { [INFO] [stdout] test generate::test_local_to_utc::should_return_none_on_dst_begin_gap ... ok [INFO] [stderr] | --------------------- associated functions in this implementation [INFO] [stdout] test generate::test_periods::should_fully_charge_then_park ... ok [INFO] [stderr] 266 | pub fn with_value(value: Option, file_name: &str) -> Self { [INFO] [stdout] test generate::test_periods::should_partially_charge_battery ... ok [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stdout] test generate::test_periods::should_generate_current ... ok [INFO] [stderr] ... [INFO] [stdout] test generate::test_power_to_time::should_handle_negative_total ... ok [INFO] [stderr] 273 | pub fn only_file_name(file_name: &str) -> Self { [INFO] [stdout] test generate::test_power_to_time::should_handle_negative_used ... ok [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `IntoFields` is never used [INFO] [stderr] --> src/test.rs:281:18 [INFO] [stderr] | [INFO] [stderr] 281 | pub(crate) trait IntoFields { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `read_expect_json` is never used [INFO] [stderr] --> src/test.rs:297:8 [INFO] [stderr] | [INFO] [stderr] 297 | pub fn read_expect_json(json_file_path: &Path, feature: &str) -> ExpectFile { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `parse_expect_json` is never used [INFO] [stderr] --> src/test.rs:328:8 [INFO] [stderr] | [INFO] [stderr] 328 | pub fn parse_expect_json<'de, T>(json: ExpectFile<&'de str>) -> ExpectFile [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TARIFF_FILE_NAME` is never used [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:31:7 [INFO] [stderr] | [INFO] [stderr] 31 | const TARIFF_FILE_NAME: &str = "tariff.json"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_price_cdr_generated_from_tariff` is never used [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:97:4 [INFO] [stderr] | [INFO] [stderr] 97 | fn should_price_cdr_generated_from_tariff(test_run_json: &str, test_run_file_path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `TestRun` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:256:8 [INFO] [stderr] | [INFO] [stderr] 256 | struct TestRun { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Expect` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:301:8 [INFO] [stderr] | [INFO] [stderr] 301 | struct Expect { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `Tolerance` is never used [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:332:7 [INFO] [stderr] | [INFO] [stderr] 332 | trait Tolerance { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `TolerancePrice` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:342:8 [INFO] [stderr] | [INFO] [stderr] 342 | struct TolerancePrice { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ToleranceKwh` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:359:8 [INFO] [stderr] | [INFO] [stderr] 359 | struct ToleranceKwh { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ToleranceHms` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:379:8 [INFO] [stderr] | [INFO] [stderr] 379 | struct ToleranceHms { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `partial_to_cdr` is never used [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:422:4 [INFO] [stderr] | [INFO] [stderr] 422 | fn partial_to_cdr(partial_cdr: super::PartialCdr) -> serde_json::Value { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `random_alpha_num_string` is never used [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:539:4 [INFO] [stderr] | [INFO] [stderr] 539 | fn random_alpha_num_string(len: usize) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ChargingPeriod` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:564:8 [INFO] [stderr] | [INFO] [stderr] 564 | struct ChargingPeriod { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Dimension` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:595:8 [INFO] [stderr] | [INFO] [stderr] 595 | struct Dimension { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Price` is never constructed [INFO] [stderr] --> src/generate/test_popular_tariffs.rs:619:8 [INFO] [stderr] | [INFO] [stderr] 619 | struct Price { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_guess_version_v221` is never used [INFO] [stderr] --> src/guess/test_real_world.rs:17:4 [INFO] [stderr] | [INFO] [stderr] 17 | fn should_guess_version_v221(cdr_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_guess_version_v211` is never used [INFO] [stderr] --> src/guess/test_real_world.rs:24:4 [INFO] [stderr] | [INFO] [stderr] 24 | fn should_guess_version_v211(cdr_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `test_guess` is never used [INFO] [stderr] --> src/guess/test_real_world.rs:31:4 [INFO] [stderr] | [INFO] [stderr] 31 | fn test_guess(expected_version: crate::Version, cdr_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `filter_matches` is never used [INFO] [stderr] --> src/json/test.rs:69:8 [INFO] [stderr] | [INFO] [stderr] 62 | impl<'buf> UnexpectedFields<'buf> { [INFO] [stderr] | --------------------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 69 | fn filter_matches(&mut self, glob: &PathGlob) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `expect_no_unexpected_fields` is never used [INFO] [stderr] --> src/json/test.rs:154:15 [INFO] [stderr] | [INFO] [stderr] 154 | pub(crate) fn expect_no_unexpected_fields( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `expect_unexpected_fields` is never used [INFO] [stderr] --> src/json/test.rs:190:15 [INFO] [stderr] | [INFO] [stderr] 190 | pub(crate) fn expect_unexpected_fields( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `TestRun` is never constructed [INFO] [stderr] --> src/lint/tariff/test.rs:13:8 [INFO] [stderr] | [INFO] [stderr] 13 | struct TestRun<'buf> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Expect` is never constructed [INFO] [stderr] --> src/lint/tariff/test.rs:24:8 [INFO] [stderr] | [INFO] [stderr] 24 | struct Expect { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `run_lint` is never used [INFO] [stderr] --> src/lint/tariff/test.rs:33:8 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn run_lint(test_json: &str, test_file_path: &Path, expected_version: Version) { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_lint_tariff` is never used [INFO] [stderr] --> src/lint/tariff/v211/test.rs:10:4 [INFO] [stderr] | [INFO] [stderr] 10 | fn should_lint_tariff(test_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_lint_tariff` is never used [INFO] [stderr] --> src/lint/tariff/v221/test.rs:10:4 [INFO] [stderr] | [INFO] [stderr] 10 | fn should_lint_tariff(test_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `PRECISION` is never used [INFO] [stderr] --> src/price/test.rs:25:7 [INFO] [stderr] | [INFO] [stderr] 25 | const PRECISION: u32 = 2; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Expect` is never constructed [INFO] [stderr] --> src/price/test.rs:95:19 [INFO] [stderr] | [INFO] [stderr] 95 | pub(crate) struct Expect { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ExpectFields` is never constructed [INFO] [stderr] --> src/price/test.rs:115:19 [INFO] [stderr] | [INFO] [stderr] 115 | pub(crate) struct ExpectFields { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `assert_parse_report` is never used [INFO] [stderr] --> src/price/test.rs:163:15 [INFO] [stderr] | [INFO] [stderr] 163 | pub(crate) fn assert_parse_report( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `assert_price_report` is never used [INFO] [stderr] --> src/price/test.rs:194:15 [INFO] [stderr] | [INFO] [stderr] 194 | pub(crate) fn assert_price_report( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `unexpected_fields` is never read [INFO] [stderr] --> src/price/test.rs:411:5 [INFO] [stderr] | [INFO] [stderr] 409 | pub struct ParseExpect { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] 410 | #[serde(default)] [INFO] [stderr] 411 | unexpected_fields: Expectation>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple fields are never read [INFO] [stderr] --> src/price/test.rs:421:5 [INFO] [stderr] | [INFO] [stderr] 416 | pub struct PriceExpect { [INFO] [stderr] | ----------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 421 | warnings: Expectation>>, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 425 | tariff_index: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 429 | tariff_id: Expectation, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 435 | tariff_reports: Expectation>, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 439 | total_cost: Expectation, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 443 | total_fixed_cost: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 447 | total_time: Expectation, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 451 | total_time_cost: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 455 | total_energy: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 459 | total_energy_cost: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 463 | total_parking_time: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 467 | total_parking_cost: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 471 | total_reservation_cost: Expectation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `id` and `warnings` are never read [INFO] [stderr] --> src/price/test.rs:477:5 [INFO] [stderr] | [INFO] [stderr] 475 | struct TariffReportExpect { [INFO] [stderr] | ------------------ fields in this struct [INFO] [stderr] 476 | /// The id of the tariff. [INFO] [stderr] 477 | id: String, [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 483 | warnings: BTreeMap>, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `TariffReportExpect` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `expect_opt_price` and `expect_price` are never used [INFO] [stderr] --> src/price/test.rs:488:8 [INFO] [stderr] | [INFO] [stderr] 486 | impl Expectation { [INFO] [stderr] | ----------------------- methods in this implementation [INFO] [stderr] 487 | #[track_caller] [INFO] [stderr] 488 | fn expect_opt_price(self, field_name: &str, total: &Total>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 526 | fn expect_price(self, field_name: &str, total: &Total>) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `expect_duration` and `expect_opt_duration` are never used [INFO] [stderr] --> src/price/test.rs:560:8 [INFO] [stderr] | [INFO] [stderr] 558 | impl Expectation { [INFO] [stderr] | ------------------------------ methods in this implementation [INFO] [stderr] 559 | #[track_caller] [INFO] [stderr] 560 | fn expect_duration(self, field_name: &str, total: &Total) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 577 | fn expect_opt_duration( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `expect_opt_kwh` is never used [INFO] [stderr] --> src/price/test.rs:607:8 [INFO] [stderr] | [INFO] [stderr] 605 | impl Expectation { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] 606 | #[track_caller] [INFO] [stderr] 607 | fn expect_opt_kwh(self, field_name: &str, total: &Total>) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_price_v211_cdr` is never used [INFO] [stderr] --> src/price/test_real_world.rs:18:4 [INFO] [stderr] | [INFO] [stderr] 18 | fn should_price_v211_cdr(cdr_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_price_v221_cdr` is never used [INFO] [stderr] --> src/price/test_real_world.rs:28:4 [INFO] [stderr] | [INFO] [stderr] 28 | fn should_price_v221_cdr(cdr_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `price_cdr` is never used [INFO] [stderr] --> src/price/test_real_world.rs:35:4 [INFO] [stderr] | [INFO] [stderr] 35 | fn price_cdr(version: Version, cdr_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ParseExpect` is never constructed [INFO] [stderr] --> src/tariff/test.rs:14:12 [INFO] [stderr] | [INFO] [stderr] 14 | pub struct ParseExpect { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `FromJsonExpect` is never constructed [INFO] [stderr] --> src/tariff/test.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | pub struct FromJsonExpect { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `assert_parse_report` is never used [INFO] [stderr] --> src/tariff/test.rs:29:15 [INFO] [stderr] | [INFO] [stderr] 29 | pub(crate) fn assert_parse_report( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `assert_from_json_warnings` is never used [INFO] [stderr] --> src/tariff/test.rs:50:15 [INFO] [stderr] | [INFO] [stderr] 50 | pub(crate) fn assert_from_json_warnings( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_parse_v211_tariff` is never used [INFO] [stderr] --> src/tariff/test_real_world.rs:17:4 [INFO] [stderr] | [INFO] [stderr] 17 | fn should_parse_v211_tariff(tariff_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `should_parse_v221_tariff` is never used [INFO] [stderr] --> src/tariff/test_real_world.rs:27:4 [INFO] [stderr] | [INFO] [stderr] 27 | fn should_parse_v221_tariff(tariff_json: &str, path: &Path) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `parse_tariff` is never used [INFO] [stderr] --> src/tariff/test_real_world.rs:34:4 [INFO] [stderr] | [INFO] [stderr] 34 | fn parse_tariff<'buf, T>(tariff_json: &'buf str, path: &Path) [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `FindOrInferExpect` is never constructed [INFO] [stderr] --> src/timezone/test.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | pub(crate) struct FindOrInferExpect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `assert_find_or_infer_outcome` is never used [INFO] [stderr] --> src/timezone/test.rs:26:15 [INFO] [stderr] | [INFO] [stderr] 26 | pub(crate) fn assert_find_or_infer_outcome( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `path_and_ids` and `ids` are never used [INFO] [stderr] --> src/warning/test.rs:79:8 [INFO] [stderr] | [INFO] [stderr] 71 | / impl Group [INFO] [stderr] 72 | | where [INFO] [stderr] 73 | | W: Warning, [INFO] [stderr] | |_______________- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 79 | fn path_and_ids(&self) -> (&str, Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 91 | fn ids(&self) -> Vec { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Debug` is never constructed [INFO] [stderr] --> src/warning/test.rs:97:19 [INFO] [stderr] | [INFO] [stderr] 97 | pub(crate) struct Debug<'a, W: Warning> { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Location` is never constructed [INFO] [stderr] --> src/warning/test.rs:121:8 [INFO] [stderr] | [INFO] [stderr] 121 | struct Location(&'static std::panic::Location<'static>); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Message` is never constructed [INFO] [stderr] --> src/warning/test.rs:130:8 [INFO] [stderr] | [INFO] [stderr] 130 | struct Message<'a, W: Warning>(&'a W); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `path_debug_map` is never used [INFO] [stderr] --> src/warning/test.rs:143:19 [INFO] [stderr] | [INFO] [stderr] 138 | / impl Set [INFO] [stderr] 139 | | where [INFO] [stderr] 140 | | W: Warning, [INFO] [stderr] | |_______________- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 143 | pub(crate) fn path_debug_map(&self) -> BTreeMap<&str, Vec>> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `assert_warnings` is never used [INFO] [stderr] --> src/warning/test.rs:269:15 [INFO] [stderr] | [INFO] [stderr] 269 | pub(crate) fn assert_warnings( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `ocpi-tariffs` (lib test) generated 62 warnings [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.19s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ocpi_tariffs-2ff3ea5b30eddbf4) [INFO] [stdout] test generate::test_power_to_time::should_handle_zero ... ok [INFO] [stdout] test generate::test_power_to_time::should_max ... ok [INFO] [stdout] test generate::test_power_to_time::should_mid ... ok [INFO] [stdout] test generate::test_power_to_time::should_min ... ok [INFO] [stdout] test generate::test_power_to_time::should_return_none_when_exceeded ... ok [INFO] [stdout] test guess::test_guess_cdr::should_guess_cdr_version_v211 ... ok [INFO] [stdout] test guess::test_guess_cdr::should_guess_cdr_version_v221 ... ok [INFO] [stdout] test generate::test_periods::should_generate_power ... ok [INFO] [stdout] test json::decode::test_unescape::should_fail_to_unescape_json_control_escape ... ok [INFO] [stdout] test json::decode::test_unescape::should_fail_to_unescape_raw_str_with_rust_unicode_literal_control_char ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_str_with_forward_slash_escape ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_str_without_escapes ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_unicode_literal_followed_by_simple_escape ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_empty_str ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_str_with_many_escapes ... ok [INFO] [stdout] test json::decode::test_unescape::should_fail_to_unescape_str_with_control_char ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_unicode_literals ... ok [INFO] [stdout] test json::decode::test_unescape::should_fail_to_unescape_str_with_invalid_escape ... ok [INFO] [stdout] test json::decode::test_unescape::should_unescape_utf_16_surrogate_pair ... ok [INFO] [stdout] test json::parser::test::error_should_be_send_and_sync ... ok [INFO] [stdout] test guess::test_guess_tariff::should_guess_tariff_version_v211 ... ok [INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_nested_array ... ok [INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_array_with_nested_object ... ok [INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_nested_object ... ok [INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_object_with_nested_array ... ok [INFO] [stdout] test guess::test_guess_tariff::should_guess_tariff_version_v221 ... ok [INFO] [stdout] test json::parser::test_error_reporting::should_report_invalid_json_in_some_place ... ok [INFO] [stdout] test json::parser::test_error_reporting::should_report_invalid_json_in_some_place_in_the_middle ... ok [INFO] [stdout] test json::parser::test_error_reporting::should_report_trailing_comma ... ok [INFO] [stdout] test json::parser::test_line_col::should_line_col_empty_str ... ok [INFO] [stdout] test json::parser::test_error_reporting::should_report_missing_comma ... ok [INFO] [stdout] test json::parser::test_error_reporting::should_report_invalid_json ... ok [INFO] [stdout] test json::parser::test_line_col::should_line_col_one_line_one_char_str ... ok [INFO] [stdout] test json::parser::test_line_col::should_line_col_two_line_one_col_str ... ok [INFO] [stdout] test json::parser::test_line_col::should_line_col_one_line_many_chars_str ... ok [INFO] [stdout] test json::parser::test_parser::should_emit_events_for_array_with_nested_fields ... ok [INFO] [stdout] test json::parser::test_parser::should_emit_events_for_object_with_nested_fields ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_comma_and_number_json ... ok [INFO] [stdout] test json::parser::test_parser::should_emit_events_for_array_with_single_field ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_1_true_without_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_comma_after_close_json ... ok [INFO] [stdout] test json::parser::test_parser::should_emit_events_for_array_with_two_fields ... ok [INFO] [stdout] test json::parser::test_parser::should_emit_events_for_object_with_two_fields ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_colon_instead_of_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_emit_events_for_object_with_single_field ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_double_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_double_extra_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_extra_close_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_extra_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_inner_array_no_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_items_separated_by_semicolon_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_missing_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_incomplete_invalid_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_incomplete_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_newlines_unclosed_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_just_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_star_inside_json ... ignored, The `json-tools` parser should fail on star inside json [INFO] [stdout] test json::parser::test_parser::should_err_on_array_number_and_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_number_and_several_commas_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_spaces_vertical_tab_formfeed_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_unclosed_with_object_inside_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_incomplete_null_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_incomplete_false_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_unclosed_trailing_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_unclosed_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_array_unclosed_with_new_lines_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_incomplete_true_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_inf_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_1_000_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_hex_1_digit_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_minus_infinity_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_plus_inf_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_hex_2_digits_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_infinity_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_invalid_negative_real_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_minus_space_1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_with_alpha_char_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_bad_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_number_with_alpha_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_emoji_json ... ignored, The `json-tools` parser should fail on emojis [INFO] [stdout] test json::parser::test_parser::should_err_on_number_minus_sign_with_trailing_garbage_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_comma_instead_of_colon_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_double_colon_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_key_with_single_quotes_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_missing_semicolon_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_missing_colon_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_missing_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_no_min_colon_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_missing_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_non_string_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_garbage_at_end_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_non_string_key_but_huge_number_instead_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_single_quote_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_several_trailing_commas_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_repeated_null_null_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_trailing_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_unterminated_min_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_with_trailing_garbage_json ... ignored, The `json-tools` parser should fail on trailing garbage [INFO] [stdout] test json::parser::test_parser::should_err_on_object_with_single_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_single_space_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_accented_char_no_quotes_json ... ignored, The `json-tools` parser should fail on accented char [INFO] [stdout] test json::parser::test_parser::should_err_on_string_1_surrogate_then_escape_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_1_surrogate_then_escape_u1x_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_1_surrogate_then_escape_u1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_escape_x_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_backslash_00_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_escaped_ctrl_char_tab_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_escaped_emoji_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_incomplete_escape_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_escaped_backslash_bad_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_incomplete_escaped_character_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_two_commas_in_a_row_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_invalid_unicode_escape_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_unquoted_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_object_bracket_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_leading_uescaped_thinspace_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_no_quotes_with_bad_escape_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_incomplete_surrogate_escape_invalid_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_single_doublequote_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_incomplete_surrogate_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_single_string_no_double_quotes_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_single_quote_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_invalid_backslash_esc_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_start_escape_unclosed_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_with_trailing_garbage_json ... ignored, The `json-tools` parser should fail on trailing garbage [INFO] [stdout] test json::parser::test_parser::should_err_on_string_unicode_capitalu_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_angle_bracket_null_json ... ignored, The `json-tools` parser should fail on a null in an angle bracket [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_array_trailing_garbage_json ... ignored, The `json-tools` parser should fail on trailing garbage [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_array_with_extra_array_close_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_array_with_unclosed_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_capitalized_true_json ... ignored, The `json-tools` parser should fail on capitalized true [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_ascii_min_unicode_min_identifier_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_close_unopened_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_dot_in_angle_bracket_json ... ignored, The `json-tools` parser should fail on a dot in an angle bracket [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_comma_instead_of_closing_brace_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_end_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_lone_min_open_min_bracket_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_no_data_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_null_min_byte_min_outside_min_string_json ... ignored, The `json-tools` parser should fail on null min byte [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_double_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_number_with_trailing_garbage_json ... ignored, The `json-tools` parser should fail on trailing garbage [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_object_followed_by_closing_object_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_object_unclosed_no_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_string_1_surrogate_then_escape_u_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_object_with_comment_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_object_with_trailing_garbage_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_array_apostrophe_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_array_open_object_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_array_open_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_array_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_object_close_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_object_comma_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_array_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_object_open_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_object_open_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_object_string_with_apostrophes_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_object_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_open_open_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_single_star_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_trailing_hash_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_u_plus_2060_word_joined_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_uescaped_lf_before_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_unclosed_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_unclosed_array_unfinished_false_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_whitespace_formfeed_json ... ignored, The `json-tools` parser should fail on whitespace formfeed [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_unclosed_array_unfinished_true_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_unclosed_array_partial_null_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_unclosed_object_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_whitespace_u_plus_2060_word_joiner_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_empty_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_arrays_with_spaces_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_utf8_bom_no_data_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_heterogeneous_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_ending_with_newline_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_empty_min_string_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_false_json ... ok [INFO] [stdout] test json::parser::test_parser::should_err_on_structure_unicode_min_identifier_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_just_minus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_null_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_with_leading_space_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_with_trailing_space_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_with_1_and_newline_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_array_with_several_null_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0_1_2_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0_3eplus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0_dot_e1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0_capital_e_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0_capital_eplus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_multidigit_number_then_00_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0_3e_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0e_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0e_plus_1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0e1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_0eplus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_1_0e_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_1_0emin_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_1_0eplus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_1ee2_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_9_dot_e_plus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_dot_min_1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_invalid_plus_min_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_after_space_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_double_close_to_zero_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_min_2_dot_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_int_with_exp_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_min_nan_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_minus_zero_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_nan_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_neg_with_garbage_at_end_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_neg_int_starting_with_zero_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_neg_real_without_int_part_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_negative_zero_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_plus_1_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_negative_one_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_plus_plus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_negative_int_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_capital_e_neg_exp_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_capital_e_pos_exp_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_exponent_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_fraction_exponent_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_capital_e_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_garbage_after_e_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_neg_exp_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_expression_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_min_01_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_min_1_0_dot_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_pos_exponent_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_real_without_fractional_part_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_simple_real_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_simple_int_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_starting_with_dot_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_u_plus_ff11_fullwidth_digit_one_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_basic_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_number_with_leading_zero_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_duplicated_key_and_value_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_duplicated_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_empty_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_escaped_null_in_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_simple_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_extreme_numbers_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_string_unicode_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_long_strings_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_trailing_comment_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_trailing_comment_slash_open_incomplete_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_trailing_comment_slash_open_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_with_newlines_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_trailing_comment_open_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_object_empty_key_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_1_2_3_bytes_utf_min_8_sequences_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_accepted_surrogate_pair_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_backslash_doublequotes_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_accepted_surrogate_pairs_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_double_escape_n_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_allowed_escapes_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_escaped_control_character_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_backslash_and_u_escaped_zero_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_double_escape_a_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_comments_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_last_surrogates_1_and_2_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_in_array_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_escaped_noncharacter_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_in_array_with_leading_space_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_noncharacterinutf_min_8_u_plus_ffff_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_noncharacterinutf_min_8_u_plus_10ffff_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_pi_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_one_min_byte_min_utf_min_8_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_null_escape_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_nbsp_uescaped_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_reservedcharacterinutf_min_8_u_plus_1bfff_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_simple_ascii_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_surrogates_u_plus_1d11e_musical_symbol_g_clef_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_three_min_byte_min_utf_min_8_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_space_json ... ok [INFO] [stdout] test duration::test::should_panic_malformed_whitespace - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_u_plus_2029_par_sep_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_u_plus_2028_line_sep_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_two_min_byte_min_utf_min_8_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_uescape_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unescaped_char_delete_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_uescaped_newline_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unescaped_ctrl_char_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_1fffe_nonchar_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_escaped_double_quote_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_2_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unescaped_tab_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unescaped_newline_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_10fffe_nonchar_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_200b_zero_width_space_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_fdd0_nonchar_json ... ok [INFO] [stdout] test duration::test::should_panic_minutes_out_of_range - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_2064_invisible_plus_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_utf8_json ... ok [INFO] [stdout] test duration::test::should_panic_on_empty_separator - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_fffe_nonchar_json ... ok [INFO] [stdout] test duration::test::should_panic_on_extraneous_whitespace - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_unicodeescapedbackslash_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_string_with_del_character_json ... ok [INFO] [stdout] test duration::test::should_panic_on_missing_component - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_100000_opening_arrays ... ignored, Pending fix see https://git.service.d11n.nl/tandemdrive/ocpi-tariffs/issues/14 [INFO] [stdout] test duration::test::should_panic_on_single_separator - should panic ... ok [INFO] [stdout] test duration::test::should_panic_seconds_out_of_range - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_false_json ... ok [INFO] [stdout] test duration::test::should_panic_on_empty - should panic ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_int_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_negative_real_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_null_json ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_string_json ... ok [INFO] [stdout] test json::parser::test_raw_str::should_fail_to_create_raw_str_from_non_string_token ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_true_in_array_json ... ok [INFO] [stdout] test json::parser::test_type_sizes::should_match_sizes ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_whitespace_array_json ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_double_field_schema ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_empty_schema ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_array ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_single_field_schema ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_nested_with_leading_field ... ok [INFO] [stdout] test json::test_parse_with_schema::should_parse_nested_object_out_of_schema ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_string_empty_json ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_nested_with_trailing_field ... ok [INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_in_array_of_nested_objects ... ok [INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_in_array_of_objects ... ok [INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_in_flat_object ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_nested_one_level ... ok [INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_in_nested_object ... ok [INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_for_root_element ... ok [INFO] [stdout] test json::test_path::path_should_display ... ok [INFO] [stdout] test json::schema::test_json_schema_macro::should_parse_object_nested_two_levels ... ok [INFO] [stdout] test json::test_path_matches_glob::glob_should_match_path ... ok [INFO] [stdout] test json::walk::test_element_iter::iter_index_should_match_element_id_order ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_true_json ... ok [INFO] [stdout] test json::test_path_node::should_be_send_and_sync ... ok [INFO] [stdout] test json::test_path_node::should_display_path ... ok [INFO] [stdout] test json::parser::test_parser::should_parse_structure_trailing_newline_json ... ok [INFO] [stdout] test json::test_path_node_matches_str::should_match_path ... ok [INFO] [stdout] test json::walk::test_element_iter::should_return_compound_root_element ... ok [INFO] [stdout] test json::walk::test_element_iter::should_elem_map_from_element_iter ... ok [INFO] [stdout] test json::walk::test_element_iter::should_return_scalar_root_element ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_empty_object ... ok [INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_in_array_with_nested_object ... ok [INFO] [stdout] test json::parser::test_raw_str::should_fail_to_create_raw_str_from_string_without_quotes ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_escaped_str ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_object_with_bools ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_object_with_nulls ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_root_null ... ok [INFO] [stdout] test json::walk::test_element_iter::should_traverse_nested_objects ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_root_string ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_root_bool ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_root_object ... ok [INFO] [stdout] test json::test_path::path_should_cmp_with_str ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_float_array ... ok [INFO] [stdout] test json::test_source_json::should_resolve_to_source_json ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_empty_array ... ok [INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_string_array ... ok [INFO] [stdout] test money::test_price::should_create_from_json_and_warn_about_excl_vat_greater_than_incl_vat ... ok [INFO] [stdout] test money::test_price::should_create_from_json_with_excl_and_incl_vat_fields ... ok [INFO] [stdout] test money::test_price::should_create_from_json_with_only_excl_vat_field ... ok [INFO] [stdout] test money::test_price::should_fail_to_create_from_json_as_excl_vat_is_required ... ok [INFO] [stdout] test number::test_approx_eq::almost_should_be_considered_equal ... ok [INFO] [stdout] test money::test_price::should_fail_to_create_from_non_object_json ... ok [INFO] [stdout] test number::test_approx_eq::exact_should_be_considered_equal ... ok [INFO] [stdout] test number::test_parse_string::should_fail_to_parse_numeric_str_letters ... ok [INFO] [stdout] test number::test_parse_string::should_fail_to_parse_numeric_str_with_escapes ... ok [INFO] [stdout] test number::test_parse_string::should_parse_string ... ok [INFO] [stdout] test number::test_round_to_ocpi::should_round_to_nearest_even_above ... ok [INFO] [stdout] test number::test_approx_eq::almost_with_precise_tolerence_should_be_considered_equal ... ok [INFO] [stdout] test number::test_round_to_ocpi::should_round_to_nearest_even_below ... ok [INFO] [stdout] test price::test::warning_kind_should_be_send_and_sync ... ok [INFO] [stdout] test price::test_validate_cdr::should_fail_validation_start_end_range_doesnt_overlap_with_periods ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_allow_all ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_element_paths ... ok [INFO] [stdout] test price::test_normalize_periods::should_extract_periods ... ok [INFO] [stdout] test price::test_validate_cdr::should_pass_parse_validation ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_ids_and_paths ... ok [INFO] [stdout] test string::test::should_fail_on_max_len ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_warning_ids_only ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_zero_warning_ids_only ... ok [INFO] [stdout] test string::test::should_parse_exact_len ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_zero_ids_and_zero_paths ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_zero_ids_and_paths ... ok [INFO] [stdout] test string::test::should_parse_max_len ... ok [INFO] [stdout] test tariff::v211::test_null_fields::should_parse_restrictions_all_null ... ok [INFO] [stdout] test tariff::v211::test_null_fields::should_parse_restrictions_day_of_week_empty ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_ids_and_zero_paths ... ok [INFO] [stdout] test tariff::v211::test_null_fields::should_parse_restrictions_empty_object ... ok [INFO] [stdout] test string::test::should_fail_on_exact_len ... ok [INFO] [stdout] test tariff::v221::test_every_field_set::should_parse_v221_tariff_json_as_v211_with_unexpected_fields ... ok [INFO] [stdout] test tariff::v221::test_null_fields::should_parse_restrictions_all_null ... ok [INFO] [stdout] test tariff::v211::test_null_fields::should_treat_nulls_as_optional_fields ... ok [INFO] [stdout] test tariff::v221::test_null_fields::should_parse_restrictions_day_of_week_empty ... ok [INFO] [stdout] test tariff::v221::test_null_fields::should_parse_restrictions_empty_object ... ok [INFO] [stdout] test tariff::v221::test_null_fields::should_treat_nulls_as_optional_fields ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_produce_expected_warnings ... ok [INFO] [stdout] test test_reasonable_str::should_allow_reasonable_tariff_str ... ok [INFO] [stdout] test test_rust_decimal_arbitrary_precision::should_serialize_0_num_without_fraction_digits ... ok [INFO] [stdout] test test_rust_decimal_arbitrary_precision::should_serialize_12_num_with_4_fraction_digits ... ok [INFO] [stdout] test test_rust_decimal_arbitrary_precision::should_serialize_0_decimal_without_fraction_digits ... ok [INFO] [stdout] test test_rust_decimal_arbitrary_precision::should_serialize_8_num_with_4_fraction_digits ... ok [INFO] [stdout] test test_rust_decimal_arbitrary_precision::should_serialize_decimal_with_12_fraction_digits ... ok [INFO] [stdout] test test_rust_decimal_arbitrary_precision::should_serialize_decimal_with_8_fraction_digits ... ok [INFO] [stdout] test price::test_warning_ids_path_map::should_limit_zero_element_paths ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_and_warn_about_escape_codes ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_and_warn_about_escape_codes_and_invalid_type ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_but_report_alpha2_location_country_code ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_fail_due_to_json_not_being_object ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_without_cdr_country ... ok [INFO] [stdout] test test_reasonable_str::should_allow_reasonable_cdr_str ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_infer_timezone_from_location_country ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_not_find_timezone_due_to_country_having_many_timezones ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_and_warn_about_invalid_type ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_not_find_timezone_due_to_no_location ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_infer_timezone_and_warn_about_invalid_type ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_but_warn_about_use_of_location_for_v221_cdr ... ok [INFO] [stdout] test warning::test_group_by_elem::should_into_group_by_elem ... ok [INFO] [stdout] test weekday::test_day_of_week::should_create_from_json ... ok [INFO] [stdout] test warning::test_group_by_elem::should_group_by_elem ... ok [INFO] [stdout] test timezone::test_find_or_infer::should_not_find_timezone_due_to_no_country ... ok [INFO] [stdout] test weekday::test_day_of_week::should_fail_on_type_from_json ... ok [INFO] [stdout] test weekday::test_day_of_week::should_fail_on_value_from_json ... ok [INFO] [stdout] test weekday::test_day_of_week::should_warn_about_case_from_json ... ok [INFO] [stdout] test test_reasonable_str::should_forbid_unreasonable_tariff_str ... ok [INFO] [stdout] test test_reasonable_str::should_forbid_unreasonable_cdr_str ... ok [INFO] [stdout] test price::test_periods::should_price_periods_from_time_and_parking_time_cdr_and_tariff ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 462 passed; 0 failed; 13 ignored; 0 measured; 0 filtered out; finished in 0.19s [INFO] [stdout] [INFO] [stderr] Doc-tests ocpi_tariffs [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test src/warning.rs - warning (line 9) ... ignored [INFO] [stdout] test src/tariff.rs - tariff::lint (line 457) ... ok [INFO] [stdout] test src/lib.rs - (line 17) ... ok [INFO] [stdout] test src/tariff.rs - tariff::parse_and_report (line 282) ... ok [INFO] [stdout] test src/cdr.rs - cdr::parse (line 101) ... ok [INFO] [stdout] test src/cdr.rs - cdr::parse_and_report (line 134) ... ok [INFO] [stdout] test src/tariff.rs - tariff::parse_with_version (line 179) ... ok [INFO] [stdout] test src/cdr.rs - cdr::price (line 204) ... ok [INFO] [stdout] test src/lib.rs - (line 60) ... ok [INFO] [stdout] test src/tariff.rs - tariff::parse (line 248) ... ok [INFO] [stdout] test src/lib.rs - (line 105) ... ok [INFO] [stdout] test src/cdr.rs - cdr::parse_with_version (line 19) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.56s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "c9e1344d5465dfbdd9c433265f405325412f7e5dc9c3ce2824634acb9a3ba5cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c9e1344d5465dfbdd9c433265f405325412f7e5dc9c3ce2824634acb9a3ba5cd", kill_on_drop: false }` [INFO] [stdout] c9e1344d5465dfbdd9c433265f405325412f7e5dc9c3ce2824634acb9a3ba5cd