Skip to content

test: move misfiled unit tests out of tests/ into their modules (T-06) - #392

Merged
jsam merged 2 commits into
mainfrom
fm/il-340-misfiled-tests
Oct 6, 2026
Merged

jsam merged 2 commits into
mainfrom
fm/il-340-misfiled-tests

Conversation

@jsam

@jsam jsam commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Intent

Do GitHub issue #340 in inputlayer/inputlayer, part of the test restructure in TESTING.md: "Testing: Misfiled unit tests (T-06)".

Part of the test strategy (captain, 2026-10-05: scenarios that test the changes together; cleaner, faster suites; TESTING.md). Epic #305.

Scope. Move tests/config_tests.rs into src/config.rs tests (dropping cases already there), serialization_tests.rs into src/value, optimizer_tests.rs into src/optimizer, boundary_value_tests.rs into src/value, the parser half of iql_syntax_tests.rs into src/parser/src/statement, the storage half into the storage component binary (T-07).

Acceptance. Five fewer test binaries; no test deleted without a named duplicate in the PR description; cargo test --lib time unchanged within noise.

Deliver it as a small PR; done means merged with CI green.

What Changed

  • Five integration test binaries removed. tests/optimizer_tests.rs (20 tests), tests/boundary_value_tests.rs (33) and tests/serialization_tests.rs (25) move unchanged apart from inputlayer:: → crate:: imports to src/optimizer/optimizer_tests.rs, src/value/boundary_value_tests.rs and src/value/serialization_tests.rs, each wired in as a #[cfg(test)] module. tests/config_tests.rs and tests/iql_syntax_tests.rs are deleted and their tests redistributed as below.
  • iql_syntax_tests.rs split in two, all 32 tests kept. The 19 parser-only tests become src/statement/iql_syntax_tests.rs; the 13 that need a StorageEngine (rule catalog, rule persistence, view operations, queries with constants) are appended to tests/storage_engine_tests.rs, whose header comment now mentions IQL rules and queries.
  • config_tests.rs folded into the src/config.rs test module: 8 of 27 tests kept, 19 dropped as duplicates. Kept: test_config_default_performance_settings, test_load_config_from_toml, test_load_missing_config_file, test_config_local_overrides_base, test_config_relative_path, test_config_absolute_path, test_config_can_be_cloned, test_config_can_be_debugged. Each dropped test and the existing src/config.rs test that already asserts the same thing:
Dropped from tests/config_tests.rs Duplicate in src/config.rs
test_config_default_storage_path test_default_config
test_config_default_knowledge_graph_name test_default_config
test_config_default_persistence_format test_default_config
test_config_default_compression test_default_config
test_config_valid_formats test_default_config
test_config_valid_compression test_default_config
test_env_var_syntax_documented test_default_config
test_config_default_auto_create_knowledge_graphs test_default_storage_config
test_config_default_auto_save_interval test_default_storage_config
test_config_has_storage_section test_default_storage_config
test_persistence_config_fields test_default_storage_config (save interval), test_default_config (format, compression)
test_config_default_optimization_enabled test_default_optimization_config
test_config_has_optimization_section test_default_optimization_config
test_config_default_logging_level test_default_logging_config
test_config_default_logging_format test_default_logging_config
test_config_valid_log_level test_default_logging_config
test_config_valid_log_format test_default_logging_config
test_config_has_logging_section test_default_logging_config
test_performance_config_fields test_default_performance_config

🤖 Generated with Claude Code

Risk Assessment

✅ Low: Test-only relocation with unchanged test bodies (imports switched to crate paths, one config test wrapped in a figment Jail to isolate it from env-setting sibling tests), five tests/ binaries removed, no production code touched, and every dropped config case has a verified equivalent already in src/config.rs.

Testing

Built the lib unit-test binary and storage_engine_tests at both the base and target commits (base extracted to a throwaway directory under target/, since removed). Compared cargo's test-target list, compared the --list inventory of every affected binary by test name, ran the relocated tests, and timed the full lib test binary three times per commit in alternation. Five targets are gone, no pre-existing lib or storage test disappeared, all 158 relocated lib tests and all 38 storage tests pass, and lib timing overlaps between commits (base 33–58s, target 29–39s on a noisy machine). The only tests not carried over are the 19 config cases named in the declined review-1 decision. No UI surface, so no visual evidence.

  • Live validation: ✅ go - 6 of 6 scenarios driven live against the product
