[INFO] fetching crate ocpi-tariffs 0.46.1...
[INFO] testing ocpi-tariffs-0.46.1 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate ocpi-tariffs 0.46.1 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate ocpi-tariffs 0.46.1
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate ocpi-tariffs 0.46.1
[INFO] tweaked toml for crates.io crate ocpi-tariffs 0.46.1 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ocpi-tariffs 0.46.1 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ocpi-tariffs 0.46.1 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 94a81abac975de376d8ee63e6b8ae031a360c93b00bbbaf6f8a4de822a005fae
[INFO] running `Command { std: "docker" "start" "-a" "94a81abac975de376d8ee63e6b8ae031a360c93b00bbbaf6f8a4de822a005fae", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "94a81abac975de376d8ee63e6b8ae031a360c93b00bbbaf6f8a4de822a005fae", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "94a81abac975de376d8ee63e6b8ae031a360c93b00bbbaf6f8a4de822a005fae", kill_on_drop: false }`
[INFO] [stdout] 94a81abac975de376d8ee63e6b8ae031a360c93b00bbbaf6f8a4de822a005fae
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 391987d77dbfa09ea88e4d956fa656b2cf45fe39f056feb1c6cde45a225f9e77
[INFO] running `Command { std: "docker" "start" "-a" "391987d77dbfa09ea88e4d956fa656b2cf45fe39f056feb1c6cde45a225f9e77", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling rust_decimal v1.39.0
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling ocpi-tariffs v0.46.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling json-tools v1.1.3
[INFO] [stderr]    Compiling phf_shared v0.12.1
[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 23.84s
[INFO] running `Command { std: "docker" "inspect" "391987d77dbfa09ea88e4d956fa656b2cf45fe39f056feb1c6cde45a225f9e77", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "391987d77dbfa09ea88e4d956fa656b2cf45fe39f056feb1c6cde45a225f9e77", kill_on_drop: false }`
[INFO] [stdout] 391987d77dbfa09ea88e4d956fa656b2cf45fe39f056feb1c6cde45a225f9e77
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d2f5cdd96b1e1e271b5ec9615458f2318fba7399c367aa54746cd9e26f44b040
[INFO] running `Command { std: "docker" "start" "-a" "d2f5cdd96b1e1e271b5ec9615458f2318fba7399c367aa54746cd9e26f44b040", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rand_core v0.10.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[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 sharded-slab v0.1.7
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling test-each-codegen v0.3.1
[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.1 (/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<String> {
[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<T> ExpectValue<T>
[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<T> {
[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<T> {
[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<String> {
[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<T> ExpectFile<T> {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 266 |     pub fn with_value(value: Option<T>, 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<E> {
[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<String> {
[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<T>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TARIFF_FILE_NAME` is never used
[INFO] [stdout]   --> src/generate/test_popular_tariffs.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | 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:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | 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:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | struct TestRun {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Expect` is never constructed
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | struct Expect {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Tolerance` is never used
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:333:7
[INFO] [stdout]     |
[INFO] [stdout] 333 | trait Tolerance<V, T> {
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TolerancePrice` is never constructed
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:343:8
[INFO] [stdout]     |
[INFO] [stdout] 343 | struct TolerancePrice {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToleranceKwh` is never constructed
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:360:8
[INFO] [stdout]     |
[INFO] [stdout] 360 | struct ToleranceKwh {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ToleranceHms` is never constructed
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:380:8
[INFO] [stdout]     |
[INFO] [stdout] 380 | 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:423:4
[INFO] [stdout]     |
[INFO] [stdout] 423 | 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:541:4
[INFO] [stdout]     |
[INFO] [stdout] 541 | 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:566:8
[INFO] [stdout]     |
[INFO] [stdout] 566 | struct ChargingPeriod {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dimension` is never constructed
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:597:8
[INFO] [stdout]     |
[INFO] [stdout] 597 | struct Dimension {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Price` is never constructed
[INFO] [stdout]    --> src/generate/test_popular_tariffs.rs:621:8
[INFO] [stdout]     |
[INFO] [stdout] 621 | 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<Vec<String>>,
[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<BTreeMap<String, Vec<String>>>,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     tariff_index: Expectation<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     tariff_id: Expectation<String>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     tariff_reports: Expectation<Vec<TariffReportExpect>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     total_cost: Expectation<Price>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     total_fixed_cost: Expectation<Price>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     total_time: Expectation<HoursDecimal>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     total_time_cost: Expectation<Price>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     total_energy: Expectation<Kwh>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     total_energy_cost: Expectation<Price>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     total_parking_time: Expectation<HoursDecimal>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     total_parking_cost: Expectation<Price>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     total_reservation_cost: Expectation<Price>,
[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<String, Vec<String>>,
[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<Price> {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] 487 |     #[track_caller]
[INFO] [stdout] 488 |     fn expect_opt_price(self, field_name: &str, total: &Total<Option<Price>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 526 |     fn expect_price(self, field_name: &str, total: &Total<Price, Option<Price>>) {
[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<HoursDecimal> {
[INFO] [stdout]     | ------------------------------ methods in this implementation
[INFO] [stdout] 559 |     #[track_caller]
[INFO] [stdout] 560 |     fn expect_duration(self, field_name: &str, total: &Total<TimeDelta>) {
[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<Kwh> {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 606 |     #[track_caller]
[INFO] [stdout] 607 |     fn expect_opt_kwh(self, field_name: &str, total: &Total<Kwh, Option<Kwh>>) {
[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<W> Group<W>
[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<Id>) {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |       fn ids(&self) -> Vec<Id> {
[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<W> Set<W>
[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<Debug<'_, W>>> {
[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<W>(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 26.98s
[INFO] running `Command { std: "docker" "inspect" "d2f5cdd96b1e1e271b5ec9615458f2318fba7399c367aa54746cd9e26f44b040", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d2f5cdd96b1e1e271b5ec9615458f2318fba7399c367aa54746cd9e26f44b040", kill_on_drop: false }`
[INFO] [stdout] d2f5cdd96b1e1e271b5ec9615458f2318fba7399c367aa54746cd9e26f44b040
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 2b5c242c181024c0f87b62a8d9da7ccc7a62e45f8e066676cc421bb8be88ba1b
[INFO] running `Command { std: "docker" "start" "-a" "2b5c242c181024c0f87b62a8d9da7ccc7a62e45f8e066676cc421bb8be88ba1b", kill_on_drop: false }`
[INFO] [stderr] warning: function `read_file_content` is never used
[INFO] [stderr]   --> src/test.rs:68:8
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub fn read_file_content(file_path: &Path) -> io::Result<String> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: requested on the command line with `-W dead-code`
[INFO] [stderr] 
[INFO] [stderr] warning: trait `VersionedType` is never used
[INFO] [stderr]    --> src/test.rs:132:11
[INFO] [stderr]     |
[INFO] [stderr] 132 | pub trait VersionedType: fmt::Debug {
[INFO] [stderr]     |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `into_option` and `expect_value` are never used
[INFO] [stderr]    --> src/test.rs:198:12
[INFO] [stderr]     |
[INFO] [stderr] 193 | / impl<T> ExpectValue<T>
[INFO] [stderr] 194 | | where
[INFO] [stderr] 195 | |     T: fmt::Debug,
[INFO] [stderr]     | |__________________- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 198 |       pub fn into_option(self) -> Option<T> {
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 211 |       pub fn expect_value(self) -> T {
[INFO] [stderr]     |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ExpectFile` is never constructed
[INFO] [stderr]    --> src/test.rs:243:19
[INFO] [stderr]     |
[INFO] [stderr] 243 | pub(crate) struct ExpectFile<T> {
[INFO] [stderr]     |                   ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `as_deref` is never used
[INFO] [stderr]    --> src/test.rs:257:12
[INFO] [stderr]     |
[INFO] [stderr] 256 | impl ExpectFile<String> {
[INFO] [stderr]     | ----------------------- method in this implementation
[INFO] [stderr] 257 |     pub fn as_deref(&self) -> ExpectFile<&str> {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `with_value` and `only_file_name` are never used
[INFO] [stderr]    --> src/test.rs:266:12
[INFO] [stderr]     |
[INFO] [stderr] 265 | impl<T> ExpectFile<T> {
[INFO] [stderr]     | --------------------- associated functions in this implementation
[INFO] [stderr] 266 |     pub fn with_value(value: Option<T>, file_name: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 273 |     pub fn only_file_name(file_name: &str) -> Self {
[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<E> {
[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<String> {
[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<T>
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TARIFF_FILE_NAME` is never used
[INFO] [stderr]   --> src/generate/test_popular_tariffs.rs:32:7
[INFO] [stderr]    |
[INFO] [stderr] 32 | 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:98:4
[INFO] [stderr]    |
[INFO] [stderr] 98 | 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:257:8
[INFO] [stderr]     |
[INFO] [stderr] 257 | struct TestRun {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Expect` is never constructed
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:302:8
[INFO] [stderr]     |
[INFO] [stderr] 302 | struct Expect {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `Tolerance` is never used
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:333:7
[INFO] [stderr]     |
[INFO] [stderr] 333 | trait Tolerance<V, T> {
[INFO] [stderr]     |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TolerancePrice` is never constructed
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:343:8
[INFO] [stderr]     |
[INFO] [stderr] 343 | struct TolerancePrice {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ToleranceKwh` is never constructed
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:360:8
[INFO] [stderr]     |
[INFO] [stderr] 360 | struct ToleranceKwh {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ToleranceHms` is never constructed
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:380:8
[INFO] [stderr]     |
[INFO] [stderr] 380 | struct ToleranceHms {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `partial_to_cdr` is never used
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:423:4
[INFO] [stderr]     |
[INFO] [stderr] 423 | 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:541:4
[INFO] [stderr]     |
[INFO] [stderr] 541 | 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:566:8
[INFO] [stderr]     |
[INFO] [stderr] 566 | struct ChargingPeriod {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Dimension` is never constructed
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:597:8
[INFO] [stderr]     |
[INFO] [stderr] 597 | struct Dimension {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Price` is never constructed
[INFO] [stderr]    --> src/generate/test_popular_tariffs.rs:621:8
[INFO] [stderr]     |
[INFO] [stderr] 621 | 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<Vec<String>>,
[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<BTreeMap<String, Vec<String>>>,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 425 |     tariff_index: Expectation<usize>,
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 429 |     tariff_id: Expectation<String>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 435 |     tariff_reports: Expectation<Vec<TariffReportExpect>>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 439 |     total_cost: Expectation<Price>,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 443 |     total_fixed_cost: Expectation<Price>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 447 |     total_time: Expectation<HoursDecimal>,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 451 |     total_time_cost: Expectation<Price>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 455 |     total_energy: Expectation<Kwh>,
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 459 |     total_energy_cost: Expectation<Price>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 463 |     total_parking_time: Expectation<HoursDecimal>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 467 |     total_parking_cost: Expectation<Price>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 471 |     total_reservation_cost: Expectation<Price>,
[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<String, Vec<String>>,
[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<Price> {
[INFO] [stderr]     | ----------------------- methods in this implementation
[INFO] [stderr] 487 |     #[track_caller]
[INFO] [stderr] 488 |     fn expect_opt_price(self, field_name: &str, total: &Total<Option<Price>>) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 526 |     fn expect_price(self, field_name: &str, total: &Total<Price, Option<Price>>) {
[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<HoursDecimal> {
[INFO] [stderr]     | ------------------------------ methods in this implementation
[INFO] [stderr] 559 |     #[track_caller]
[INFO] [stderr] 560 |     fn expect_duration(self, field_name: &str, total: &Total<TimeDelta>) {
[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<Kwh> {
[INFO] [stderr]     | --------------------- method in this implementation
[INFO] [stderr] 606 |     #[track_caller]
[INFO] [stderr] 607 |     fn expect_opt_kwh(self, field_name: &str, total: &Total<Kwh, Option<Kwh>>) {
[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<W> Group<W>
[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<Id>) {
[INFO] [stderr]    |          ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 91 |       fn ids(&self) -> Vec<Id> {
[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<W> Set<W>
[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<Debug<'_, W>>> {
[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<W>(
[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.18s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ocpi_tariffs-e35217267f4eda74)
[INFO] [stdout] 
[INFO] [stdout] running 479 tests
[INFO] [stdout] test currency::test::should_create_currency_without_issue ... ok
[INFO] [stdout] test country::test::should_parse_invalid_case ... ok
[INFO] [stdout] test currency::test::should_raise_currency_case_issue ... ok
[INFO] [stdout] test country::test::alpha2_country_code_matches ... ok
[INFO] [stdout] test country::test::should_raise_country_content_issue ... ok
[INFO] [stdout] test country::test::should_raise_country_length_issue ... ok
[INFO] [stdout] test country::test::alpha3_country_code_matches ... ok
[INFO] [stdout] test currency::test::should_raise_currency_content_issue ... ok
[INFO] [stdout] test currency::test::should_raise_currency_xts_issue ... ok
[INFO] [stdout] test datetime::test_datetime_from_json::should_parse_timezone_naive_to_utc ... ok
[INFO] [stdout] test country::test::should_create_country2_without_issue ... ok
[INFO] [stdout] test currency::test::should_raise_currency_xxx_issue ... ok
[INFO] [stdout] test country::test::should_create_country3_without_issue ... ok
[INFO] [stdout] test cdr::test_every_field_set::should_parse_v221_cdr_as_v211_with_unexpected_fields ... ok
[INFO] [stdout] test datetime::test_datetime_from_json::should_parse_utc_datetime ... ok
[INFO] [stdout] test datetime::test_datetime_from_json::should_parse_timezone_to_utc ... ok
[INFO] [stdout] test duration::test_hms::should_display_minutes ... ok
[INFO] [stdout] test duration::test_hour_decimal::as_seconds_dec_should_not_overflow ... ok
[INFO] [stdout] test duration::test_hms::should_display_seconds ... ok
[INFO] [stdout] test duration::test_hms::should_display_hours_mins_secs ... ok
[INFO] [stdout] test duration::test_hms::should_display_hours ... ok
[INFO] [stdout] test duration::test_hour_decimal::thirty_minutes_should_be_fraction_of_hour ... ok
[INFO] [stdout] test duration::test_hour_decimal::ninety_minutes_should_be_fraction_of_hour ... ok
[INFO] [stdout] test duration::test_hour_decimal::zero_minutes_should_be_zero_hours ... ok
[INFO] [stdout] test generate::test_clamp_date_time_span::should_not_clamp_if_start_and_end_are_none ... ok
[INFO] [stdout] test generate::test_clamp_date_time_span::should_clamp_if_end_later ... ok
[INFO] [stdout] test duration::test_to_hours_decimal::to_hours_dec_should_be_correct ... ok
[INFO] [stdout] test generate::test_clamp_date_time_span::should_clamp_if_span_start_earlier ... ok
[INFO] [stdout] test generate::test_clamp_date_time_span::should_not_clamp_if_start_and_end_are_contained ... ok
[INFO] [stdout] test duration::test_to_duration::to_duration_should_be_correct ... ok
[INFO] [stdout] test duration::test_hour_decimal::sixty_minutes_should_be_fraction_of_hour ... ok
[INFO] [stdout] test generate::test_gen_time_events::should_emit_no_events_finishes_at_start_time_precisely ... ok
[INFO] [stdout] test generate::test_gen_time_events::should_emit_one_event_almost_full_day ... ok
[INFO] [stdout] test generate::test_gen_time_events::should_emit_one_event_hour_before_start_time ... ok
[INFO] [stdout] test generate::test_gen_time_events::should_emit_two_events_full_day_precisely ... ok
[INFO] [stdout] test generate::test_gen_time_events::should_emit_two_events_full_day_with_hour_margin ... ok
[INFO] [stdout] test generate::test_gen_time_events::should_emit_no_events_before_start_time ... ok
[INFO] [stdout] test generate::test_generate_from_single_elem_tariff::should_warn_duration_below_min ... ok
[INFO] [stdout] test generate::test_generate::should_warn_no_elements ... ok
[INFO] [stdout] test generate::test_local_to_utc::should_return_none_on_dst_begin_gap ... ok
[INFO] [stdout] test generate::test_generate_from_single_elem_tariff::should_warn_end_before_start ... ok
[INFO] [stdout] test generate::test_periods::should_fully_charge_then_park ... ok
[INFO] [stdout] test generate::test_generate_from_single_elem_tariff::should_generate_energy_for_ten_minutes ... ok
[INFO] [stdout] test generate::test_local_to_utc::should_choose_earliest_date_from_dst_end_fold ... ok
[INFO] [stdout] test generate::test_local_to_utc::should_convert_from_utc_plus_one ... ok
[INFO] [stdout] test generate::test_periods::should_generate_current ... ok
[INFO] [stdout] test generate::test_periods::should_generate_power ... ok
[INFO] [stdout] test generate::test_periods::should_partially_charge_battery_and_not_exceed_max_power ... ok
[INFO] [stdout] test generate::test_periods::should_partially_charge_battery ... ok
[INFO] [stdout] test generate::test_power_to_time::expect_ceiling_nanoseconds ... ok
[INFO] [stdout] test generate::test_power_to_time::should_handle_negative_total ... ok
[INFO] [stdout] test generate::test_power_to_time::should_max ... ok
[INFO] [stdout] test generate::test_power_to_time::should_handle_zero ... ok
[INFO] [stdout] test generate::test_power_to_time::should_handle_negative_used ... 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_gen_time_events::should_emit_one_event_precise_overlap_with_start_time ... 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_fail_to_unescape_str_with_control_char ... ok
[INFO] [stdout] test guess::test_guess_tariff::should_guess_tariff_version_v221 ... ok
[INFO] [stdout] test guess::test_guess_cdr::should_guess_cdr_version_v221 ... ok
[INFO] [stdout] test json::decode::test_unescape::should_fail_to_unescape_str_with_invalid_escape ... ok
[INFO] [stdout] test generate::test_power_to_time::should_return_none_when_exceeded ... ok
[INFO] [stdout] test json::decode::test_unescape::should_unescape_empty_str ... 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_with_many_escapes ... ok
[INFO] [stdout] test json::decode::test_unescape::should_unescape_unicode_literals ... ok
[INFO] [stdout] test json::decode::test_unescape::should_unescape_utf_16_surrogate_pair ... ok
[INFO] [stdout] test json::decode::test_unescape::should_unescape_unicode_literal_followed_by_simple_escape ... ok
[INFO] [stdout] test json::parser::test::error_should_be_send_and_sync ... ok
[INFO] [stdout] test json::decode::test_unescape::should_unescape_str_without_escapes ... 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_array_with_nested_object ... ok
[INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_nested_array ... ok
[INFO] [stdout] test duration::test::should_parse_hms ... ok
[INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_object_with_nested_array ... ok
[INFO] [stdout] test json::parser::test_error_reporting::should_report_invalid_json ... 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_missing_comma ... ok
[INFO] [stdout] test json::parser::test_line_col::should_line_col_one_line_many_chars_str ... 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_parser::should_emit_events_for_array_with_nested_fields ... ok
[INFO] [stdout] test json::parser::test_line_col::should_line_col_empty_str ... ok
[INFO] [stdout] test json::parser::test_parser::should_emit_events_for_array_with_two_fields ... ok
[INFO] [stdout] test json::parser::test_basic_happy_structure::should_parse_nested_object ... 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_emit_events_for_object_with_nested_fields ... ok
[INFO] [stdout] test json::parser::test_error_reporting::should_report_trailing_comma ... 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_emit_events_for_object_with_two_fields ... 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_colon_instead_of_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_err_on_array_comma_and_number_json ... ok
[INFO] [stdout] test guess::test_guess_cdr::should_guess_cdr_version_v211 ... 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_incomplete_invalid_value_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_incomplete_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_number_and_several_commas_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_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_items_separated_by_semicolon_json ... 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_unclosed_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_spaces_vertical_tab_formfeed_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_array_newlines_unclosed_json ... ok
[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_incomplete_false_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_array_unclosed_with_new_lines_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_number_hex_1_digit_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_infinity_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_minus_space_1_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_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_object_comma_instead_of_colon_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_object_bracket_key_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_garbage_at_end_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_number_minus_sign_with_trailing_garbage_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_number_plus_inf_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_number_hex_2_digits_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_non_string_key_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_number_with_alpha_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_number_inf_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_unquoted_key_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_repeated_null_null_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_object_several_trailing_commas_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_trailing_comma_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_object_with_single_string_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_single_space_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_1_surrogate_then_escape_u_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_backslash_00_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_escaped_emoji_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_incomplete_escape_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_string_incomplete_surrogate_escape_invalid_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_invalid_backslash_esc_json ... ok
[INFO] [stdout] test duration::test::should_panic_malformed_whitespace - should panic ... ok
[INFO] [stdout] test duration::test::should_panic_on_single_separator - should panic ... ok
[INFO] [stdout] test json::parser::test_parser::should_err_on_string_invalid_unicode_escape_json ... ok
[INFO] [stdout] test duration::test::should_panic_minutes_out_of_range - should panic ... ok
[INFO] [stdout] test duration::test::should_panic_on_extraneous_whitespace - should panic ... 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 duration::test::should_panic_on_missing_component - should panic ... ok
[INFO] [stdout] test duration::test::should_panic_on_empty - should panic ... ok
[INFO] [stdout] test duration::test::should_panic_on_empty_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_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_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_string_single_quote_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_start_escape_unclosed_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_unicode_capitalu_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_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_array_with_unclosed_string_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_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_array_with_extra_array_close_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_ascii_min_unicode_min_identifier_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_object_followed_by_closing_object_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_object_with_trailing_garbage_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_structure_double_array_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_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_open_array_open_string_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_object_string_with_apostrophes_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_object_close_array_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_object_open_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_array_comma_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_trailing_hash_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_single_star_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_u_plus_2060_word_joined_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_unclosed_array_unfinished_false_json ... ok
[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_unicode_min_identifier_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_structure_open_array_string_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_parse_array_empty_min_string_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_just_minus_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_ending_with_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_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_false_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_arrays_with_spaces_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_array_empty_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_array_with_trailing_space_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_capital_e_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_0_dot_e1_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_0_1_2_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_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_0_capital_eplus_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_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_int_with_exp_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_number_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_expression_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_invalid_plus_min_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_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_int_starting_with_zero_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_1_0eplus_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_real_capital_e_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_plus_plus_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_pos_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_real_exponent_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_1_0emin_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_object_empty_key_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_real_without_int_part_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_int_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_number_u_plus_ff11_fullwidth_digit_one_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_duplicated_key_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_duplicated_key_and_value_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_object_basic_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_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_string_unicode_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_string_1_2_3_bytes_utf_min_8_sequences_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_object_trailing_comment_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_object_with_newlines_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_number_starting_with_dot_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_string_backslash_and_u_escaped_zero_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_double_escape_n_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_comments_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_allowed_escapes_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_double_escape_a_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_escaped_control_character_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_in_array_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_noncharacterinutf_min_8_u_plus_ffff_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_object_long_strings_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_string_pi_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_reservedcharacterinutf_min_8_u_plus_1bfff_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_u_plus_2029_par_sep_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_simple_ascii_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_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_unicode_u_plus_10fffe_nonchar_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_string_space_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_u_plus_200b_zero_width_space_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_unicode_u_plus_2064_invisible_plus_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_string_unicodeescapedbackslash_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_structure_100000_opening_arrays ... ignored, Pending fix see https://git.service.d11n.nl/tandemdrive/ocpi-tariffs/issues/14
[INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_fdd0_nonchar_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_false_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_string_unicode_u_plus_fffe_nonchar_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_string_utf8_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_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_parser::should_parse_structure_trailing_newline_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_structure_lonely_int_json ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_string_with_del_character_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_true_in_array_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_structure_whitespace_array_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_structure_lonely_true_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::schema::test_json_schema_macro::should_parse_array ... 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_object_nested_with_leading_field ... 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_trailing_field ... ok
[INFO] [stdout] test json::parser::test_raw_str::should_fail_to_create_raw_str_from_string_without_quotes ... ok
[INFO] [stdout] test json::parser::test_type_sizes::should_match_sizes ... ok
[INFO] [stdout] test json::test_parse_with_schema::should_parse_nested_object_out_of_schema ... ok
[INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_in_array_with_nested_object ... ok
[INFO] [stdout] test json::test_path::path_should_cmp_with_str ... ok
[INFO] [stdout] test json::test_path::path_should_display ... ok
[INFO] [stdout] test json::test_path_matches_glob::glob_should_match_path ... 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_two_levels ... ok
[INFO] [stdout] test json::test_parse_with_schema::should_report_unexpected_fields_for_root_element ... 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_in_array_of_objects ... ok
[INFO] [stdout] test json::parser::test_parser::should_parse_string_unescaped_ctrl_char_json ... 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_array_of_nested_objects ... 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::test_path_node_matches_str::should_match_path ... ok
[INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_empty_object ... 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_float_array ... 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::walk::test_element_iter::iter_index_should_match_element_id_order ... 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_compound_root_element ... 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_root_string ... 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_with_only_excl_vat_field ... 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_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 json::write::test_tree_writer::should_pretty_print_root_bool ... ok
[INFO] [stdout] test money::test_price::should_create_from_json_with_excl_and_incl_vat_fields ... ok
[INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_root_null ... ok
[INFO] [stdout] test money::test_price::should_fail_to_create_from_non_object_json ... ok
[INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_root_object ... ok
[INFO] [stdout] test number::test_parse_string::should_parse_string ... 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_above ... ok
[INFO] [stdout] test number::test_parse_string::should_fail_to_parse_numeric_str_letters ... ok
[INFO] [stdout] test json::write::test_tree_writer::should_pretty_print_object_with_nulls ... ok
[INFO] [stdout] test number::test_parse_string::should_fail_to_parse_numeric_str_with_escapes ... ok
[INFO] [stdout] test json::walk::test_element_iter::should_traverse_nested_objects ... 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_normalize_periods::should_extract_periods ... ok
[INFO] [stdout] test price::test_validate_cdr::should_fail_validation_start_end_range_doesnt_overlap_with_periods ... ok
[INFO] [stdout] test price::test_validate_cdr::should_pass_parse_validation ... 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_zero_element_paths ... ok
[INFO] [stdout] test price::test_warning_ids_path_map::should_limit_element_paths ... ok
[INFO] [stdout] test price::test_warning_ids_path_map::should_limit_zero_warning_ids_only ... ok
[INFO] [stdout] test string::test::should_fail_on_exact_len ... ok
[INFO] [stdout] test price::test_warning_ids_path_map::should_limit_ids_and_paths ... ok
[INFO] [stdout] test number::test_approx_eq::exact_should_be_considered_equal ... 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_fail_on_max_len ... ok
[INFO] [stdout] test string::test::should_parse_exact_len ... ok
[INFO] [stdout] test tariff::v221::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 string::test::should_parse_max_len ... ok
[INFO] [stdout] test tariff::v211::test_null_fields::should_parse_restrictions_all_null ... ok
[INFO] [stdout] test price::test_warning_ids_path_map::should_limit_warning_ids_only ... ok
[INFO] [stdout] test tariff::v221::test_null_fields::should_parse_restrictions_empty_object ... ok
[INFO] [stdout] test price::test_warning_ids_path_map::should_produce_expected_warnings ... ok
[INFO] [stdout] test tariff::v211::test_null_fields::should_parse_restrictions_day_of_week_empty ... ok
[INFO] [stdout] test tariff::v211::test_null_fields::should_parse_restrictions_empty_object ... 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_treat_nulls_as_optional_fields ... ok
[INFO] [stdout] test tariff::v221::test_null_fields::should_parse_restrictions_all_null ... ok
[INFO] [stdout] test tariff::v221::test_every_field_set::should_parse_v221_tariff_json_as_v211_with_unexpected_fields ... 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_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 test_rust_decimal_arbitrary_precision::should_serialize_0_decimal_without_fraction_digits ... ok
[INFO] [stdout] test price::test_periods::should_price_periods_from_time_and_parking_time_cdr_and_tariff ... 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_without_cdr_country ... 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_infer_timezone_from_location_country ... 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_and_invalid_type ... 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_country_having_many_timezones ... ok
[INFO] [stdout] test warning::test_group_by_elem::should_into_group_by_elem ... ok
[INFO] [stdout] test timezone::test_find_or_infer::should_find_timezone_but_report_alpha2_location_country_code ... ok
[INFO] [stdout] test weekday::test_day_of_week::should_create_from_json ... 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 timezone::test_find_or_infer::should_not_find_timezone_due_to_no_country ... ok
[INFO] [stdout] test weekday::test_day_of_week::should_warn_about_case_from_json ... 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 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 test_reasonable_str::should_allow_reasonable_cdr_str ... ok
[INFO] [stdout] test warning::test_group_by_elem::should_group_by_elem ... ok
[INFO] [stdout] test test_reasonable_str::should_forbid_unreasonable_cdr_str ... ok
[INFO] [stdout] test test_reasonable_str::should_forbid_unreasonable_tariff_str ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 466 passed; 0 failed; 13 ignored; 0 measured; 0 filtered out; finished in 0.17s
[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/cdr.rs - cdr::parse_and_report (line 134) ... ok
[INFO] [stdout] test src/tariff.rs - tariff::lint (line 457) ... ok
[INFO] [stdout] test src/cdr.rs - cdr::parse (line 101) ... ok
[INFO] [stdout] test src/cdr.rs - cdr::price (line 204) ... ok
[INFO] [stdout] test src/cdr.rs - cdr::parse_with_version (line 19) ... 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/tariff.rs - tariff::parse_with_version (line 179) ... ok
[INFO] [stdout] test src/tariff.rs - tariff::parse_and_report (line 282) ... ok
[INFO] [stdout] test src/lib.rs - (line 17) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.63s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "2b5c242c181024c0f87b62a8d9da7ccc7a62e45f8e066676cc421bb8be88ba1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2b5c242c181024c0f87b62a8d9da7ccc7a62e45f8e066676cc421bb8be88ba1b", kill_on_drop: false }`
[INFO] [stdout] 2b5c242c181024c0f87b62a8d9da7ccc7a62e45f8e066676cc421bb8be88ba1b
