horae-tests-0.1.0
checks.x86_64-linux.tests
· build #625
· raw
unpackPhase
1unpacking source archive /nix/store/vb4h0gfs4iwjm6cwsj90zg4k2cw9rszx-source2source root is sourcepatchPhase
3Executing configureCargoCommonVars4decompressing cargo artifacts from /nix/store/p0fga5r55aw5iwdy8h0dpr32lhcczl5i-horae-checks-deps-0.1.0/target.tar.zst to target5patchPhase completed in 3 minutes 53 secondsconfigurePhase
6will append /build/source/.cargo-home/config.toml with contents of /nix/store/i0bj632any4bjpvnl84zc2h7cq8zn0mz-vendor-cargo-deps/config.toml7default configurePhase, nothing to dobuildPhase
8+++ command cargo nextest run -p horae-core --test-threads 489 Compiling proc-macro2 v1.0.10610 Compiling serde_core v1.0.22811 Compiling serde v1.0.22812 Compiling num-traits v0.2.1913 Compiling quote v1.0.4614 Compiling syn v2.0.11815 Compiling uuid v1.23.416 Compiling serde_derive v1.0.22817 Compiling thiserror-impl v2.0.1818 Compiling thiserror v2.0.1819 Compiling chrono v0.4.4520 Compiling horae-core v0.1.0 (/build/source/crates/core)21 Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 30s22------------23 Nextest run ID 93e3e5f4-3f8d-4bf5-8d1a-c6d2ff506c65 with nextest profile: default24 Starting 191 tests across 1 binary25 Running [ 00:00:00] 0/191: 48 running, 0 passed, 0 skipped 26 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget27 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero28 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances29 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding30 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values31 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows32 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached33 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once34 Running [ 00:00:00] 0/191: 48 running, 0 passed, 0 skipped 35 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget36 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero37 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances38 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding39 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values40 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows41 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached42 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once43 Running [ 00:00:00] > 1/191: 48 running, 1 passed, 0 skipped 44 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget45 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero46 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances47 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding48 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values49 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows50 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached51 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once52 PASS [ 0.050s] horae-core budget::tests::a_single_jump_announces_every_crossed_band53 Running [ 00:00:00] > 1/191: 48 running, 1 passed, 0 skipped 54 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget55 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero56 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances57 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding58 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values59 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows60 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached61 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once62 Running [ 00:00:00] > 5/191: 48 running, 5 passed, 0 skipped 63 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget64 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero65 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances66 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding67 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values68 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows69 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached70 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once71 PASS [ 0.052s] horae-core importers::harvest::keys::tests::normalize_matches_sql_harvest_norm_contract72 PASS [ 0.122s] horae-core client::tests::default_rate_preserves_absence_zero_and_exact_large_amounts73 PASS [ 0.122s] horae-core budget::tests::no_band_for_zero_or_missing_budget74 PASS [ 0.116s] horae-core duration::tests::parse_decimal75 Running [ 00:00:00] > 5/191: 48 running, 5 passed, 0 skipped 76 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget77 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero78 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances79 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding80 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values81 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows82 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached83 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once84 Running [ 00:00:00] => 37/191: 48 running, 5 passed, 0 skipped 85 [ 00:00:00] horae-core ert_accepts_zero_percent_but_not_zero_budget86 [ 00:00:00] horae-core ividual_overruns_or_recover_overflow_as_zero87 [ 00:00:00] horae-core ls_exclude_blank_but_include_zero_allowances88 [ 00:00:00] horae-core ed_alert_threshold_is_exact_without_rounding89 [ 00:00:00] horae-core jects_invalid_inputs_and_widens_large_values90 [ 00:00:00] horae-core percentage_rounds_clamps_and_never_overflows91 [ 00:00:00] horae-core ::tests::current_band_is_the_highest_reached92 [ 00:00:00] horae-core dget::tests::each_crossing_is_announced_once93 PASS [ 0.124s] horae-core duration::tests::parse_decimal_rounds_half_minutes_exactly94 PASS [ 0.021s] horae-core importers::harvest::keys::tests::normalize_trims_and_case_folds95 PASS [ 0.134s] horae-core budget::tests::configured_alert_accepts_zero_percent_but_not_zero_budget96 PASS [ 0.131s] horae-core budget::tests::display_percentage_rounds_clamps_and_never_overflows97 PASS [ 0.121s] horae-core budget::tests::configured_alert_rejects_invalid_inputs_and_widens_large_values98 PASS [ 0.122s] horae-core budget::tests::current_band_is_the_highest_reached99 PASS [ 0.122s] horae-core importers::harvest::convert::tests::hours_common_values_are_exact100 PASS [ 0.122s] horae-core budget::tests::each_crossing_is_announced_once101 PASS [ 0.123s] horae-core importers::harvest::keys::tests::client_key_equal_across_case_and_whitespace102 PASS [ 0.123s] horae-core importers::harvest::convert::tests::round_half_up_at_the_boundary103 PASS [ 0.126s] horae-core duration::tests::format_round_trip104 PASS [ 0.127s] horae-core client::tests::profile_rejects_blank_overlong_and_null_names105 PASS [ 0.138s] horae-core duration::tests::format_clamps_negative_to_zero106 PASS [ 0.130s] horae-core duration::tests::parse_rejects_colon_overflow_without_panicking107 PASS [ 0.143s] horae-core budget::tests::large_values_do_not_overflow108 PASS [ 0.136s] horae-core client::tests::profile_rejects_unsupported_currency_and_null_billing_fields109 PASS [ 0.137s] horae-core budget::tests::allocated_totals_exclude_blank_but_include_zero_allowances110 PASS [ 0.140s] horae-core client::tests::default_rate_rejects_negative_fractional_cent_overflow_and_invalid_text111 PASS [ 0.143s] horae-core client::tests::optional_text_normalizes_only_blank_fields112 PASS [ 0.130s] horae-core duration::tests::parse_rejects_negative_non_finite_and_malformed_values113 PASS [ 0.145s] horae-core client::tests::profile_accepts_supported_currencies_and_unicode_character_limit114 PASS [ 0.149s] horae-core duration::tests::format_hhmm_pads_minutes115 PASS [ 0.130s] horae-core importers::harvest::convert::tests::conversion_preserves_the_i64_boundary_and_rejects_rounding_past_it116 PASS [ 0.151s] horae-core budget::tests::configured_alert_threshold_is_exact_without_rounding117 PASS [ 0.154s] horae-core duration::tests::minutes_between_is_exact_no_minimum118 PASS [ 0.155s] horae-core budget::tests::over_budget_fires_even_without_a_configured_100_band119 PASS [ 0.153s] horae-core importers::harvest::convert::tests::negative_is_rejected120 Running [ 00:00:00] => 39/191: 48 running, 39 passed, 0 skipped 121 [ 00:00:00] horae-core ts_excessive_decimal_precision_and_numerator122 [ 00:00:00] horae-core high_precision_without_intermediate_overflow123 [ 00:00:00] horae-core ests::parse_round_trips_each_minute_in_a_day124 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals125 [ 00:00:00] horae-core rsion_reports_precision_and_numerator_limits126 [ 00:00:00] horae-core epresentable_scaled_values_without_panicking127 [ 00:00:00] horae-core n_fraction_straddles_the_half_minute_exactly128 [ 00:00:00] horae-core harvest::convert::tests::garbage_is_rejected129 PASS [ 0.157s] horae-core budget::tests::allocated_totals_do_not_hide_individual_overruns_or_recover_overflow_as_zero130 PASS [ 0.135s] horae-core budget::tests::drop_below_a_band_does_not_fire_but_current_resets131 PASS [ 0.157s] horae-core importers::harvest::convert::tests::hours_round_trip_against_exporter_transform132 PASS [ 0.143s] horae-core duration::tests::parse_preserves_u32_boundary_without_saturating133 PASS [ 0.161s] horae-core importers::harvest::convert::tests::money_rounds_third_decimal_half_up134 PASS [ 0.167s] horae-core importers::harvest::convert::tests::money_round_trip_against_exporter_transform135 PASS [ 0.171s] horae-core duration::tests::parse_colon136 Running [ 00:00:00] => 39/191: 48 running, 39 passed, 0 skipped 137 [ 00:00:00] horae-core ts_excessive_decimal_precision_and_numerator138 [ 00:00:00] horae-core high_precision_without_intermediate_overflow139 [ 00:00:00] horae-core ests::parse_round_trips_each_minute_in_a_day140 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals141 [ 00:00:00] horae-core rsion_reports_precision_and_numerator_limits142 [ 00:00:00] horae-core epresentable_scaled_values_without_panicking143 [ 00:00:00] horae-core n_fraction_straddles_the_half_minute_exactly144 [ 00:00:00] horae-core harvest::convert::tests::garbage_is_rejected145 Running [ 00:00:00] ==> 50/191: 48 running, 39 passed, 0 skipped 146 [ 00:00:00] horae-core ts_excessive_decimal_precision_and_numerator147 [ 00:00:00] horae-core high_precision_without_intermediate_overflow148 [ 00:00:00] horae-core ests::parse_round_trips_each_minute_in_a_day149 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals150 [ 00:00:00] horae-core rsion_reports_precision_and_numerator_limits151 [ 00:00:00] horae-core epresentable_scaled_values_without_panicking152 [ 00:00:00] horae-core n_fraction_straddles_the_half_minute_exactly153 [ 00:00:00] horae-core harvest::convert::tests::garbage_is_rejected154 PASS [ 0.182s] horae-core importers::harvest::convert::tests::garbage_is_rejected155 PASS [ 0.180s] horae-core importers::harvest::convert::tests::money_common_values_are_exact156 PASS [ 0.168s] horae-core importers::harvest::convert::tests::conversion_reports_precision_and_numerator_limits157 PASS [ 0.182s] horae-core importers::harvest::keys::tests::composite_components_do_not_collide158 PASS [ 0.180s] horae-core importers::harvest::convert::tests::leading_and_trailing_forms_parse159 PASS [ 0.175s] horae-core importers::harvest::convert::tests::high_precision_fraction_straddles_the_half_minute_exactly160 PASS [ 0.083s] horae-core importers::harvest::keys::tests::occurrence_counter_numbers_repeats_from_zero161 PASS [ 0.083s] horae-core importers::harvest::keys::tests::project_key_falls_back_to_client_and_name162 PASS [ 0.176s] horae-core importers::harvest::convert::tests::conversion_rejects_unrepresentable_scaled_values_without_panicking163 PASS [ 0.056s] horae-core importers::harvest::keys::tests::project_key_prefers_code_when_present164 PASS [ 0.189s] horae-core importers::harvest::convert::tests::conversion_handles_high_precision_without_intermediate_overflow165 PASS [ 0.024s] horae-core permissions::approvals::tests::expense_read_scope_and_approval_scope_form_an_intersection166 PASS [ 0.205s] horae-core duration::tests::parse_rejects_excessive_decimal_precision_and_numerator167 PASS [ 0.071s] horae-core importers::harvest::types::tests::archived_errors_and_new_inline_errors_reconcile_across_batches168 PASS [ 0.072s] horae-core importers::harvest::keys::tests::time_entry_key_distinguishes_and_matches169 PASS [ 0.114s] horae-core importers::harvest::keys::tests::occurrence_counter_keys_are_independent170 PASS [ 0.076s] horae-core importers::harvest::types::account_switch_tests::account_switch_requires_binding_and_no_imports_or_active_work171 Running [ 00:00:00] ==> 56/191: 48 running, 56 passed, 0 skipped 172 [ 00:00:00] horae-core ests::parse_round_trips_each_minute_in_a_day173 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals174 [ 00:00:00] horae-core keys::tests::task_key_shared_across_projects175 [ 00:00:00] horae-core _when_an_errored_count_has_no_reported_error176 [ 00:00:00] horae-core tests::import_modes_display_their_wire_names177 [ 00:00:00] horae-core s_when_errored_counts_match_collected_errors178 [ 00:00:00] horae-core conserves_header_amount_and_bounds_each_line179 [ 00:00:00] horae-core cation_handles_empty_zero_and_full_discounts180 Running [ 00:00:00] ===> 78/191: 48 running, 56 passed, 0 skipped 181 [ 00:00:00] horae-core ests::parse_round_trips_each_minute_in_a_day182 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals183 [ 00:00:00] horae-core keys::tests::task_key_shared_across_projects184 [ 00:00:00] horae-core _when_an_errored_count_has_no_reported_error185 [ 00:00:00] horae-core tests::import_modes_display_their_wire_names186 [ 00:00:00] horae-core s_when_errored_counts_match_collected_errors187 [ 00:00:00] horae-core conserves_header_amount_and_bounds_each_line188 [ 00:00:00] horae-core cation_handles_empty_zero_and_full_discounts189 PASS [ 0.075s] horae-core importers::harvest::types::tests::does_not_reconcile_when_an_errored_count_has_no_reported_error190 PASS [ 0.223s] horae-core duration::tests::parse_round_trips_each_minute_in_a_day191 PASS [ 0.083s] horae-core importers::harvest::types::tests::reconciles_when_errored_counts_match_collected_errors192 PASS [ 0.096s] horae-core importers::harvest::keys::tests::task_key_shared_across_projects193 PASS [ 0.091s] horae-core invoice::tests::discount_allocation_conserves_header_amount_and_bounds_each_line194 PASS [ 0.053s] horae-core permissions::approvals::tests::empty_record_sets_do_not_remove_identity_or_explicit_grant_checks195 PASS [ 0.093s] horae-core invoice::tests::discount_allocation_handles_empty_zero_and_full_discounts196 PASS [ 0.057s] horae-core permissions::approvals::tests::inactive_and_foreign_provenance_deny_even_with_all_grants197 PASS [ 0.070s] horae-core invoice::tests::line_amount_zero_minutes198 PASS [ 0.092s] horae-core invoice::tests::discount_allocation_supports_maximum_representable_subtotal199 PASS [ 0.094s] horae-core invoice::tests::discount_allocation_rejects_negative_lines_and_subtotal_overflow200 PASS [ 0.095s] horae-core importers::harvest::types::tests::import_modes_display_their_wire_names201 PASS [ 0.071s] horae-core invoice::tests::line_amount_zero_rate202 PASS [ 0.076s] horae-core invoice::tests::line_amount_90_minutes203 PASS [ 0.060s] horae-core money::tests::parse_cents_rejects_what_it_cannot_represent204 PASS [ 0.080s] horae-core invoice::tests::invoice_adjustments_round_components_half_up205 PASS [ 0.077s] horae-core invoice::tests::line_amount_odd_minutes206 PASS [ 0.097s] horae-core invoice::tests::discounted_fee_contribution_leaves_discount_available207 PASS [ 0.065s] horae-core permissions::approvals::tests::all_records_need_approval_scope_even_when_both_domains_are_readable208 PASS [ 0.077s] horae-core invoice::tests::selected_rate_keeps_zero_and_explicit_missing_project_rate209 PASS [ 0.052s] horae-core permissions::approvals::tests::no_expense_read_is_needed_when_there_are_no_expenses210 PASS [ 0.085s] horae-core invoice::tests::invoice_adjustments_reject_negative_subtotal_and_overflow211 PASS [ 0.085s] horae-core invoice::tests::line_amount_exact_hour212 PASS [ 0.071s] horae-core permissions::approvals::tests::missing_dimensions_and_input_duplicates_do_not_infer_scope213 PASS [ 0.058s] horae-core permissions::approvals::tests::one_unreadable_expense_denies_the_whole_supplied_set214 Running [ 00:00:00] ===> 87/191: 48 running, 87 passed, 0 skipped 215 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals216 [ 00:00:00] horae-core e_amount_accepts_large_representable_amounts217 [ 00:00:00] horae-core _apply_discount_before_non_compounding_taxes218 [ 00:00:00] horae-core invoice::tests::line_amount_half_hour219 [ 00:00:00] horae-core :line_amount_rejects_unrepresentable_results220 [ 00:00:00] horae-core line_amount_rounds_half_cents_up_not_to_even221 [ 00:00:00] horae-core invoice::tests::resolve_rate_cascade222 [ 00:00:00] horae-core addition_rejects_overflow_in_both_directions223 PASS [ 0.086s] horae-core money::tests::addition_retains_currency_checks_and_representable_boundaries224 PASS [ 0.110s] horae-core invoice::tests::discount_allocation_uses_largest_remainder_then_stable_source_order225 PASS [ 0.086s] horae-core money::tests::parse_cents_tolerates_grouping_spaces_and_signs226 PASS [ 0.086s] horae-core money::tests::parse_cents_reads_whole_and_fractional_amounts227 PASS [ 0.090s] horae-core money::tests::format_cents_plain_keeps_sign_below_one_unit228 PASS [ 0.098s] horae-core invoice::tests::selected_rate_mode_ignores_unselected_rate_sources229 Running [ 00:00:00] ===> 87/191: 48 running, 87 passed, 0 skipped 230 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals231 [ 00:00:00] horae-core e_amount_accepts_large_representable_amounts232 [ 00:00:00] horae-core _apply_discount_before_non_compounding_taxes233 [ 00:00:00] horae-core invoice::tests::line_amount_half_hour234 [ 00:00:00] horae-core :line_amount_rejects_unrepresentable_results235 [ 00:00:00] horae-core line_amount_rounds_half_cents_up_not_to_even236 [ 00:00:00] horae-core invoice::tests::resolve_rate_cascade237 [ 00:00:00] horae-core addition_rejects_overflow_in_both_directions238 Running [ 00:00:00] ====> 107/191: 48 running, 87 passed, 0 skipped 239 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals240 [ 00:00:00] horae-core e_amount_accepts_large_representable_amounts241 [ 00:00:00] horae-core _apply_discount_before_non_compounding_taxes242 [ 00:00:00] horae-core invoice::tests::line_amount_half_hour243 [ 00:00:00] horae-core :line_amount_rejects_unrepresentable_results244 [ 00:00:00] horae-core line_amount_rounds_half_cents_up_not_to_even245 [ 00:00:00] horae-core invoice::tests::resolve_rate_cascade246 [ 00:00:00] horae-core addition_rejects_overflow_in_both_directions247 PASS [ 0.101s] horae-core invoice::tests::resolve_rate_cascade248 PASS [ 0.103s] horae-core money::tests::parse_cents_is_exact_where_a_float_would_drift249 PASS [ 0.105s] horae-core invoice::tests::line_amount_half_hour250 PASS [ 0.109s] horae-core invoice::tests::invoice_adjustments_apply_discount_before_non_compounding_taxes251 PASS [ 0.033s] horae-core permissions::catalog::tests::every_profile_includes_floor_and_is_closed_under_dependencies252 PASS [ 0.108s] horae-core money::tests::addition_rejects_overflow_in_both_directions253 PASS [ 0.114s] horae-core invoice::tests::line_amount_accepts_large_representable_amounts254 PASS [ 0.108s] horae-core money::tests::format_cents_groups_thousands_and_keeps_sign255 PASS [ 0.042s] horae-core permissions::catalog::tests::empty_selection_includes_member_floor256 PASS [ 0.115s] horae-core invoice::tests::line_amount_rejects_unrepresentable_results257 PASS [ 0.043s] horae-core permissions::catalog::tests::floor_cannot_be_removed_or_partially_modified258 PASS [ 0.041s] horae-core permissions::catalog::tests::profiles_reject_legacy_rank_names_and_unknown_values259 PASS [ 0.077s] horae-core permissions::approvals::tests::reevaluation_does_not_reuse_prior_read_or_approval_success260 PASS [ 0.068s] horae-core permissions::catalog::stored_tests::rejects_unsupported_versions_even_for_valid_grants261 PASS [ 0.044s] horae-core permissions::catalog::tests::finance_profiles_cannot_edit_rates_and_project_manager_has_no_financial_grants262 PASS [ 0.033s] horae-core permissions::catalog::tests::removing_managed_time_read_also_removes_all_reads_writes_and_approvals263 PASS [ 0.120s] horae-core invoice::tests::line_amount_rounds_half_cents_up_not_to_even264 PASS [ 0.041s] horae-core permissions::catalog::tests::template_names_reject_empty_and_overlong_unicode_names265 PASS [ 0.048s] horae-core permissions::catalog::tests::removing_invoice_draft_write_keeps_read_but_removes_managed_and_all_write266 PASS [ 0.129s] horae-core permissions::approvals::tests::catalog_grants_cannot_substitute_for_approval267 PASS [ 0.047s] horae-core permissions::catalog::tests::removing_one_financial_permission_preserves_unrelated_families268 PASS [ 0.023s] horae-core permissions::rates::tests::billable_owner_never_uses_the_other_management_dimension269 PASS [ 0.021s] horae-core permissions::rates::tests::read_only_cost_grant_cannot_authorize_an_explicit_rate_edit270 Running [ 00:00:00] ====> 110/191: 48 running, 110 passed, 0 skipped 271 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals272 [ 00:00:00] horae-core e_prerequisites_make_others_expenses_visible273 [ 00:00:00] horae-core ored_tests::rejects_each_missing_floor_grant274 [ 00:00:00] horae-core ate_grants_instead_of_silently_deduplicating275 [ 00:00:00] horae-core t_matching_relationship_revokes_both_domains276 [ 00:00:00] horae-core ved_selection_instead_of_adding_member_floor277 [ 00:00:00] horae-core missing_prerequisite_without_repairing_input278 [ 00:00:00] horae-core election_without_reapplying_profile_defaults279 Running [ 00:00:00] ====> 132/191: 48 running, 110 passed, 0 skipped 280 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals281 [ 00:00:00] horae-core e_prerequisites_make_others_expenses_visible282 [ 00:00:00] horae-core ored_tests::rejects_each_missing_floor_grant283 [ 00:00:00] horae-core ate_grants_instead_of_silently_deduplicating284 [ 00:00:00] horae-core t_matching_relationship_revokes_both_domains285 [ 00:00:00] horae-core ved_selection_instead_of_adding_member_floor286 [ 00:00:00] horae-core missing_prerequisite_without_repairing_input287 [ 00:00:00] horae-core election_without_reapplying_profile_defaults288 PASS [ 0.079s] horae-core permissions::catalog::tests::known_permission_name_decodes_without_legacy_role_conversion289 PASS [ 0.099s] horae-core permissions::catalog::stored_tests::restores_custom_selection_without_reapplying_profile_defaults290 PASS [ 0.052s] horae-core permissions::person_management::tests::each_catalog_grant_has_the_specified_compatibility_without_changing_grants291 PASS [ 0.042s] horae-core permissions::rates::tests::cost_and_billable_grants_are_independent_and_read_does_not_allow_write292 PASS [ 0.119s] horae-core permissions::approvals::tests::only_expense_reads_or_their_write_prerequisites_make_others_expenses_visible293 PASS [ 0.076s] horae-core permissions::catalog::tests::removing_absent_permission_is_an_idempotent_no_op294 PASS [ 0.111s] horae-core permissions::catalog::stored_tests::rejects_every_missing_prerequisite_without_repairing_input295 PASS [ 0.024s] horae-core permissions::tests::removing_an_assignment_removes_only_that_matching_dimension296 PASS [ 0.115s] horae-core permissions::catalog::stored_tests::rejects_empty_saved_selection_instead_of_adding_member_floor297 PASS [ 0.094s] horae-core permissions::catalog::stored_tests::stored_order_does_not_change_the_selected_set298 PASS [ 0.042s] horae-core permissions::rates::tests::grant_removal_denies_without_mutating_the_remaining_selection299 PASS [ 0.120s] horae-core permissions::catalog::stored_tests::rejects_duplicate_grants_instead_of_silently_deduplicating300 PASS [ 0.058s] horae-core permissions::person_management::tests::other_people_and_empty_removal_need_neither_grants_nor_a_separate_actor301 PASS [ 0.047s] horae-core permissions::rates::tests::unrelated_catalog_grants_never_authorize_ordinary_financial_fields302 PASS [ 0.096s] horae-core permissions::catalog::tests::direct_profile_defaults_match_the_known_reference_catalog303 PASS [ 0.093s] horae-core permissions::catalog::tests::member_has_only_own_time_and_expense_access304 PASS [ 0.101s] horae-core permissions::catalog::tests::adding_all_catalog_grants_produces_exactly_the_catalog305 PASS [ 0.088s] horae-core permissions::catalog::tests::removing_any_non_floor_grant_keeps_the_remaining_selection_closed306 PASS [ 0.066s] horae-core permissions::person_management::tests::self_link_rejects_the_proposal_in_every_position_without_filtering_it307 PASS [ 0.013s] horae-core project::tests::percentage_preserves_exact_hundredths308 PASS [ 0.018s] horae-core project::tests::fee_schedules_reject_missing_overlong_and_excessive_milestones309 PASS [ 0.022s] horae-core project::tests::basics_reject_overlong_code_and_unsupported_currency310 PASS [ 0.116s] horae-core permissions::catalog::stored_tests::restores_each_valid_grant_pair_and_its_revoked_selection311 Running [ 00:00:00] =====> 157/191: 34 running, 157 passed, 0 skipped 312 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals313 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free314 [ 00:00:00] horae-core :any_compatible_grant_suffices_in_every_pair315 [ 00:00:00] horae-core nt_mismatches_deny_even_all_financial_grants316 [ 00:00:00] horae-core _rate_edit_requires_no_financial_write_grant317 [ 00:00:00] horae-core oving_read_prerequisites_denies_both_actions318 [ 00:00:00] horae-core all_members_and_is_insensitive_to_duplicates319 [ 00:00:00] horae-core rmissions::tests::scope_union_obeys_set_laws320 PASS [ 0.111s] horae-core permissions::catalog::tests::every_declared_dependency_is_added_and_removing_it_removes_the_dependent321 PASS [ 0.117s] horae-core permissions::catalog::stored_tests::restores_each_builtin_selection_without_changing_grants322 PASS [ 0.073s] horae-core permissions::rates::tests::all_six_defaults_have_the_approved_financial_access323 PASS [ 0.091s] horae-core permissions::catalog::tests::template_names_trim_without_changing_display_or_internal_spaces324 PASS [ 0.113s] horae-core permissions::catalog::tests::approve_all_includes_read_scopes_but_not_write_or_expense_management325 PASS [ 0.064s] horae-core permissions::rates::tests::explicit_rate_edits_require_write_even_for_zero_or_an_equal_value326 PASS [ 0.113s] horae-core permissions::catalog::tests::administrator_selection_covers_known_catalog_without_unknown_ids327 PASS [ 0.079s] horae-core permissions::person_management::tests::eligibility_tracks_last_compatible_grant_loss_and_restoration328 PASS [ 0.009s] horae-core state::tests::only_manager_can_approve329 PASS [ 0.014s] horae-core state::tests::invoiced_is_final330 PASS [ 0.085s] horae-core permissions::person_management::tests::own_tracking_floor_does_not_qualify331 PASS [ 0.101s] horae-core permissions::catalog::tests::unknown_permission_names_are_rejected332 PASS [ 0.084s] horae-core permissions::rates::tests::billable_actions_use_only_their_own_grant_and_owner_scope333 PASS [ 0.123s] horae-core permissions::catalog::tests::catalog_has_fifty_distinct_known_grants334 PASS [ 0.060s] horae-core permissions::tests::inactive_or_foreign_context_is_denied_for_every_scope_combination335 PASS [ 0.122s] horae-core permissions::catalog::tests::dependency_graph_matches_the_reference_edges_without_extra_cross_resource_grants336 PASS [ 0.060s] horae-core permissions::tests::every_scope_combination_matches_only_explicitly_granted_dimensions337 PASS [ 0.151s] horae-core permissions::catalog::stored_tests::rejects_each_missing_floor_grant338 PASS [ 0.031s] horae-core project::tests::percentage_rejects_invalid_precision_range_and_syntax339 PASS [ 0.104s] horae-core permissions::catalog::tests::report_and_withdrawal_grants_do_not_add_unrelated_authority340 PASS [ 0.012s] horae-core time_of_day::tests::format_12h_matches_harvest_style341 PASS [ 0.064s] horae-core permissions::tests::assignments_do_not_grant_scope_and_missing_assignments_do_not_match342 PASS [ 0.096s] horae-core permissions::person_management::tests::combined_unrelated_grants_do_not_create_person_management_eligibility343 PASS [ 0.154s] horae-core permissions::approvals::tests::removing_the_last_matching_relationship_revokes_both_domains344 Running [ 00:00:00] =====> 157/191: 34 running, 157 passed, 0 skipped 345 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals346 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free347 [ 00:00:00] horae-core :any_compatible_grant_suffices_in_every_pair348 [ 00:00:00] horae-core nt_mismatches_deny_even_all_financial_grants349 [ 00:00:00] horae-core _rate_edit_requires_no_financial_write_grant350 [ 00:00:00] horae-core oving_read_prerequisites_denies_both_actions351 [ 00:00:00] horae-core all_members_and_is_insensitive_to_duplicates352 [ 00:00:00] horae-core rmissions::tests::scope_union_obeys_set_laws353 Running [ 00:00:00] ======> 183/191: 34 running, 157 passed, 0 skipped 354 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals355 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free356 [ 00:00:00] horae-core :any_compatible_grant_suffices_in_every_pair357 [ 00:00:00] horae-core nt_mismatches_deny_even_all_financial_grants358 [ 00:00:00] horae-core _rate_edit_requires_no_financial_write_grant359 [ 00:00:00] horae-core oving_read_prerequisites_denies_both_actions360 [ 00:00:00] horae-core all_members_and_is_insensitive_to_duplicates361 [ 00:00:00] horae-core rmissions::tests::scope_union_obeys_set_laws362 PASS [ 0.016s] horae-core week::tests::configured_week_can_start_in_the_previous_year363 PASS [ 0.080s] horae-core permissions::rates::tests::unchanged_rate_edit_requires_no_financial_write_grant364 PASS [ 0.081s] horae-core permissions::rates::tests::removing_read_prerequisites_denies_both_actions365 PASS [ 0.040s] horae-core project::tests::monthly_fee_dates_reject_invalid_calendar_inputs366 PASS [ 0.042s] horae-core rounding::tests::effective_minutes_respect_frozen_history_including_zero367 PASS [ 0.020s] horae-core time_of_day::tests::snap_rounds_to_nearest_step368 PASS [ 0.019s] horae-core time_of_day::tests::parse_reads_24h369 PASS [ 0.035s] horae-core rounding::tests::result_is_multiple_of_inc370 PASS [ 0.017s] horae-core week::tests::maps_any_weekday_to_its_monday371 PASS [ 0.050s] horae-core project::tests::fee_schedules_validate_amounts_and_milestone_total372 PASS [ 0.033s] horae-core state::tests::managers_invoice_open_and_approved_time373 PASS [ 0.056s] horae-core project::tests::basics_reject_blank_and_overlong_names374 PASS [ 0.055s] horae-core project::tests::basics_accept_supported_currencies_and_optional_dates375 PASS [ 0.029s] horae-core week::tests::configured_week_reports_an_unrepresentable_start376 PASS [ 0.033s] horae-core time_of_day::tests::clamp_to_day_prevents_crossing_midnight377 PASS [ 0.119s] horae-core permissions::person_management::tests::any_compatible_grant_suffices_in_every_pair378 PASS [ 0.098s] horae-core permissions::rates::tests::identity_and_tenant_mismatches_deny_even_all_financial_grants379 PASS [ 0.086s] horae-core permissions::tests::assignment_matching_searches_all_members_and_is_insensitive_to_duplicates380 PASS [ 0.037s] horae-core types::tests::budget_kind_wire_strings_match_db_enum381 PASS [ 0.046s] horae-core state::tests::member_submit_and_reopen382 PASS [ 0.081s] horae-core permissions::tests::scope_union_obeys_set_laws383 PASS [ 0.066s] horae-core project::tests::basics_accept_same_day_but_reject_reversed_dates384 PASS [ 0.039s] horae-core time_of_day::tests::parse_reads_12h_including_edges385 PASS [ 0.062s] horae-core project::tests::monthly_fee_dates_follow_calendar_months386 PASS [ 0.056s] horae-core rounding::tests::nearest_ties_round_up387 PASS [ 0.058s] horae-core rounding::tests::identity_when_inc_zero388 PASS [ 0.063s] horae-core rounding::tests::up_and_down389 PASS [ 0.050s] horae-core week::tests::configured_week_contains_each_day_for_all_seven_start_days390 Running [ 00:00:00] =======> 189/191: 2 running, 189 passed, 0 skipped 391 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals392 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free393394395396397398399 PASS [ 0.074s] horae-core project::tests::monetary_budgets_are_only_available_for_time_and_materials400 PASS [ 0.073s] horae-core project::tests::payment_terms_support_receipt_and_checked_days401 PASS [ 0.050s] horae-core time_of_day::tests::format_round_trips402 PASS [ 0.056s] horae-core time_of_day::tests::parse_rejects_out_of_range_and_garbage403 Running [ 00:00:00] =======> 189/191: 2 running, 189 passed, 0 skipped 404 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals405 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free406407408409410411412 Running [ 00:00:00] =======> 189/191: 2 running, 189 passed, 0 skipped 413 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals414 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free415416417418419420421 Running [ 00:00:00] =======> 189/191: 2 running, 189 passed, 0 skipped 422 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals423 [ 00:00:00] horae-core mpotent_order_independent_and_duplicate_free424425426427428429430 Running [ 00:00:00] =======> 190/191: 1 running, 190 passed, 0 skipped 431 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals432433434435436437438439 PASS [ 0.238s] horae-core permissions::catalog::tests::normalization_is_idempotent_order_independent_and_duplicate_free440 Running [ 00:00:00] =======> 190/191: 1 running, 190 passed, 0 skipped 441 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals442443444445446447448449 PASS [ 0.531s] horae-core importers::harvest::convert::tests::conversion_matches_exact_scaled_rationals450------------451 Summary [ 0.580s] 191 tests run: 191 passed, 0 skipped452 Running [ 00:00:00] ======== 191/191: 1 running, 190 passed, 0 skipped 453 [ 00:00:00] horae-core s::conversion_matches_exact_scaled_rationals454455456457458459460461The files belonging to this database system will be owned by user "nixbld".462This user must also own the server process.463464The database cluster will be initialized with locale "C".465The default text search configuration will be set to "english".466467Data page checksums are disabled.468469fixing permissions on existing directory /build/tmp.Cs34lHPvxU ... ok470creating subdirectories ... ok471selecting dynamic shared memory implementation ... posix472selecting default "max_connections" ... 100473selecting default "shared_buffers" ... 128MB474selecting default time zone ... UTC475creating configuration files ... ok476running bootstrap script ... ok477performing post-bootstrap initialization ... ok478syncing data to disk ... ok479480initdb: warning: enabling "trust" authentication for local connections481initdb: 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.482483Success. You can now start the database server using:484485 pg_ctl -D /build/tmp.Cs34lHPvxU -l logfile start486487waiting for server to start.... done488server started489+++ command cargo test -p horae --features server -- --test-threads 8490 Compiling horae v0.1.0 (/build/source/crates/horae)491 Compiling horae-core v0.1.0 (/build/source/crates/core)