Scenario Result Live Evidence
Developer builds the test suite and cargo discovers five fewer integration test binaries than at base ✅ pass live test-inventory.txt: cargo metadata lists 77 test targets at base and 72 at target; the removed ones are exactly boundary_value_tests, config_tests, iql_syntax_tests, optimizer_tests, serialization_tes…
Developer asks cargo for any of the five old test binaries by name and cargo reports it no longer exists ✅ pass live old-binaries-gone.txt: cargo test --test <name> --no-run returns error: no test target named ... for all five
Developer runs cargo test --lib filtered to the new modules and the relocated config, value, optimizer and parser tests execute and pass ✅ pass live moved-tests-run.txt: 158 passed, 0 failed (config::tests 61, value::boundary_value_tests 33, value::serialization_tests 25, optimizer::optimizer_tests 20, statement::iql_syntax_tests 19)
Developer runs cargo test --test storage_engine_tests and the storage half of iql_syntax_tests runs there alongside the existing storage tests ✅ pass live moved-tests-run.txt and test-inventory.txt: 38 passed, 0 failed; base binary had 25 tests, target has those 25 plus 13 whose names match the old iql_syntax_tests storage cases
Adversarial: no test silently vanished in the move - every test name in the five old binaries and in the base lib and storage binaries is still present at target, apart from the 19 named config duplic… ✅ pass live test-inventory.txt: 0 lib tests and 0 storage tests removed versus base; 33/33 boundary, 25/25 serialization, 20/20 optimizer, 32/32 iql_syntax (19 parser + 13 storage) found by name; config 27 -> 8 c…
Developer runs the full cargo test --lib binary before and after the change and wall-clock time is unchanged within noise ✅ pass live lib-timing.txt: base 58.0s / 37.0s / 33.2s, target 39.2s / 36.9s / 29.1s, alternating runs, all green; the ranges overlap and the 105 added tests add about 1.3s when run alone
Evidence: Test target and test-name inventory, base vs target

Integration test targets (cargo metadata): base efa32cec = 77, target a61d198e = 72 Removed targets: boundary_value_tests, config_tests, iql_syntax_tests, optimizer_tests, serialization_tests lib: base 3240 -> target 3345; lib tests removed: 0 storage_engine_tests: base 25 -> target 38; removed: 0 boundary_value_tests 33 -> value::boundary_value_tests 33 serialization_tests 25 -> value::serialization_tests 25 optimizer_tests 20 -> optimizer::optimizer_tests 20 iql_syntax_tests 32 -> statement::iql_syntax_tests 19 + storage_engine_tests 13 new config_tests 27 -> config::tests gained 8; 19 names not carried over (the dropped duplicates)

Integration test targets (cargo metadata): base efa32cec = 77, target a61d198e = 72
Removed targets:
11d10
< inputlayer::boundary_value_tests
15d13
< inputlayer::config_tests
32d29
< inputlayer::iql_syntax_tests
45d41
< inputlayer::optimizer_tests
56d51
< inputlayer::serialization_tests

Test inventory (from --list of built binaries)
lib: base 3240 -> target 3345; lib tests removed: 0
storage_engine_tests: base 25 -> target 38; removed: 0

Old binary -> new home (by test name)
boundary_value_tests 33 -> value::boundary_value_tests 33
serialization_tests 25 -> value::serialization_tests 25
optimizer_tests 20 -> optimizer::optimizer_tests 20
iql_syntax_tests 32 -> statement::iql_syntax_tests 19 + storage_engine_tests 13 new
config_tests 27 -> config::tests gained 8; 19 names not carried over (the dropped duplicates):
  test_config_default_auto_create_knowledge_graphs
  test_config_default_auto_save_interval
  test_config_default_compression
  test_config_default_knowledge_graph_name
  test_config_default_logging_format
  test_config_default_logging_level
  test_config_default_optimization_enabled
  test_config_default_persistence_format
  test_config_default_storage_path
  test_config_has_logging_section
  test_config_has_optimization_section
  test_config_has_storage_section
  test_config_valid_compression
  test_config_valid_formats
  test_config_valid_log_format
  test_config_valid_log_level
  test_env_var_syntax_documented
  test_performance_config_fields
  test_persistence_config_fields

