this derivation will be built: /nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv building '/nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv' on 'grpc://farm.numtide.com:50051?client-cert=/run/secrets/vars/per-machine/bld1/nix-farm-ci/crt&client-key=/run/secrets/vars/per-machine/bld1/nix-farm-ci/key&connect-timeout=21&system=aarch64-linux' building '/nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv' on farm.numtide.com:50051 horae-tests-0.1.0> elastic-arm-0b1d6a93: building px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv horae-tests-0.1.0> Running phase: unpackPhase horae-tests-0.1.0> unpacking source archive /nix/store/f2f3qgv0zddqlfk7bmzwv3iizxvgl35k-source horae-tests-0.1.0> source root is source horae-tests-0.1.0> Running phase: patchPhase horae-tests-0.1.0> Executing configureCargoCommonVars horae-tests-0.1.0> decompressing cargo artifacts from /nix/store/iz15gsb1vnxn8iiqaks5c263ms6mxl74-horae-checks-deps-0.1.0/target.tar.zst to target horae-tests-0.1.0> patchPhase completed in 42 seconds horae-tests-0.1.0> Running phase: updateAutotoolsGnuConfigScriptsPhase horae-tests-0.1.0> Running phase: configurePhase horae-tests-0.1.0> will append /build/source/.cargo-home/config.toml with contents of /nix/store/kqxgprj432hnlh0pqlk1779vyabfmw4i-vendor-cargo-deps/config.toml horae-tests-0.1.0> default configurePhase, nothing to do horae-tests-0.1.0> Running phase: buildPhase horae-tests-0.1.0> +++ command cargo nextest run -p horae-core --test-threads 8 horae-tests-0.1.0> Compiling proc-macro2 v1.0.106 horae-tests-0.1.0> Compiling serde_core v1.0.228 horae-tests-0.1.0> Compiling serde v1.0.228 horae-tests-0.1.0> Compiling num-traits v0.2.19 horae-tests-0.1.0> Compiling quote v1.0.46 horae-tests-0.1.0> Compiling syn v2.0.118 horae-tests-0.1.0> Compiling uuid v1.23.4 horae-tests-0.1.0> Compiling serde_derive v1.0.228 horae-tests-0.1.0> Compiling thiserror-impl v2.0.18 horae-tests-0.1.0> Compiling thiserror v2.0.18 horae-tests-0.1.0> Compiling chrono v0.4.45 horae-tests-0.1.0> Compiling horae-core v0.1.0 (/build/source/crates/core) horae-tests-0.1.0> Finished `test` profile [unoptimized + debuginfo] target(s) in 35.88s horae-tests-0.1.0> ------------ horae-tests-0.1.0> Nextest run ID dc2f1fb1-39d6-4715-8b02-e70a351e12fd with nextest profile: default horae-tests-0.1.0> Starting 121 tests across 1 binary horae-tests-0.1.0> Running [ 00:00:00] 0/121: 8 running, 0 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding horae-tests-0.1.0> [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget horae-tests-0.1.0> [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values horae-tests-0.1.0> [ 00:00:00] horae-core ::a_single_jump_announces_every_crossed_band horae-tests-0.1.0> [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached horae-tests-0.1.0> [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once horae-tests-0.1.0> Running [ 00:00:00] => 15/121: 8 running, 15 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core eserves_absence_zero_and_exact_large_amounts horae-tests-0.1.0> [ 00:00:00] horae-core unsupported_currency_and_null_billing_fields horae-tests-0.1.0> [ 00:00:00] horae-core ation::tests::format_clamps_negative_to_zero horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::format_hhmm_pads_minutes horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::format_round_trip horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::minutes_between_is_exact_no_minimum horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::parse_colon horae-tests-0.1.0> PASS [ 0.016s] horae-core budget::tests::a_single_jump_announces_every_crossed_band horae-tests-0.1.0> PASS [ 0.023s] horae-core budget::tests::configured_alert_threshold_is_exact_without_rounding horae-tests-0.1.0> PASS [ 0.024s] horae-core budget::tests::current_band_is_the_highest_reached horae-tests-0.1.0> PASS [ 0.014s] horae-core budget::tests::large_values_do_not_overflow horae-tests-0.1.0> PASS [ 0.030s] horae-core budget::tests::configured_alert_rejects_invalid_inputs_and_widens_large_values horae-tests-0.1.0> PASS [ 0.028s] horae-core budget::tests::display_percentage_rounds_clamps_and_never_overflows horae-tests-0.1.0> PASS [ 0.030s] horae-core budget::tests::each_crossing_is_announced_once horae-tests-0.1.0> PASS [ 0.035s] horae-core budget::tests::configured_alert_accepts_zero_percent_but_not_zero_budget horae-tests-0.1.0> PASS [ 0.013s] horae-core budget::tests::no_band_for_zero_or_missing_budget horae-tests-0.1.0> PASS [ 0.034s] horae-core budget::tests::drop_below_a_band_does_not_fire_but_current_resets horae-tests-0.1.0> PASS [ 0.015s] horae-core budget::tests::over_budget_fires_even_without_a_configured_100_band horae-tests-0.1.0> PASS [ 0.013s] horae-core client::tests::profile_accepts_supported_currencies_and_unicode_character_limit horae-tests-0.1.0> PASS [ 0.012s] horae-core client::tests::profile_rejects_blank_overlong_and_null_names horae-tests-0.1.0> PASS [ 0.017s] horae-core client::tests::default_rate_rejects_negative_fractional_cent_overflow_and_invalid_text horae-tests-0.1.0> PASS [ 0.017s] horae-core client::tests::optional_text_normalizes_only_blank_fields horae-tests-0.1.0> Running [ 00:00:00] => 15/121: 8 running, 15 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core eserves_absence_zero_and_exact_large_amounts horae-tests-0.1.0> [ 00:00:00] horae-core unsupported_currency_and_null_billing_fields horae-tests-0.1.0> [ 00:00:00] horae-core ation::tests::format_clamps_negative_to_zero horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::format_hhmm_pads_minutes horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::format_round_trip horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::minutes_between_is_exact_no_minimum horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::parse_colon horae-tests-0.1.0> Running [ 00:00:00] ==> 35/121: 8 running, 15 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core eserves_absence_zero_and_exact_large_amounts horae-tests-0.1.0> [ 00:00:00] horae-core unsupported_currency_and_null_billing_fields horae-tests-0.1.0> [ 00:00:00] horae-core ation::tests::format_clamps_negative_to_zero horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::format_hhmm_pads_minutes horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::format_round_trip horae-tests-0.1.0> [ 00:00:00] horae-core ::tests::minutes_between_is_exact_no_minimum horae-tests-0.1.0> [ 00:00:00] horae-core duration::tests::parse_colon horae-tests-0.1.0> PASS [ 0.013s] horae-core duration::tests::format_clamps_negative_to_zero horae-tests-0.1.0> PASS [ 0.017s] horae-core client::tests::profile_rejects_unsupported_currency_and_null_billing_fields horae-tests-0.1.0> PASS [ 0.023s] horae-core client::tests::default_rate_preserves_absence_zero_and_exact_large_amounts horae-tests-0.1.0> PASS [ 0.014s] horae-core duration::tests::format_round_trip horae-tests-0.1.0> PASS [ 0.015s] horae-core duration::tests::parse_decimal horae-tests-0.1.0> PASS [ 0.014s] horae-core duration::tests::parse_preserves_u32_boundary_without_saturating horae-tests-0.1.0> PASS [ 0.024s] horae-core duration::tests::format_hhmm_pads_minutes horae-tests-0.1.0> PASS [ 0.008s] horae-core duration::tests::parse_rejects_excessive_decimal_precision_and_numerator horae-tests-0.1.0> PASS [ 0.017s] horae-core duration::tests::parse_rejects_colon_overflow_without_panicking horae-tests-0.1.0> PASS [ 0.026s] horae-core duration::tests::parse_colon horae-tests-0.1.0> PASS [ 0.027s] horae-core duration::tests::minutes_between_is_exact_no_minimum horae-tests-0.1.0> PASS [ 0.011s] horae-core duration::tests::parse_rejects_negative_non_finite_and_malformed_values horae-tests-0.1.0> PASS [ 0.026s] horae-core duration::tests::parse_decimal_rounds_half_minutes_exactly horae-tests-0.1.0> PASS [ 0.011s] horae-core importers::harvest::convert::tests::conversion_handles_high_precision_without_intermediate_overflow horae-tests-0.1.0> PASS [ 0.012s] horae-core duration::tests::parse_round_trips_each_minute_in_a_day horae-tests-0.1.0> PASS [ 0.017s] horae-core importers::harvest::convert::tests::conversion_rejects_unrepresentable_scaled_values_without_panicking horae-tests-0.1.0> PASS [ 0.016s] horae-core importers::harvest::convert::tests::garbage_is_rejected horae-tests-0.1.0> PASS [ 0.013s] horae-core importers::harvest::convert::tests::high_precision_fraction_straddles_the_half_minute_exactly horae-tests-0.1.0> PASS [ 0.021s] horae-core importers::harvest::convert::tests::conversion_preserves_the_i64_boundary_and_rejects_rounding_past_it horae-tests-0.1.0> PASS [ 0.018s] horae-core importers::harvest::convert::tests::conversion_reports_precision_and_numerator_limits horae-tests-0.1.0> PASS [ 0.020s] horae-core importers::harvest::convert::tests::hours_common_values_are_exact horae-tests-0.1.0> Running [ 00:00:00] ==> 36/121: 8 running, 36 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core :hours_round_trip_against_exporter_transform horae-tests-0.1.0> [ 00:00:00] horae-core ert::tests::leading_and_trailing_forms_parse horae-tests-0.1.0> [ 00:00:00] horae-core onvert::tests::money_common_values_are_exact horae-tests-0.1.0> [ 00:00:00] horae-core :money_round_trip_against_exporter_transform horae-tests-0.1.0> [ 00:00:00] horae-core t::tests::money_rounds_third_decimal_half_up horae-tests-0.1.0> [ 00:00:00] horae-core arvest::convert::tests::negative_is_rejected horae-tests-0.1.0> Running [ 00:00:00] ===> 52/121: 8 running, 36 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core :hours_round_trip_against_exporter_transform horae-tests-0.1.0> [ 00:00:00] horae-core ert::tests::leading_and_trailing_forms_parse horae-tests-0.1.0> [ 00:00:00] horae-core onvert::tests::money_common_values_are_exact horae-tests-0.1.0> [ 00:00:00] horae-core :money_round_trip_against_exporter_transform horae-tests-0.1.0> [ 00:00:00] horae-core t::tests::money_rounds_third_decimal_half_up horae-tests-0.1.0> [ 00:00:00] horae-core arvest::convert::tests::negative_is_rejected horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::convert::tests::money_round_trip_against_exporter_transform horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::convert::tests::negative_is_rejected horae-tests-0.1.0> PASS [ 0.016s] horae-core importers::harvest::convert::tests::money_common_values_are_exact horae-tests-0.1.0> PASS [ 0.018s] horae-core importers::harvest::convert::tests::leading_and_trailing_forms_parse horae-tests-0.1.0> PASS [ 0.019s] horae-core importers::harvest::convert::tests::round_half_up_at_the_boundary horae-tests-0.1.0> PASS [ 0.040s] horae-core importers::harvest::convert::tests::hours_round_trip_against_exporter_transform horae-tests-0.1.0> PASS [ 0.028s] horae-core importers::harvest::convert::tests::money_rounds_third_decimal_half_up horae-tests-0.1.0> PASS [ 0.013s] horae-core importers::harvest::keys::tests::composite_components_do_not_collide horae-tests-0.1.0> PASS [ 0.012s] horae-core importers::harvest::keys::tests::normalize_trims_and_case_folds horae-tests-0.1.0> PASS [ 0.020s] horae-core importers::harvest::keys::tests::normalize_matches_sql_harvest_norm_contract horae-tests-0.1.0> PASS [ 0.020s] horae-core importers::harvest::keys::tests::client_key_equal_across_case_and_whitespace horae-tests-0.1.0> PASS [ 0.016s] horae-core importers::harvest::keys::tests::occurrence_counter_numbers_repeats_from_zero horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::keys::tests::project_key_falls_back_to_client_and_name horae-tests-0.1.0> PASS [ 0.011s] horae-core importers::harvest::types::account_switch_tests::account_switch_requires_binding_and_no_imports_or_active_work horae-tests-0.1.0> PASS [ 0.021s] horae-core importers::harvest::keys::tests::occurrence_counter_keys_are_independent horae-tests-0.1.0> PASS [ 0.023s] horae-core importers::harvest::keys::tests::project_key_prefers_code_when_present horae-tests-0.1.0> PASS [ 0.023s] horae-core importers::harvest::keys::tests::time_entry_key_distinguishes_and_matches horae-tests-0.1.0> Running [ 00:00:00] ===> 53/121: 8 running, 53 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core keys::tests::task_key_shared_across_projects horae-tests-0.1.0> [ 00:00:00] horae-core d_new_inline_errors_reconcile_across_batches horae-tests-0.1.0> [ 00:00:00] horae-core _when_an_errored_count_has_no_reported_error horae-tests-0.1.0> [ 00:00:00] horae-core tests::import_modes_display_their_wire_names horae-tests-0.1.0> [ 00:00:00] horae-core s_when_errored_counts_match_collected_errors horae-tests-0.1.0> [ 00:00:00] horae-core conserves_header_amount_and_bounds_each_line horae-tests-0.1.0> Running [ 00:00:00] =====> 70/121: 8 running, 70 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_odd_minutes horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_half_hour horae-tests-0.1.0> [ 00:00:00] horae-core :line_amount_rejects_unrepresentable_results horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_zero_minutes horae-tests-0.1.0> [ 00:00:00] horae-core line_amount_rounds_half_cents_up_not_to_even horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_zero_rate horae-tests-0.1.0> PASS [ 0.030s] horae-core importers::harvest::keys::tests::task_key_shared_across_projects horae-tests-0.1.0> PASS [ 0.015s] horae-core importers::harvest::types::tests::does_not_reconcile_when_an_errored_count_has_no_reported_error horae-tests-0.1.0> PASS [ 0.027s] horae-core importers::harvest::types::tests::archived_errors_and_new_inline_errors_reconcile_across_batches horae-tests-0.1.0> PASS [ 0.023s] horae-core importers::harvest::types::tests::reconciles_when_errored_counts_match_collected_errors horae-tests-0.1.0> PASS [ 0.025s] horae-core importers::harvest::types::tests::import_modes_display_their_wire_names horae-tests-0.1.0> PASS [ 0.023s] horae-core invoice::tests::discount_allocation_conserves_header_amount_and_bounds_each_line horae-tests-0.1.0> PASS [ 0.015s] horae-core invoice::tests::discount_allocation_rejects_negative_lines_and_subtotal_overflow horae-tests-0.1.0> PASS [ 0.017s] horae-core invoice::tests::discount_allocation_handles_empty_zero_and_full_discounts horae-tests-0.1.0> PASS [ 0.020s] horae-core invoice::tests::discount_allocation_supports_maximum_representable_subtotal horae-tests-0.1.0> PASS [ 0.015s] horae-core invoice::tests::line_amount_90_minutes horae-tests-0.1.0> PASS [ 0.020s] horae-core invoice::tests::discounted_fee_contribution_leaves_discount_available horae-tests-0.1.0> PASS [ 0.019s] horae-core invoice::tests::invoice_adjustments_apply_discount_before_non_compounding_taxes horae-tests-0.1.0> PASS [ 0.024s] horae-core invoice::tests::invoice_adjustments_reject_negative_subtotal_and_overflow horae-tests-0.1.0> PASS [ 0.028s] horae-core invoice::tests::discount_allocation_uses_largest_remainder_then_stable_source_order horae-tests-0.1.0> PASS [ 0.024s] horae-core invoice::tests::invoice_adjustments_round_components_half_up horae-tests-0.1.0> PASS [ 0.022s] horae-core invoice::tests::line_amount_accepts_large_representable_amounts horae-tests-0.1.0> PASS [ 0.014s] horae-core invoice::tests::line_amount_exact_hour horae-tests-0.1.0> Running [ 00:00:00] =====> 70/121: 8 running, 70 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_odd_minutes horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_half_hour horae-tests-0.1.0> [ 00:00:00] horae-core :line_amount_rejects_unrepresentable_results horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_zero_minutes horae-tests-0.1.0> [ 00:00:00] horae-core line_amount_rounds_half_cents_up_not_to_even horae-tests-0.1.0> [ 00:00:00] horae-core invoice::tests::line_amount_zero_rate horae-tests-0.1.0> Running [ 00:00:00] ======> 89/121: 8 running, 89 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core ests::basics_reject_blank_and_overlong_names horae-tests-0.1.0> [ 00:00:00] horae-core eject_overlong_code_and_unsupported_currency horae-tests-0.1.0> [ 00:00:00] horae-core ct_missing_overlong_and_excessive_milestones horae-tests-0.1.0> [ 00:00:00] horae-core ts_are_only_available_for_time_and_materials horae-tests-0.1.0> [ 00:00:00] horae-core hedules_validate_amounts_and_milestone_total horae-tests-0.1.0> [ 00:00:00] horae-core ts::monthly_fee_dates_follow_calendar_months horae-tests-0.1.0> PASS [ 0.011s] horae-core invoice::tests::line_amount_rounds_half_cents_up_not_to_even horae-tests-0.1.0> PASS [ 0.016s] horae-core invoice::tests::line_amount_half_hour horae-tests-0.1.0> PASS [ 0.014s] horae-core invoice::tests::line_amount_zero_minutes horae-tests-0.1.0> PASS [ 0.021s] horae-core invoice::tests::line_amount_rejects_unrepresentable_results horae-tests-0.1.0> PASS [ 0.028s] horae-core invoice::tests::line_amount_odd_minutes horae-tests-0.1.0> PASS [ 0.019s] horae-core invoice::tests::resolve_rate_cascade horae-tests-0.1.0> PASS [ 0.012s] horae-core invoice::tests::selected_rate_mode_ignores_unselected_rate_sources horae-tests-0.1.0> PASS [ 0.011s] horae-core money::tests::addition_rejects_overflow_in_both_directions horae-tests-0.1.0> PASS [ 0.025s] horae-core invoice::tests::line_amount_zero_rate horae-tests-0.1.0> PASS [ 0.016s] horae-core invoice::tests::selected_rate_keeps_zero_and_explicit_missing_project_rate horae-tests-0.1.0> PASS [ 0.012s] horae-core money::tests::addition_retains_currency_checks_and_representable_boundaries horae-tests-0.1.0> PASS [ 0.016s] horae-core money::tests::format_cents_groups_thousands_and_keeps_sign horae-tests-0.1.0> PASS [ 0.017s] horae-core money::tests::format_cents_plain_keeps_sign_below_one_unit horae-tests-0.1.0> PASS [ 0.011s] horae-core project::tests::basics_accept_same_day_but_reject_reversed_dates horae-tests-0.1.0> PASS [ 0.017s] horae-core money::tests::parse_cents_reads_whole_and_fractional_amounts horae-tests-0.1.0> PASS [ 0.022s] horae-core money::tests::parse_cents_tolerates_grouping_spaces_and_signs horae-tests-0.1.0> PASS [ 0.024s] horae-core money::tests::parse_cents_is_exact_where_a_float_would_drift horae-tests-0.1.0> PASS [ 0.024s] horae-core money::tests::parse_cents_rejects_what_it_cannot_represent horae-tests-0.1.0> PASS [ 0.018s] horae-core project::tests::basics_accept_supported_currencies_and_optional_dates horae-tests-0.1.0> Running [ 00:00:00] ======> 89/121: 8 running, 89 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core ests::basics_reject_blank_and_overlong_names horae-tests-0.1.0> [ 00:00:00] horae-core eject_overlong_code_and_unsupported_currency horae-tests-0.1.0> [ 00:00:00] horae-core ct_missing_overlong_and_excessive_milestones horae-tests-0.1.0> [ 00:00:00] horae-core ts_are_only_available_for_time_and_materials horae-tests-0.1.0> [ 00:00:00] horae-core hedules_validate_amounts_and_milestone_total horae-tests-0.1.0> [ 00:00:00] horae-core ts::monthly_fee_dates_follow_calendar_months horae-tests-0.1.0> Running [ 00:00:00] =======> 107/121: 8 running, 89 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core ests::basics_reject_blank_and_overlong_names horae-tests-0.1.0> [ 00:00:00] horae-core eject_overlong_code_and_unsupported_currency horae-tests-0.1.0> [ 00:00:00] horae-core ct_missing_overlong_and_excessive_milestones horae-tests-0.1.0> [ 00:00:00] horae-core ts_are_only_available_for_time_and_materials horae-tests-0.1.0> [ 00:00:00] horae-core hedules_validate_amounts_and_milestone_total horae-tests-0.1.0> [ 00:00:00] horae-core ts::monthly_fee_dates_follow_calendar_months horae-tests-0.1.0> PASS [ 0.017s] horae-core project::tests::basics_reject_blank_and_overlong_names horae-tests-0.1.0> PASS [ 0.020s] horae-core project::tests::basics_reject_overlong_code_and_unsupported_currency horae-tests-0.1.0> PASS [ 0.019s] horae-core project::tests::fee_schedules_reject_missing_overlong_and_excessive_milestones horae-tests-0.1.0> PASS [ 0.013s] horae-core project::tests::monetary_budgets_are_only_available_for_time_and_materials horae-tests-0.1.0> PASS [ 0.013s] horae-core project::tests::monthly_fee_dates_follow_calendar_months horae-tests-0.1.0> PASS [ 0.020s] horae-core project::tests::fee_schedules_validate_amounts_and_milestone_total horae-tests-0.1.0> PASS [ 0.014s] horae-core project::tests::payment_terms_support_receipt_and_checked_days horae-tests-0.1.0> PASS [ 0.013s] horae-core project::tests::percentage_preserves_exact_hundredths horae-tests-0.1.0> PASS [ 0.012s] horae-core rounding::tests::identity_when_inc_zero horae-tests-0.1.0> PASS [ 0.020s] horae-core project::tests::monthly_fee_dates_reject_invalid_calendar_inputs horae-tests-0.1.0> PASS [ 0.024s] horae-core project::tests::percentage_rejects_invalid_precision_range_and_syntax horae-tests-0.1.0> PASS [ 0.023s] horae-core rounding::tests::effective_minutes_respect_frozen_history_including_zero horae-tests-0.1.0> PASS [ 0.015s] horae-core rounding::tests::result_is_multiple_of_inc horae-tests-0.1.0> PASS [ 0.014s] horae-core state::tests::managers_invoice_open_and_approved_time horae-tests-0.1.0> PASS [ 0.016s] horae-core rounding::tests::up_and_down horae-tests-0.1.0> PASS [ 0.024s] horae-core rounding::tests::nearest_ties_round_up horae-tests-0.1.0> PASS [ 0.012s] horae-core time_of_day::tests::clamp_to_day_prevents_crossing_midnight horae-tests-0.1.0> PASS [ 0.024s] horae-core state::tests::invoiced_is_final horae-tests-0.1.0> PASS [ 0.020s] horae-core state::tests::member_submit_and_reopen horae-tests-0.1.0> PASS [ 0.016s] horae-core time_of_day::tests::format_12h_matches_harvest_style horae-tests-0.1.0> PASS [ 0.015s] horae-core time_of_day::tests::format_round_trips horae-tests-0.1.0> Running [ 00:00:00] =======> 110/121: 8 running, 110 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core state::tests::only_manager_can_approve horae-tests-0.1.0> [ 00:00:00] horae-core _day::tests::parse_reads_12h_including_edges horae-tests-0.1.0> [ 00:00:00] horae-core time_of_day::tests::parse_reads_24h horae-tests-0.1.0> [ 00:00:00] horae-core ests::parse_rejects_out_of_range_and_garbage horae-tests-0.1.0> [ 00:00:00] horae-core e_of_day::tests::snap_rounds_to_nearest_step horae-tests-0.1.0> [ 00:00:00] horae-core ests::budget_kind_wire_strings_match_db_enum horae-tests-0.1.0> PASS [ 0.024s] horae-core state::tests::only_manager_can_approve horae-tests-0.1.0> PASS [ 0.021s] horae-core time_of_day::tests::parse_reads_12h_including_edges horae-tests-0.1.0> PASS [ 0.021s] horae-core time_of_day::tests::parse_reads_24h horae-tests-0.1.0> PASS [ 0.015s] horae-core week::tests::configured_week_can_start_in_the_previous_year horae-tests-0.1.0> PASS [ 0.244s] horae-core importers::harvest::convert::tests::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> PASS [ 0.015s] horae-core types::tests::budget_kind_wire_strings_match_db_enum horae-tests-0.1.0> PASS [ 0.016s] horae-core time_of_day::tests::snap_rounds_to_nearest_step horae-tests-0.1.0> PASS [ 0.011s] horae-core week::tests::configured_week_reports_an_unrepresentable_start horae-tests-0.1.0> PASS [ 0.025s] horae-core time_of_day::tests::parse_rejects_out_of_range_and_garbage horae-tests-0.1.0> PASS [ 0.016s] horae-core week::tests::configured_week_contains_each_day_for_all_seven_start_days horae-tests-0.1.0> PASS [ 0.005s] horae-core week::tests::maps_any_weekday_to_its_monday horae-tests-0.1.0> ------------ horae-tests-0.1.0> Summary [ 0.321s] 121 tests run: 121 passed, 0 skipped horae-tests-0.1.0> Running [ 00:00:00] ======== 121/121: 8 running, 110 passed, 0 skipped horae-tests-0.1.0> [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals horae-tests-0.1.0> [ 00:00:00] horae-core state::tests::only_manager_can_approve horae-tests-0.1.0> [ 00:00:00] horae-core _day::tests::parse_reads_12h_including_edges horae-tests-0.1.0> [ 00:00:00] horae-core time_of_day::tests::parse_reads_24h horae-tests-0.1.0> [ 00:00:00] horae-core ests::parse_rejects_out_of_range_and_garbage horae-tests-0.1.0> [ 00:00:00] horae-core e_of_day::tests::snap_rounds_to_nearest_step horae-tests-0.1.0> [ 00:00:00] horae-core ests::budget_kind_wire_strings_match_db_enum horae-tests-0.1.0> The files belonging to this database system will be owned by user "nixbld". horae-tests-0.1.0> This user must also own the server process. horae-tests-0.1.0> horae-tests-0.1.0> The database cluster will be initialized with locale "C". horae-tests-0.1.0> The default text search configuration will be set to "english". horae-tests-0.1.0> horae-tests-0.1.0> Data page checksums are disabled. horae-tests-0.1.0> horae-tests-0.1.0> fixing permissions on existing directory /build/tmp.IC7eCTzHEI ... ok horae-tests-0.1.0> creating subdirectories ... ok horae-tests-0.1.0> selecting dynamic shared memory implementation ... posix horae-tests-0.1.0> selecting default "max_connections" ... 100 horae-tests-0.1.0> selecting default "shared_buffers" ... 128MB horae-tests-0.1.0> selecting default time zone ... UTC horae-tests-0.1.0> creating configuration files ... ok horae-tests-0.1.0> running bootstrap script ... ok horae-tests-0.1.0> performing post-bootstrap initialization ... ok horae-tests-0.1.0> syncing data to disk ... ok horae-tests-0.1.0> horae-tests-0.1.0> initdb: warning: enabling "trust" authentication for local connections horae-tests-0.1.0> initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. horae-tests-0.1.0> horae-tests-0.1.0> Success. You can now start the database server using: horae-tests-0.1.0> horae-tests-0.1.0> pg_ctl -D /build/tmp.IC7eCTzHEI -l logfile start horae-tests-0.1.0> horae-tests-0.1.0> waiting for server to start.... done horae-tests-0.1.0> server started horae-tests-0.1.0> +++ command cargo test -p horae --features server -- --test-threads 8 horae-tests-0.1.0> Compiling horae v0.1.0 (/build/source/crates/horae) horae-tests-0.1.0> Compiling horae-core v0.1.0 (/build/source/crates/core) horae-tests-0.1.0> error: could not compile `horae` (bin "horae" test) horae-tests-0.1.0> horae-tests-0.1.0> Caused by: horae-tests-0.1.0> process didn't exit successfully: `rustc --crate-name horae --edition=2024 crates/horae/src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test --cfg 'feature="default"' --cfg 'feature="server"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("default", "server", "web"))' -C metadata=29d10d74d1b8bc4c -C extra-filename=-28e72b71798c6b17 --out-dir /build/source/target/debug/deps -L dependency=/build/source/target/debug/deps --extern anyhow=/build/source/target/debug/deps/libanyhow-0813d260fb765952.rlib --extern axum=/build/source/target/debug/deps/libaxum-83c1ff5b71c9d0fd.rlib --extern chacha20poly1305=/build/source/target/debug/deps/libchacha20poly1305-c5c0e79d98c76b5e.rlib --extern chrono=/build/source/target/debug/deps/libchrono-9be978ebd12098d0.rlib --extern clap=/build/source/target/debug/deps/libclap-408804bcaf8efd69.rlib --extern csv=/build/source/target/debug/deps/libcsv-ea72a17c2042b92c.rlib --extern dioxus=/build/source/target/debug/deps/libdioxus-2c479ec34d1539ce.rlib --extern dioxus_html=/build/source/target/debug/deps/libdioxus_html-eb1ce86c2681e3dd.rlib --extern extism=/build/source/target/debug/deps/libextism-03fdfb41c089dcfe.rlib --extern futures_util=/build/source/target/debug/deps/libfutures_util-f3e48a7fcd1d0730.rlib --extern horae_core=/build/source/target/debug/deps/libhorae_core-a83bfe374705a0e2.rlib --extern openidconnect=/build/source/target/debug/deps/libopenidconnect-323c9519ae2344ac.rlib --extern rust_xlsxwriter=/build/source/target/debug/deps/librust_xlsxwriter-1cc50daf3c2bf4a0.rlib --extern serde=/build/source/target/debug/deps/libserde-291d29911530b0ac.rlib --extern serde_json=/build/source/target/debug/deps/libserde_json-037a07a6de96df16.rlib --extern serial_test=/build/source/target/debug/deps/libserial_test-9dd4b496c778856b.rlib --extern sqlx=/build/source/target/debug/deps/libsqlx-a982e2e5a4e3a6f2.rlib --extern tempfile=/build/source/target/debug/deps/libtempfile-361617019564a53f.rlib --extern thiserror=/build/source/target/debug/deps/libthiserror-7f0fbb5f1588f099.rlib --extern tokio=/build/source/target/debug/deps/libtokio-ab899e1fc26f5506.rlib --extern toml=/build/source/target/debug/deps/libtoml-1d5cf6f0883f3520.rlib --extern tower=/build/source/target/debug/deps/libtower-8dd8097fa90b90ff.rlib --extern tower_http=/build/source/target/debug/deps/libtower_http-cc8f7b936787b58b.rlib --extern tower_sessions=/build/source/target/debug/deps/libtower_sessions-2c93bc84f54d6b76.rlib --extern tower_sessions_sqlx_store=/build/source/target/debug/deps/libtower_sessions_sqlx_store-eee7896de3e86d4e.rlib --extern tracing=/build/source/target/debug/deps/libtracing-e779a9a74b319be0.rlib --extern tracing_subscriber=/build/source/target/debug/deps/libtracing_subscriber-2220a79c3398e4a1.rlib --extern typst=/build/source/target/debug/deps/libtypst-e072515e91703503.rlib --extern typst_as_lib=/build/source/target/debug/deps/libtypst_as_lib-448404cdae7721b6.rlib --extern typst_layout=/build/source/target/debug/deps/libtypst_layout-be26e6144772e19f.rlib --extern typst_pdf=/build/source/target/debug/deps/libtypst_pdf-2c8369c7eac9474c.rlib --extern ureq=/build/source/target/debug/deps/libureq-e8d9c183912aba56.rlib --extern uuid=/build/source/target/debug/deps/libuuid-1c43554b35f82361.rlib --extern wasm_bindgen=/build/source/target/debug/deps/libwasm_bindgen-f702b02098cf2ed8.rlib --extern wasmtime=/build/source/target/debug/deps/libwasmtime-16a44d52022c92c0.rlib --extern zip=/build/source/target/debug/deps/libzip-3f204359bd9edede.rlib -L native=/build/source/target/debug/build/ring-03a782e2c89f3a7e/out -L native=/build/source/target/debug/build/wasmtime-643173dbe9ff4bcf/out -L native=/build/source/target/debug/build/zstd-sys-66eb10da45f2b9d1/out -L native=/build/source/target/debug/build/wasmtime-internal-jit-debug-aa11a3b9b75f44dd/out -L native=/build/source/target/debug/build/psm-c53b6876f12fc7ce/out` (signal: 9, SIGKILL: kill) horae-tests-0.1.0> warning: build failed, waiting for other jobs to finish... error: build of '/nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv' on 'grpc://farm.numtide.com:50051?client-cert=/run/secrets/vars/per-machine/bld1/nix-farm-ci/crt&client-key=/run/secrets/vars/per-machine/bld1/nix-farm-ci/key&connect-timeout=21&system=aarch64-linux' failed: Cannot build '/nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv'. Reason: builder failed with exit code 101. Output paths: /nix/store/frg1b95m76idzvyfrxfs01dfqfvav9nq-horae-tests-0.1.0 Last 25 log lines: > selecting default "max_connections" ... 100 > selecting default "shared_buffers" ... 128MB > selecting default time zone ... UTC > creating configuration files ... ok > running bootstrap script ... ok > performing post-bootstrap initialization ... ok > syncing data to disk ... ok > > initdb: warning: enabling "trust" authentication for local connections > initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. > > Success. You can now start the database server using: > > pg_ctl -D /build/tmp.IC7eCTzHEI -l logfile start > > waiting for server to start.... done > server started > +++ command cargo test -p horae --features server -- --test-threads 8 > Compiling horae v0.1.0 (/build/source/crates/horae) > Compiling horae-core v0.1.0 (/build/source/crates/core) > error: could not compile `horae` (bin "horae" test) > > Caused by: > process didn't exit successfully: `rustc --crate-name horae --edition=2024 crates/horae/src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test --cfg 'feature="default"' --cfg 'feature="server"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("default", "server", "web"))' -C metadata=29d10d74d1b8bc4c -C extra-filename=-28e72b71798c6b17 --out-dir /build/source/target/debug/deps -L dependency=/build/source/target/debug/deps --extern anyhow=/build/source/target/debug/deps/libanyhow-0813d260fb765952.rlib --extern axum=/build/source/target/debug/deps/libaxum-83c1ff5b71c9d0fd.rlib --extern chacha20poly1305=/build/source/target/debug/deps/libchacha20poly1305-c5c0e79d98c76b5e.rlib --extern chrono=/build/source/target/debug/deps/libchrono-9be978ebd12098d0.rlib --extern clap=/build/source/target/debug/deps/libclap-408804bcaf8efd69.rlib --extern csv=/build/source/target/debug/deps/libcsv-ea72a17c2042b92c.rlib --extern dioxus=/build/source/target/debug/deps/libdioxus-2c479ec34d1539ce.rlib --extern dioxus_html=/build/source/target/debug/deps/libdioxus_html-eb1ce86c2681e3dd.rlib --extern extism=/build/source/target/debug/deps/libextism-03fdfb41c089dcfe.rlib --extern futures_util=/build/source/target/debug/deps/libfutures_util-f3e48a7fcd1d0730.rlib --extern horae_core=/build/source/target/debug/deps/libhorae_core-a83bfe374705a0e2.rlib --extern openidconnect=/build/source/target/debug/deps/libopenidconnect-323c9519ae2344ac.rlib --extern rust_xlsxwriter=/build/source/target/debug/deps/librust_xlsxwriter-1cc50daf3c2bf4a0.rlib --extern serde=/build/source/target/debug/deps/libserde-291d29911530b0ac.rlib --extern serde_json=/build/source/target/debug/deps/libserde_json-037a07a6de96df16.rlib --extern serial_test=/build/source/target/debug/deps/libserial_test-9dd4b496c778856b.rlib --extern sqlx=/build/source/target/debug/deps/libsqlx-a982e2e5a4e3a6f2.rlib --extern tempfile=/build/source/target/debug/deps/libtempfile-361617019564a53f.rlib --extern thiserror=/build/source/target/debug/deps/libthiserror-7f0fbb5f1588f099.rlib --extern tokio=/build/source/target/debug/deps/libtokio-ab899e1fc26f5506.rlib --extern toml=/build/source/target/debug/deps/libtoml-1d5cf6f0883f3520.rlib --extern tower=/build/source/target/debug/deps/libtower-8dd8097fa90b90ff.rlib --extern tower_http=/build/source/target/debug/deps/libtower_http-cc8f7b936787b58b.rlib --extern tower_sessions=/build/source/target/debug/deps/libtower_sessions-2c93bc84f54d6b76.rlib --extern tower_sessions_sqlx_store=/build/source/target/debug/deps/libtower_sessions_sqlx_store-eee7896de3e86d4e.rlib --extern tracing=/build/source/target/debug/deps/libtracing-e779a9a74b319be0.rlib --extern tracing_subscriber=/build/source/target/debug/deps/libtracing_subscriber-2220a79c3398e4a1.rlib --extern typst=/build/source/target/debug/deps/libtypst-e072515e91703503.rlib --extern typst_as_lib=/build/source/target/debug/deps/libtypst_as_lib-448404cdae7721b6.rlib --extern typst_layout=/build/source/target/debug/deps/libtypst_layout-be26e6144772e19f.rlib --extern typst_pdf=/build/source/target/debug/deps/libtypst_pdf-2c8369c7eac9474c.rlib --extern ureq=/build/source/target/debug/deps/libureq-e8d9c183912aba56.rlib --extern uuid=/build/source/target/debug/deps/libuuid-1c43554b35f82361.rlib --extern wasm_bindgen=/build/source/target/debug/deps/libwasm_bindgen-f702b02098cf2ed8.rlib --extern wasmtime=/build/source/target/debug/deps/libwasmtime-16a44d52022c92c0.rlib --extern zip=/build/source/target/debug/deps/libzip-3f204359bd9edede.rlib -L native=/build/source/target/debug/build/ring-03a782e2c89f3a7e/out -L native=/build/source/target/debug/build/wasmtime-643173dbe9ff4bcf/out -L native=/build/source/target/debug/build/zstd-sys-66eb10da45f2b9d1/out -L native=/build/source/target/debug/build/wasmtime-internal-jit-debug-aa11a3b9b75f44dd/out -L native=/build/source/target/debug/build/psm-c53b6876f12fc7ce/out` (signal: 9, SIGKILL: kill) > warning: build failed, waiting for other jobs to finish... For full logs, run: nix log /nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv error: Cannot build '/nix/store/px5cqrdip6dm3n2g073lkfmpi514w9bv-horae-tests-0.1.0.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/frg1b95m76idzvyfrxfs01dfqfvav9nq-horae-tests-0.1.0