[INFO] cloning repository https://github.com/alexandre-carmone/astrophoto-manager
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alexandre-carmone/astrophoto-manager" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexandre-carmone%2Fastrophoto-manager", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexandre-carmone%2Fastrophoto-manager'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 369d51cfed801756169de0a3a8778ef2a79248c5
[INFO] testing alexandre-carmone/astrophoto-manager against 1.100.0-beta.1 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexandre-carmone%2Fastrophoto-manager" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/alexandre-carmone/astrophoto-manager
[INFO] finished tweaking git repo https://github.com/alexandre-carmone/astrophoto-manager
[INFO] tweaked toml for git repo https://github.com/alexandre-carmone/astrophoto-manager written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/alexandre-carmone/astrophoto-manager on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/alexandre-carmone/astrophoto-manager already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d
[INFO] running `Command { std: "docker" "start" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-core v0.3.33
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling futures-task v0.3.33
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling futures-io v0.3.33
[INFO] [stderr]    Compiling futures-sink v0.3.33
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling futures-executor v0.3.33
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling pxfm v0.1.30
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling sqlx-sqlite v0.8.6
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling http-range-header v0.4.2
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling uuid v1.24.0
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling deunicode v1.6.2
[INFO] [stderr]    Compiling astro-core v0.1.0 (/opt/rustwide/workdir/astro-core)
[INFO] [stderr]    Compiling sqlx v0.8.6
[INFO] [stderr]    Compiling astro-server v0.1.0 (/opt/rustwide/workdir/astro-server)
[INFO] [stdout] warning: variant `Conflict` is never constructed
[INFO] [stdout]   --> astro-server/src/error.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum ApiError {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Conflict(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `master_path` is never used
[INFO] [stdout]    --> astro-server/src/library.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn master_path(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `has_amp_glow`, `dark_max_age_days`, `full_well_adu`, `sensor_width_px`, and `sensor_height_px` are never read
[INFO] [stdout]    --> astro-server/src/resolve.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub struct CameraInfo {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 450 |     pub has_amp_glow: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 451 |     pub dark_max_age_days: Option<f64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 452 |     pub full_well_adu: Option<f64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 453 |     pub sensor_width_px: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 454 |     pub sensor_height_px: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CameraInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `chrono`
[INFO] [stderr]   --> astro-core/Cargo.toml:17:1
[INFO] [stderr]    |
[INFO] [stderr] 17 | chrono.workspace = true
[INFO] [stderr]    | ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `chrono`
[INFO] [stderr] warning: unused dependency `rayon`
[INFO] [stderr]   --> astro-core/Cargo.toml:19:1
[INFO] [stderr]    |
[INFO] [stderr] 19 | rayon = { version = "1", optional = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rayon`
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> astro-core/Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | serde_json.workspace = true
[INFO] [stderr]    | ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] warning: `astro-core` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 36s
[INFO] running `Command { std: "docker" "inspect" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling astro-core v0.1.0 (/opt/rustwide/workdir/astro-core)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling astro-server v0.1.0 (/opt/rustwide/workdir/astro-server)
[INFO] [stdout] warning: variant `Conflict` is never constructed
[INFO] [stdout]   --> astro-server/src/error.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum ApiError {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Conflict(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `master_path` is never used
[INFO] [stdout]    --> astro-server/src/library.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn master_path(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `has_amp_glow`, `dark_max_age_days`, `full_well_adu`, `sensor_width_px`, and `sensor_height_px` are never read
[INFO] [stdout]    --> astro-server/src/resolve.rs:450:9
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub struct CameraInfo {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 450 |     pub has_amp_glow: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 451 |     pub dark_max_age_days: Option<f64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 452 |     pub full_well_adu: Option<f64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 453 |     pub sensor_width_px: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 454 |     pub sensor_height_px: Option<i64>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CameraInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `chrono`
[INFO] [stderr]   --> astro-core/Cargo.toml:17:1
[INFO] [stderr]    |
[INFO] [stderr] 17 | chrono.workspace = true
[INFO] [stderr]    | ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `chrono`
[INFO] [stderr] warning: unused dependency `rayon`
[INFO] [stderr]   --> astro-core/Cargo.toml:19:1
[INFO] [stderr]    |
[INFO] [stderr] 19 | rayon = { version = "1", optional = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rayon`
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> astro-core/Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | serde_json.workspace = true
[INFO] [stderr]    | ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] warning: `astro-core` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 17.42s
[INFO] running `Command { std: "docker" "inspect" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: variant `Conflict` is never constructed
[INFO] [stderr]   --> astro-server/src/error.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub enum ApiError {
[INFO] [stderr]    |          -------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 20 |     Conflict(String),
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ApiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `master_path` is never used
[INFO] [stderr]    --> astro-server/src/library.rs:133:8
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub fn master_path(
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `has_amp_glow`, `dark_max_age_days`, `full_well_adu`, `sensor_width_px`, and `sensor_height_px` are never read
[INFO] [stderr]    --> astro-server/src/resolve.rs:450:9
[INFO] [stderr]     |
[INFO] [stderr] 446 | pub struct CameraInfo {
[INFO] [stderr]     |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 450 |     pub has_amp_glow: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] 451 |     pub dark_max_age_days: Option<f64>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 452 |     pub full_well_adu: Option<f64>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 453 |     pub sensor_width_px: Option<i64>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 454 |     pub sensor_height_px: Option<i64>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `CameraInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `astro-server` (bin "astro-server" test) generated 3 warnings
[INFO] [stderr] warning: unused dependency `chrono`
[INFO] [stderr]   --> astro-core/Cargo.toml:17:1
[INFO] [stderr]    |
[INFO] [stderr] 17 | chrono.workspace = true
[INFO] [stderr]    | ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `chrono`
[INFO] [stderr] warning: unused dependency `rayon`
[INFO] [stderr]   --> astro-core/Cargo.toml:19:1
[INFO] [stderr]    |
[INFO] [stderr] 19 | rayon = { version = "1", optional = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rayon`
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> astro-core/Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | serde_json.workspace = true
[INFO] [stderr]    | ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] warning: `astro-core` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/astro-core/b1075966cad91fa8/out/astro_core-b1075966cad91fa8)
[INFO] [stdout] 
[INFO] [stdout] running 109 tests
[INFO] [stdout] test calibration::tests::a_closer_temperature_outranks_a_bigger_frame_count ... ok
[INFO] [stdout] test calibration::tests::a_cooled_dark_within_tolerance_is_accepted_and_penalised_proportionally ... ok
[INFO] [stdout] test calibration::tests::a_cooled_dark_beyond_temperature_tolerance_is_rejected_with_the_numbers ... ok
[INFO] [stdout] test calibration::tests::a_cooled_dark_with_no_temperature_is_rejected_rather_than_guessed ... ok
[INFO] [stdout] test calibration::tests::a_derived_setpoint_gets_a_wider_tolerance ... ok
[INFO] [stdout] test calibration::tests::a_cooled_camera_reuses_darks_across_sessions ... ok
[INFO] [stdout] test calibration::tests::a_badly_exposed_flat_is_penalised_but_still_usable ... ok
[INFO] [stdout] test calibration::tests::a_flat_from_a_different_train_is_rejected ... ok
[INFO] [stdout] test calibration::tests::a_flat_through_a_different_filter_is_rejected ... ok
[INFO] [stdout] test calibration::tests::a_flat_from_the_same_panel_is_preferred_over_one_from_another ... ok
[INFO] [stdout] test calibration::tests::a_bias_subtracted_master_can_be_scaled ... ok
[INFO] [stdout] test calibration::tests::a_non_scalable_dark_must_match_exposure ... ok
[INFO] [stdout] test calibration::tests::a_perfect_master_bias_scores_zero ... ok
[INFO] [stdout] test calibration::tests::a_rotated_flat_is_rejected ... ok
[INFO] [stdout] test calibration::tests::a_flat_with_no_panel_recorded_is_a_general_flat ... ok
[INFO] [stdout] test calibration::tests::a_subframe_light_can_use_a_full_frame_dark_when_the_origin_is_known ... ok
[INFO] [stdout] test calibration::tests::a_year_old_bias_is_still_eligible_but_penalised ... ok
[INFO] [stdout] test calibration::tests::an_intervening_train_event_invalidates_a_flat ... ok
[INFO] [stdout] test calibration::tests::a_two_percent_exposure_difference_is_tolerated ... ok
[INFO] [stdout] test calibration::tests::an_old_flat_is_rejected_unless_a_validity_window_says_otherwise ... ok
[INFO] [stdout] test calibration::tests::an_uncooled_dark_from_another_session_is_rejected ... ok
[INFO] [stdout] test calibration::tests::bias_ignores_exposure_entirely ... ok
[INFO] [stdout] test calibration::tests::binning_and_readout_mode_mismatches_are_rejected ... ok
[INFO] [stdout] test calibration::tests::calib_sig_key_matches_the_documented_format ... ok
[INFO] [stdout] test calibration::tests::dark_age_limit_is_enforced_and_per_camera_overridable ... ok
[INFO] [stdout] test calibration::tests::dawn_flats_are_as_good_as_dusk_flats ... ok
[INFO] [stdout] test calibration::tests::gain_mismatch_is_a_hard_rejection_for_every_role ... ok
[INFO] [stdout] test calibration::tests::masters_outrank_raw_groups_at_equal_quality ... ok
[INFO] [stdout] test calibration::tests::ranking_is_deterministic_regardless_of_input_order ... ok
[INFO] [stdout] test calibration::tests::an_uncooled_dark_from_the_same_session_is_accepted ... ok
[INFO] [stdout] test calibration::tests::a_subframe_light_without_a_known_origin_is_rejected_not_guessed ... ok
[INFO] [stdout] test calibration::tests::a_thin_bias_set_is_penalised ... ok
[INFO] [stdout] test calibration::tests::rejected_candidates_sort_last_but_are_retained_for_explanation ... ok
[INFO] [stdout] test calibration::tests::an_event_outside_the_interval_does_not_invalidate ... ok
[INFO] [stdout] test calibration::tests::rotation_comparison_wraps_around_360 ... ok
[INFO] [stdout] test calibration::tests::scaling_beyond_four_times_is_refused ... ok
[INFO] [stdout] test calibration::tests::the_cross_session_escape_hatch_works_when_enabled ... ok
[INFO] [stdout] test calibration::tests::an_uncooled_dark_with_drifting_sensor_temperature_is_rejected ... ok
[INFO] [stdout] test fits::tests::float_pixels_are_read_without_scaling_surprises ... ok
[INFO] [stdout] test calibration::tests::when_nothing_matches_the_nearest_miss_comes_first ... ok
[INFO] [stdout] test fits::tests::continue_cards_join_a_long_string ... ok
[INFO] [stdout] test fits::tests::comment_cards_keep_their_text_and_do_not_shadow_values ... ok
[INFO] [stdout] test fits::tests::doubled_quote_is_a_literal_quote ... ok
[INFO] [stdout] test calibration::tests::a_subframe_that_overruns_the_calibration_frame_is_rejected ... ok
[INFO] [stdout] test fits::tests::numeric_comment_is_split_off ... ok
[INFO] [stdout] test fits::tests::get_any_returns_the_first_present_keyword ... ok
[INFO] [stdout] test fits::tests::parses_a_minimal_header ... ok
[INFO] [stdout] test fits::tests::hierarch_keywords_are_flattened ... ok
[INFO] [stdout] test fits::tests::fortran_d_exponent_parses ... ok
[INFO] [stdout] test fits::tests::integer_written_as_float_still_parses ... ok
[INFO] [stdout] test fits::tests::rejects_non_fits_input ... ok
[INFO] [stdout] test fits::tests::reads_unsigned_16bit_pixels_through_bzero ... ok
[INFO] [stdout] test fits::tests::rejects_short_input ... ok
[INFO] [stdout] test fits::tests::tile_compressed_files_are_refused_clearly ... ok
[INFO] [stdout] test fits::tests::strips_quotes_and_trailing_padding_from_strings ... ok
[INFO] [stdout] test fits::tests::truncated_pixel_data_is_reported ... ok
[INFO] [stdout] test headers::tests::asiair_frame_keyword_is_accepted ... ok
[INFO] [stdout] test fits::tests::saturation_accounts_for_the_unsigned_offset ... ok
[INFO] [stdout] test headers::tests::ambiguous_ra_is_resolved_against_objctra ... ok
[INFO] [stdout] test fits::tests::slash_inside_a_quoted_value_is_not_a_comment ... ok
[INFO] [stdout] test headers::tests::asiair_blklevel_maps_to_offset ... ok
[INFO] [stdout] test headers::tests::a_plate_solve_beats_the_mount_coordinates ... ok
[INFO] [stdout] test headers::tests::date_obs_without_a_time_defaults_to_midnight ... ok
[INFO] [stdout] test headers::tests::egain_is_never_mistaken_for_gain ... ok
[INFO] [stdout] test headers::tests::a_representative_ekos_light_extracts_cleanly ... ok
[INFO] [stdout] test headers::tests::focus_and_align_frames_are_skipped_not_imported ... ok
[INFO] [stdout] test headers::tests::gain_wins_when_both_are_present ... ok
[INFO] [stdout] test headers::tests::explicit_offset_beats_blklevel ... ok
[INFO] [stdout] test headers::tests::exptime_beats_exposure_when_they_disagree ... ok
[INFO] [stdout] test headers::tests::binning_reads_all_three_conventions ... ok
[INFO] [stdout] test headers::tests::date_card_is_never_used_as_observation_time ... ok
[INFO] [stdout] test headers::tests::negative_declination_applies_the_sign_to_the_whole_value ... ok
[INFO] [stdout] test headers::tests::date_obs_is_normalized_to_millisecond_utc ... ok
[INFO] [stdout] test headers::tests::date_obs_matching_date_loc_is_flagged_as_possibly_local ... ok
[INFO] [stdout] test headers::tests::objctra_is_hours_and_becomes_degrees ... ok
[INFO] [stdout] test headers::tests::placeholder_text_values_are_treated_as_absent ... ok
[INFO] [stdout] test headers::tests::ra_wraps_into_zero_to_360 ... ok
[INFO] [stdout] test headers::tests::sexagesimal_rejects_out_of_range_fields ... ok
[INFO] [stdout] test headers::tests::imagetyp_variants_all_normalize ... ok
[INFO] [stdout] test headers::tests::no_type_information_at_all_is_low_confidence ... ok
[INFO] [stdout] test headers::tests::nonsense_timestamps_are_rejected_not_coerced ... ok
[INFO] [stdout] test headers::tests::missing_imagetyp_falls_back_to_the_deepest_matching_directory ... ok
[INFO] [stdout] test model::tests::separation_at_the_pole_collapses ... ok
[INFO] [stdout] test headers::tests::roi_origin_is_captured_when_present ... ok
[INFO] [stdout] test model::tests::separation_is_symmetric_and_small_angle_accurate ... ok
[INFO] [stdout] test model::tests::bayer_flip_is_an_involution ... ok
[INFO] [stdout] test model::tests::pixel_scale_round_trips ... ok
[INFO] [stdout] test model::tests::separation_handles_ra_wraparound ... ok
[INFO] [stdout] test headers::tests::row_order_and_bayer_are_read ... ok
[INFO] [stdout] test headers::tests::wcs_cd_matrix_yields_scale_and_rotation ... ok
[INFO] [stdout] test stats::tests::adjacent_blobs_are_not_merged_by_the_union_find ... ok
[INFO] [stdout] test stats::tests::a_small_frame_is_not_upscaled ... ok
[INFO] [stdout] test stats::tests::bottom_up_frames_are_flipped_for_display ... ok
[INFO] [stdout] test stats::tests::centroids_are_sub_pixel_accurate ... ok
[INFO] [stdout] test stats::tests::a_starless_frame_reports_no_shape_metrics_rather_than_noise ... ok
[INFO] [stdout] test fits::tests::unterminated_header_is_an_error_not_a_hang ... ok
[INFO] [stdout] test stats::tests::mtf_is_monotonic_and_pins_the_endpoints ... ok
[INFO] [stdout] test stats::tests::background_recovers_the_true_level_despite_stars ... ok
[INFO] [stdout] test stats::tests::autostretch_lifts_a_dark_frame_out_of_the_floor ... ok
[INFO] [stdout] test stats::tests::saturated_fraction_and_extremes_come_from_the_original_data ... ok
[INFO] [stdout] test stats::tests::background_follows_a_gradient ... ok
[INFO] [stdout] test stats::tests::hot_pixels_do_not_register_as_stars ... ok
[INFO] [stdout] test stats::tests::fwhm_in_arcseconds_uses_the_plate_scale ... ok
[INFO] [stdout] test stats::tests::recovers_the_fwhm_of_synthetic_gaussian_stars ... ok
[INFO] [stdout] test stats::tests::a_cfa_frame_is_measured_on_the_decimated_plane_but_reported_in_full_pixels ... ok
[INFO] [stdout] test stats::tests::thumbnail_is_a_valid_jpeg_of_the_right_size ... ok
[INFO] [stdout] test stats::tests::hfr_tracks_focus_monotonically ... ok
[INFO] [stdout] test stats::tests::round_stars_have_low_eccentricity_and_trailed_stars_high ... ok
[INFO] [stdout] test stats::tests::saturated_stars_are_excluded_from_the_measurement ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 109 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.31s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/astro-server/a688c135155bbce1/out/astro_server-a688c135155bbce1)
[INFO] [stdout] running 110 tests
[INFO] [stdout] test db::tests::match_config_reads_overrides_from_meta ... ok
[INFO] [stdout] test db::tests::settings_round_trip_with_a_fallback ... ok
[INFO] [stdout] test db::tests::migrations_apply_and_seed_the_sentinel_rows ... ok
[INFO] [stdout] test ingest::tests::a_cooled_dark_from_another_night_is_accepted_end_to_end ... ok
[INFO] [stdout] test ingest::tests::a_duplicate_never_touches_the_users_original_even_in_delete_mode ... ok
[INFO] [stdout] test ingest::tests::a_flat_rejected_for_age_can_be_pinned_by_hand ... ok
[INFO] [stdout] test ingest::tests::a_malformed_date_is_rejected_before_the_job_starts ... ok
[INFO] [stdout] test ingest::tests::a_corrupt_file_fails_alone_without_aborting_the_scan ... ok
[INFO] [stdout] test ingest::tests::a_full_session_of_lights_flats_darks_and_bias_lands_correctly ... ok
[INFO] [stdout] test ingest::tests::a_light_with_no_matching_dark_is_explained_not_silently_dropped ... ok
[INFO] [stdout] test ingest::tests::a_manual_assignment_survives_a_rematch ... ok
[INFO] [stdout] test ingest::tests::a_panel_in_the_header_survives_a_target_override ... ok
[INFO] [stdout] test ingest::tests::a_scan_does_not_re_import_the_library_it_writes_to ... ok
[INFO] [stdout] test ingest::tests::a_scan_imports_lights_and_files_them_in_the_managed_tree ... ok
[INFO] [stdout] test ingest::tests::a_panel_without_its_own_flats_still_gets_calibrated ... ok
[INFO] [stdout] test ingest::tests::a_restored_backup_relinks_rather_than_reporting_a_useless_duplicate ... ok
[INFO] [stdout] test ingest::tests::a_selector_with_no_criteria_is_refused ... ok
[INFO] [stdout] test ingest::tests::an_explicit_date_forces_the_session_regardless_of_the_header ... ok
[INFO] [stdout] test ingest::tests::an_explicit_panel_override_wins_over_the_header ... ok
[INFO] [stdout] test ingest::tests::a_target_with_a_hyphenated_catalogue_name_is_not_split_into_panels ... ok
[INFO] [stdout] test ingest::tests::an_explicit_date_rescues_frames_with_no_date_obs ... ok
[INFO] [stdout] test ingest::tests::a_selector_can_scope_an_assignment_to_a_whole_class ... ok
[INFO] [stdout] test ingest::tests::an_explicit_target_does_not_touch_calibration_frames ... ok
[INFO] [stdout] test ingest::tests::an_explicit_target_overrides_a_useless_object_header ... ok
[INFO] [stdout] test ingest::tests::an_uncooled_dark_from_another_night_is_refused_end_to_end ... ok
[INFO] [stdout] test ingest::tests::calibration_frames_are_not_queued_for_star_detection ... ok
[INFO] [stdout] test ingest::tests::cooled_darks_from_two_nights_form_one_reusable_group ... ok
[INFO] [stdout] test ingest::tests::darks_and_bias_get_no_target_train_or_filter ... ok
[INFO] [stdout] test ingest::tests::deferred_processing_produces_a_thumbnail_and_marks_the_frame_done ... ok
[INFO] [stdout] test ingest::tests::delete_source_removes_the_original_only_after_the_copy_verifies ... ok
[INFO] [stdout] test ingest::tests::every_header_card_is_archived ... ok
[INFO] [stdout] test ingest::tests::dithering_does_not_create_panels_even_in_mosaic_mode ... ok
[INFO] [stdout] test ingest::tests::each_panels_lights_get_their_own_panels_flats ... ok
[INFO] [stdout] test ingest::tests::mosaic_mode_creates_a_panel_per_pointing ... ok
[INFO] [stdout] test ingest::tests::focus_and_align_frames_are_skipped ... ok
[INFO] [stdout] test ingest::tests::overrides_are_recorded_on_the_job ... ok
[INFO] [stdout] test ingest::tests::reconcile_completes_an_import_whose_flag_was_never_flipped ... ok
[INFO] [stdout] test ingest::tests::flats_carry_their_panel_onto_the_calibration_group ... ok
[INFO] [stdout] test ingest::tests::reconcile_drops_a_row_whose_file_never_landed ... ok
[INFO] [stdout] test ingest::tests::reconcile_marks_interrupted_jobs_as_failed ... ok
[INFO] [stdout] test ingest::tests::panel_numbers_are_read_from_the_object_header ... ok
[INFO] [stdout] test library::tests::cooled_darks_go_to_the_reusable_library_tree ... ok
[INFO] [stdout] test library::tests::a_destination_collision_with_different_content_is_an_error_not_an_overwrite ... ok
[INFO] [stdout] test library::tests::flats_are_filed_by_date_train_and_filter_not_by_target ... ok
[INFO] [stdout] test library::tests::hashing_handles_files_larger_than_the_read_buffer ... ok
[INFO] [stdout] test library::tests::fits_extensions_are_recognised_case_insensitively ... ok
[INFO] [stdout] test library::tests::hashing_is_stable_and_content_dependent ... ok
[INFO] [stdout] test library::tests::light_paths_group_by_target_panel_date_train_and_filter ... ok
[INFO] [stdout] test library::tests::materialize_copies_verifies_and_leaves_the_source_alone_by_default ... ok
[INFO] [stdout] test library::tests::materialize_deletes_the_source_only_when_asked ... ok
[INFO] [stdout] test library::tests::materialize_refuses_a_hash_mismatch_and_leaves_nothing_behind ... ok
[INFO] [stdout] test library::tests::mosaic_panels_get_their_own_directory ... ok
[INFO] [stdout] test library::tests::quarantine_preserves_the_relative_path ... ok
[INFO] [stdout] test library::tests::missing_target_and_filter_fall_back_rather_than_producing_an_empty_component ... ok
[INFO] [stdout] test library::tests::re_materializing_identical_content_is_a_no_op ... ok
[INFO] [stdout] test ingest::tests::the_nina_panel_naming_is_read_too ... ok
[INFO] [stdout] test library::tests::sub_second_exposures_do_not_produce_a_dot_in_the_path ... ok
[INFO] [stdout] test library::tests::temperature_slugs_avoid_a_leading_minus ... ok
[INFO] [stdout] test library::tests::thumbnails_fan_out_by_hash_prefix ... ok
[INFO] [stdout] test library::tests::uncooled_darks_are_filed_under_their_session ... ok
[INFO] [stdout] test library::tests::readout_mode_appears_in_the_calibration_signature_directory ... ok
[INFO] [stdout] test library::tests::slugs_are_ascii_lowercase_and_never_empty ... ok
[INFO] [stdout] test matcher::tests::a_null_gain_signature_parses_back_to_none_not_minus_one ... ok
[INFO] [stdout] test matcher::tests::day_conversion_makes_age_a_subtraction ... ok
[INFO] [stdout] test matcher::tests::dimensions_are_recovered_from_a_signature ... ok
[INFO] [stdout] test matcher::tests::signature_settings_round_trip ... ok
[INFO] [stdout] test resolve::tests::a_filter_baked_into_the_object_name_is_stripped ... ok
[INFO] [stdout] test library::tests::write_atomic_leaves_no_partial_file ... ok
[INFO] [stdout] test ingest::tests::matching_pairs_lights_with_the_calibration_shot_alongside_them ... ok
[INFO] [stdout] test resolve::tests::a_hyphen_that_belongs_to_the_catalogue_name_is_not_a_panel ... ok
[INFO] [stdout] test resolve::tests::a_name_that_merely_contains_pane_is_left_alone ... ok
[INFO] [stdout] test ingest::tests::uncooled_darks_are_partitioned_per_session ... ok
[INFO] [stdout] test resolve::tests::a_night_that_crosses_midnight_stays_one_session ... ok
[INFO] [stdout] test resolve::tests::a_panel_marker_is_split_off_and_its_number_kept ... ok
[INFO] [stdout] test resolve::tests::a_plain_target_has_no_panel ... ok
[INFO] [stdout] test ingest::tests::without_mosaic_mode_a_second_pointing_is_flagged_not_split ... ok
[INFO] [stdout] test ingest::tests::rescanning_the_same_folder_imports_nothing_new ... ok
[INFO] [stdout] test resolve::tests::a_single_word_ending_in_a_filter_letter_is_not_truncated ... ok
[INFO] [stdout] test resolve::tests::a_far_off_pointing_is_flagged_rather_than_silently_making_a_new_panel ... ok
[INFO] [stdout] test ingest::tests::unpinning_hands_the_choice_back_to_the_matcher ... ok
[INFO] [stdout] test resolve::tests::a_frame_without_pointing_falls_back_to_the_first_panel ... ok
[INFO] [stdout] test resolve::tests::amp_glow_prone_sensors_are_flagged ... ok
[INFO] [stdout] test resolve::tests::a_filterless_frame_gets_the_sentinel_filter_not_null ... ok
[INFO] [stdout] test resolve::tests::an_unknown_timezone_falls_back_to_utc_rather_than_panicking ... ok
[INFO] [stdout] test resolve::tests::an_unrecognised_filter_keeps_its_own_identity ... ok
[INFO] [stdout] test resolve::tests::broadband_spellings_collapse_too ... ok
[INFO] [stdout] test resolve::tests::a_new_camera_is_created_unconfirmed_so_cooling_gets_reviewed ... ok
[INFO] [stdout] test resolve::tests::a_session_is_shared_by_every_frame_of_the_same_night_and_tracks_its_bounds ... ok
[INFO] [stdout] test resolve::tests::cooling_is_inferred_from_a_setpoint_before_the_model_name ... ok
[INFO] [stdout] test resolve::tests::dawn_flats_land_in_the_same_session_as_the_night_before ... ok
[INFO] [stdout] test resolve::tests::empty_and_whitespace_object_strings_produce_nothing ... ok
[INFO] [stdout] test resolve::tests::a_simple_target_gets_exactly_one_panel ... ok
[INFO] [stdout] test resolve::tests::hydrogen_alpha_spellings_collapse_to_one_filter ... ok
[INFO] [stdout] test resolve::tests::leading_zeros_in_a_catalogue_number_are_normalized ... ok
[INFO] [stdout] test resolve::tests::messier_spellings_all_canonicalize_together ... ok
[INFO] [stdout] test resolve::tests::night_of_respects_the_site_timezone ... ok
[INFO] [stdout] test resolve::tests::non_catalogue_names_keep_their_display_form ... ok
[INFO] [stdout] test resolve::tests::normalize_key_strips_punctuation_and_accents ... ok
[INFO] [stdout] test resolve::tests::a_target_created_without_coordinates_gets_them_backfilled ... ok
[INFO] [stdout] test resolve::tests::sharpless_spellings_all_canonicalize_together ... ok
[INFO] [stdout] test resolve::tests::cone_matching_finds_a_unique_nearby_target ... ok
[INFO] [stdout] test resolve::tests::the_kstars_mosaic_naming_is_understood ... ok
[INFO] [stdout] test resolve::tests::the_noon_boundary_starts_a_new_night ... ok
[INFO] [stdout] test resolve::tests::a_train_is_created_unconfirmed_and_reused ... ok
[INFO] [stdout] test resolve::tests::a_target_is_created_once_and_found_again_by_alias_spelling ... ok
[INFO] [stdout] test resolve::tests::an_explicit_panel_number_is_authoritative_over_coordinates ... ok
[INFO] [stdout] test resolve::tests::cone_matching_refuses_to_choose_between_two_candidates ... ok
[INFO] [stdout] test resolve::tests::filter_spellings_resolve_to_one_row ... ok
[INFO] [stdout] test resolve::tests::repeating_a_panel_number_reuses_the_same_panel ... ok
[INFO] [stdout] test resolve::tests::site_resolution_matches_nearby_coordinates_and_falls_back_otherwise ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 110 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.30s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests astro_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d", kill_on_drop: false }`
[INFO] [stdout] 52b76fa10a835f26cb08c6bf7b82203dd21b7bf586dd1098bf566834310ca60d