storage tests added:
  test_drop_nonexistent_view
  test_execute_query_with_rules
  test_multiple_views
  test_query_constant_second_arg
  test_query_with_all_constants
  test_query_with_constant_first_arg
  test_query_with_constant_on_base_relation
  test_recursive_rule_definition
  test_rule_catalog_standalone
  test_rule_catalog_with_storage_engine
  test_rule_persistence
  test_storage_engine_list_relations
  test_view_operations_on_default_knowledge_graph
Evidence: Relocated tests running in their new homes

lib (filtered to the five new modules): test result: ok. 158 passed; 0 failed; 0 ignored; 3187 filtered out; finished in 1.28s storage_engine_tests: test result: ok. 38 passed; 0 failed; 0 ignored; finished in 2.24s

$ cargo test --lib -- config::tests:: value::boundary_value_tests:: value::serialization_tests:: optimizer::optimizer_tests:: statement::iql_syntax_tests::

running 158 tests
test config::tests::test_a_follower_refuses_async_durability ... ok
test config::tests::test_compression_type_serde ... ok
test config::tests::test_auth_with_bootstrap_password ... ok
test config::tests::test_config_absolute_path ... ok
test config::tests::test_config_default_max_result_rows ... ok
test config::tests::test_config_can_be_debugged ... ok
test config::tests::test_config_default_slow_query_log_ms ... ok
test config::tests::test_config_can_be_cloned ... ok
test config::tests::test_config_default_performance_settings ... ok
test config::tests::test_config_relative_path ... ok
test config::tests::test_default_auth_config ... ok
test config::tests::test_default_auth_has_no_bootstrap_password ... ok
test config::tests::test_default_config ... ok
test config::tests::test_config_json_roundtrip ... ok
test config::tests::test_default_gui_config ... ok
test config::tests::test_config_serialization ... ok
test config::tests::test_default_http_config ... ok
test config::tests::test_default_logging_config ... ok
test config::tests::test_default_notification_buffer_size ... ok
test config::tests::test_default_max_wal_size_bytes ... ok
test config::tests::test_default_optimization_config ... ok
test config::tests::test_default_performance_config ... ok
test config::tests::test_default_persist_layer_config ... ok
test config::tests::test_default_rate_limit_config ... ok
test config::tests::test_default_slow_query_log_ms ... ok
test config::tests::test_default_shutdown_timeout_secs ... ok
test config::tests::test_default_stats_timeout_secs ... ok
test config::tests::test_durability_mode_default ... ok
test config::tests::test_default_storage_config ... ok
test config::tests::test_durability_mode_serde ... ok
test config::tests::test_config_toml_roundtrip ... ok
test config::tests::test_http_config_has_rate_limit ... ok
test config::tests::test_ip_net_contains ... ok
test config::tests::test_load_missing_config_file ... ok
test config::tests::test_ip_net_rejects_invalid ... ok
test config::tests::test_config_local_overrides_base ... ok
test optimizer::optimizer_tests::test_always_true_filter ... ok
test config::tests::test_env_overrides_beat_config_file ... ok
test config::tests::test_validate_auto_corrects_zero_notification_buffer ... ok
test config::tests::test_replication_validation_refuses_setups_that_cannot_work ... ok
test config::tests::test_storage_format_serde ... ok
test config::tests::test_validate_caps_subscription_coalesce_window ... ok
test optimizer::optimizer_tests::test_complex_nested_optimization ... ok
test optimizer::optimizer_tests::test_distinct_child_optimized ... ok
test config::tests::test_rate_limit_config_serialization ... ok
test config::tests::test_validate_corrects_zero_ws_auth_timeout ... ok
test config::tests::test_validate_accepts_normal_values ... ok
test config::tests::test_validate_caps_large_notification_buffer ... ok
test optimizer::optimizer_tests::test_always_false_filter ... ok
test config::tests::test_env_override_switches_parameterized_sharing_off ... ok
test optimizer::optimizer_tests::test_empty_union_not_further_optimized ... ok
test optimizer::optimizer_tests::test_multiple_real_filters_preserved ... ok
test optimizer::optimizer_tests::test_boolean_specializer_analyzes_semiring ... ok
test optimizer::optimizer_tests::test_identity_map_nested ... ok
test optimizer::optimizer_tests::test_nested_filters_with_true ... ok
test config::tests::test_validate_auto_corrects_zero_persist_buffer_size ... ok
test optimizer::optimizer_tests::test_default_config_optimizations ... ok
test optimizer::optimizer_tests::test_sip_rewriter_analyzes_joins ... ok
test config::tests::test_env_overrides_apply_without_config_file ... ok
test optimizer::optimizer_tests::test_join_children_optimized ... ok
test config::tests::test_new_config_fields_toml_roundtrip ... ok
test optimizer::optimizer_tests::test_join_planner_analyzes_structure ... ok
test optimizer::optimizer_tests::test_fixpoint_reaches_stable_state ... ok
test optimizer::optimizer_tests::test_scan_not_modified ... ok
test optimizer::optimizer_tests::test_union_children_optimized ... ok
test optimizer::optimizer_tests::test_real_predicate_preserved ... ok
test optimizer::optimizer_tests::test_identity_map_single ... ok
test config::tests::test_rate_limit_zero_means_unlimited ... ok
test optimizer::optimizer_tests::test_non_identity_map_preserved ... ok
test statement::iql_syntax_tests::test_parse_delete_operations ... ok
test statement::iql_syntax_tests::test_mixed_quoted_and_variables ... ok
test optimizer::optimizer_tests::test_subplan_sharing_detects_common_subexpressions ... ok
test statement::iql_syntax_tests::test_parse_meta_commands ... ok
test config::tests::test_ws_idle_timeout_config ... ok
test statement::iql_syntax_tests::test_parse_persistent_rule ... ok
test statement::iql_syntax_tests::test_parse_invalid_statements ... ok
test statement::iql_syntax_tests::test_parse_transient_rule ... ok
test statement::iql_syntax_tests::test_parse_rule_definition_function ... ok
test statement::iql_syntax_tests::test_parse_query ... ok
test statement::iql_syntax_tests::test_parse_insert_operations ... ok
test statement::iql_syntax_tests::test_parse_update_operation ... ok
test config::tests::test_ws_rate_limit_config_roundtrip ... ok
test config::tests::test_trusted_proxies_round_trip ... ok
test statement::iql_syntax_tests::test_quoted_string_accepted_in_fact ... ok
test statement::iql_syntax_tests::test_quoted_string_accepted_in_insert ... ok
test statement::iql_syntax_tests::test_unquoted_atom_rejected_in_fact ... ok
test statement::iql_syntax_tests::test_unquoted_atom_error_message_helpful ... ok
test statement::iql_syntax_tests::test_serializable_rule_roundtrip ... ok
test value::boundary_value_tests::test_float_precision ... ok
test statement::iql_syntax_tests::test_serializable_rule_json ... ok
test value::boundary_value_tests::test_float_large_values ... ok
test value::boundary_value_tests::test_binary_tuple ... ok
test statement::iql_syntax_tests::test_variables_still_work_in_query ... ok
test statement::iql_syntax_tests::test_unquoted_atom_rejected_in_insert ... ok
test value::boundary_value_tests::test_empty_string ... ok
test value::boundary_value_tests::test_float_special_zero ... ok
test statement::iql_syntax_tests::test_unquoted_atom_rejected_in_query ... ok
test value::boundary_value_tests::test_float_small_values ... ok
test config::tests::test_load_config_from_toml ... ok
test value::boundary_value_tests::test_high_arity_tuple_10 ... ok
test value::boundary_value_tests::test_high_arity_tuple_100 ... ok
test value::boundary_value_tests::test_int32_boundary_values ... ok
test value::boundary_value_tests::test_high_arity_tuple_20 ... ok
test value::boundary_value_tests::test_string_with_quotes ... ok
test value::boundary_value_tests::test_long_string_1kb ... ok
test value::boundary_value_tests::test_long_string_100kb ... ok
test value::boundary_value_tests::test_tuple_equality ... ok
test value::boundary_value_tests::test_tuple_to_pair ... ok
test value::boundary_value_tests::test_single_char_string ... ok
test value::boundary_value_tests::test_string_with_special_chars ... ok
test value::boundary_value_tests::test_tuple_from_pair ... ok
test value::boundary_value_tests::test_tuple_to_pair_wrong_arity ... ok
test value::boundary_value_tests::test_tuple_with_all_types ... ok
test value::boundary_value_tests::test_unary_tuple ... ok
test value::boundary_value_tests::test_tuple_with_int64_min ... ok
test value::boundary_value_tests::test_value_equality ... ok
test value::boundary_value_tests::test_tuple_with_int64_boundary_values ... ok
test value::boundary_value_tests::test_value_inequality ... ok
test value::boundary_value_tests::test_unicode_strings ... ok
test value::boundary_value_tests::test_vector_128_dimensions ... ok
test value::boundary_value_tests::test_vector_single_dimension ... ok
test value::boundary_value_tests::test_vector_1024_dimensions ... ok
test value::boundary_value_tests::test_tuple_with_int64_max ... ok
test value::boundary_value_tests::test_zero_variants ... ok
test value::boundary_value_tests::test_vector_two_dimensions ... ok
test value::boundary_value_tests::test_vector_256_dimensions ... ok
test config::tests::test_non_config_env_vars_are_ignored ... ok
test config::tests::test_total_query_memory_defaults_to_60_percent_of_the_cgroup_limit ... ok
test value::serialization_tests::test_bool_json_roundtrip ... ok
test value::serialization_tests::test_float64_json_roundtrip ... ok
test value::serialization_tests::test_integer_boundary_values ... ok
test value::serialization_tests::test_datatype_serialization ... ok
test value::serialization_tests::test_timestamp_json_roundtrip ... ok
test value::serialization_tests::test_int32_json_roundtrip ... ok
test value::serialization_tests::test_null_json_roundtrip ... ok
test value::serialization_tests::test_int64_json_roundtrip ... ok
test value::serialization_tests::test_special_float_values_serialization ... ok
test value::serialization_tests::test_empty_vector_serialization ... ok
test value::serialization_tests::test_string_json_roundtrip ... ok
test value::serialization_tests::test_deeply_nested_tuple_serialization ... ok
test value::serialization_tests::test_float_boundary_values ... ok
test value::serialization_tests::test_malformed_json_handling ... ok
test value::serialization_tests::test_large_value_serialization ... ok
test value::serialization_tests::test_concurrent_serialization ... ok
test config::tests::test_seed_matches_serde_field_defaults ... ok
test value::serialization_tests::test_value_json_format ... ok
test value::serialization_tests::test_tuple_with_vectors_roundtrip ... ok
test value::serialization_tests::test_tuple_json_roundtrip ... ok
test value::serialization_tests::test_value_type_preserved_after_roundtrip ... ok
test value::serialization_tests::test_unicode_string_serialization ... ok
test value::serialization_tests::test_vector_dimension_preserved ... ok
test value::serialization_tests::test_vector_int8_json_roundtrip ... ok
test value::serialization_tests::test_vector_json_roundtrip ... ok
test config::tests::test_shipped_template_parses ... ok
test config::tests::test_storage_aliases_survive_the_seed ... ok
test config::tests::test_replication_section_reads_from_file_and_env ... ok
test config::tests::test_storage_alias_env_var_survives_the_seed ... ok
test value::serialization_tests::test_serialization_performance_sanity ... ok

test result: ok. 158 passed; 0 failed; 0 ignored; 0 measured; 3187 filtered out; finished in 1.28s


$ cargo test --test storage_engine_tests

running 38 tests
test test_config_thread_pool ... ok
test test_config_default ... ok
test test_rule_catalog_standalone ... ok
test test_cannot_drop_default_knowledge_graph ... ok
test test_storage_engine_creation ... ok
test test_cannot_drop_current_knowledge_graph ... ok
test test_query_nonexistent_knowledge_graph ... ok
test test_drop_nonexistent_view ... ok
test test_knowledge_graph_already_exists_error ... ok
test test_insert_without_current_knowledge_graph ... ok
test test_delete_tuples ... ok
test test_insert_and_query ... ok
test test_query_with_all_constants ... ok
test test_query_constant_second_arg ... ok
test test_query_with_constant_first_arg ... ok
test test_insert_multiple_relations ... ok
test test_execute_query_on_specific_knowledge_graph ... ok
test test_query_with_constant_on_base_relation ... ok
test test_create_multiple_knowledge_graphs ... ok
test test_view_operations_on_default_knowledge_graph ... ok
test test_worker_pool_configuration ... ok
test test_use_nonexistent_knowledge_graph ... ok
test test_knowledge_graph_isolation ... ok
test test_insert_into_specific_knowledge_graph ... ok
test test_storage_engine_list_relations ... ok
test test_multi_knowledge_graph_workflow ... ok
test test_drop_knowledge_graph ... ok
test test_execute_query_with_rules ... ok
test test_persistence_metadata ... ok
test test_recursive_rule_definition ... ok
test test_rule_catalog_with_storage_engine ... ok
test test_multiple_views ... ok
test test_rule_persistence ... ok
test test_parallel_queries_on_knowledge_graphs ... ok
test test_same_query_on_multiple_knowledge_graphs ... ok
test test_save_and_load_knowledge_graph ... ok
test test_persistence_with_updates ... ok
test test_save_all_knowledge_graphs ... ok

test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.24s
Evidence: cargo test --lib wall-clock, base vs target (3 alternating runs)

run1 lib-base 57.99s (3239 passed) lib-target 39.15s (3344 passed) run2 lib-base 36.97s lib-target 36.93s run3 lib-base 33.18s lib-target 29.14s

run1 lib-base wall=57.994940774s  test result: ok. 3239 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 57.96s
run1 lib-target wall=39.152683211s  test result: ok. 3344 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 39.12s
run2 lib-base wall=36.970003828s  test result: ok. 3239 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 36.93s
run2 lib-target wall=36.933062019s  test result: ok. 3344 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 36.90s
run3 lib-base wall=33.181733408s  test result: ok. 3239 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 33.15s
run3 lib-target wall=29.135331206s  test result: ok. 3344 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 29.10s
Evidence: Old test binaries no longer exist

$ cargo test --test config_tests --no-run error: no test target named config_tests in default-run packages (same for serialization_tests, optimizer_tests, boundary_value_tests, iql_syntax_tests)

$ cargo test --test config_tests --no-run
error: no test target named `config_tests` in default-run packages
help: available test targets:
    advanced_integration_tests
$ cargo test --test serialization_tests --no-run
error: no test target named `serialization_tests` in default-run packages
help: available test targets:
    advanced_integration_tests
$ cargo test --test optimizer_tests --no-run
error: no test target named `optimizer_tests` in default-run packages
help: available test targets:
    advanced_integration_tests
$ cargo test --test boundary_value_tests --no-run
error: no test target named `boundary_value_tests` in default-run packages
help: available test targets:
    advanced_integration_tests
$ cargo test --test iql_syntax_tests --no-run
error: no test target named `iql_syntax_tests` in default-run packages
help: available test targets:
    advanced_integration_tests

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - 1 info
  • ℹ️ src/config.rs:2117 - Acceptance check "no test deleted without a named duplicate in the PR description": 19 cases from tests/config_tests.rs are dropped and the commit message only says they are "already asserted by src/config.rs tests" without naming them. I verified each has an equivalent in src/config.rs; the PR description should carry this mapping: test_config_default_storage_path, _knowledge_graph_name, _persistence_format, _compression, test_config_valid_formats, test_config_valid_compression, test_env_var_syntax_documented, test_config_has_storage_section -> test_default_config (1707); test_config_default_auto_create_knowledge_graphs, _auto_save_interval, test_persistence_config_fields -> test_default_storage_config (1733); test_config_default_optimization_enabled, test_config_has_optimization_section -> test_default_optimization_config (1741); test_config_default_logging_level, _logging_format, test_config_valid_log_level, test_config_valid_log_format, test_config_has_logging_section -> test_default_logging_config (1750); test_performance_config_fields -> test_default_performance_config (1780) and the kept test_config_default_performance_settings (2117). No other test was deleted: optimizer (20), boundary_value (33), serialization (25) and all 32 iql_syntax tests (19 parser in src/statement/iql_syntax_tests.rs, 13 storage in tests/storage_engine_tests.rs) are present with unchanged bodies.
✅ **Test** - passed

✅ No issues found.

  • Live validation: ✅ go - 6 of 6 scenarios driven live against the product
Scenario Result Live Evidence
Developer builds the test suite and cargo discovers five fewer integration test binaries than at base ✅ pass live test-inventory.txt: cargo metadata lists 77 test targets at base and 72 at target; the removed ones are exactly boundary_value_tests, config_tests, iql_syntax_tests, optimizer_tests, serialization_tes…
Developer asks cargo for any of the five old test binaries by name and cargo reports it no longer exists ✅ pass live old-binaries-gone.txt: cargo test --test &lt;name&gt; --no-run returns error: no test target named ... for all five
Developer runs cargo test --lib filtered to the new modules and the relocated config, value, optimizer and parser tests execute and pass ✅ pass live moved-tests-run.txt: 158 passed, 0 failed (config::tests 61, value::boundary_value_tests 33, value::serialization_tests 25, optimizer::optimizer_tests 20, statement::iql_syntax_tests 19)
Developer runs cargo test --test storage_engine_tests and the storage half of iql_syntax_tests runs there alongside the existing storage tests ✅ pass live moved-tests-run.txt and test-inventory.txt: 38 passed, 0 failed; base binary had 25 tests, target has those 25 plus 13 whose names match the old iql_syntax_tests storage cases
Adversarial: no test silently vanished in the move - every test name in the five old binaries and in the base lib and storage binaries is still present at target, apart from the 19 named config duplic… ✅ pass live test-inventory.txt: 0 lib tests and 0 storage tests removed versus base; 33/33 boundary, 25/25 serialization, 20/20 optimizer, 32/32 iql_syntax (19 parser + 13 storage) found by name; config 27 -> 8 c…
Developer runs the full cargo test --lib binary before and after the change and wall-clock time is unchanged within noise ✅ pass live lib-timing.txt: base 58.0s / 37.0s / 33.2s, target 39.2s / 36.9s / 29.1s, alternating runs, all green; the ranges overlap and the 105 added tests add about 1.3s when run alone
  • cargo metadata --no-deps --format-version 1 at base efa32cec and target a61d198e, diffing targets of kind test (77 -> 72)
  • cargo test --lib --test storage_engine_tests --no-run at target, and at base together with the five old --test binaries
  • --list on the base and target lib and storage_engine_tests binaries and on the five old binaries, mapping each old test name to its new module
  • cargo test --lib -- config::tests:: value::boundary_value_tests:: value::serialization_tests:: optimizer::optimizer_tests:: statement::iql_syntax_tests:: at target (158 passed)
  • cargo test --test storage_engine_tests at target (38 passed, 13 of them new from the storage half of iql_syntax_tests)
  • Full lib unit-test binary run 3x at base and 3x at target, alternating, for wall-clock comparison (all runs green)
  • cargo test --test &lt;name&gt; --no-run for each of config_tests, serialization_tests, optimizer_tests, boundary_value_tests, iql_syntax_tests at target (each: no test target named ...)
⚠️ **Document** - 1 info
  • ℹ️ TESTING.md:31 - TESTING.md Tier 1 says "~1560 tests" for unit tests. This approximate count was already far off before this change (about 3,255 #[test]/#[tokio::test] attributes under src/ at the base commit) and this change adds roughly 105 more by moving tests into the lib binary. Left untouched because the drift is pre-existing and not caused by this change; a follow-up could drop the hand-copied number or refresh it.
✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

jsam added 2 commits October 5, 2026 23:56
…#340)

config_tests, serialization_tests, optimizer_tests, boundary_value_tests
and the parser half of iql_syntax_tests exercise only library types, so
they now build into the lib test binary; the storage half of
iql_syntax_tests joins storage_engine_tests. Five fewer test binaries.
Config cases already asserted by src/config.rs tests are dropped.
@jsam
jsam merged commit 1d1a447 into main Oct 6, 2026
24 checks passed
@jsam
jsam deleted the fm/il-340-misfiled-tests branch October 6, 2026 00:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant