native_core
make: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/native'
./build/test_garc
PASS: GARC v4 sparse subentries, bounded selected reads, ownership, malformed tables, all truncations
./build/test_lz
PASS: LZ10/LZ11 fixed vectors, overlap, all token lengths, extended size, budgets, malformed input
./build/test_bclim
PASS: BCLIM raw/ETC1/ETC1A4 formats, fixed tile/orientation/color/alpha vectors, crop/stride variants, bounded malformed-input handling
./build/test_etc1
PASS: ETC1 fixed individual/differential vectors, all modifier/selector bits, PICA alpha order, bounds and ETC2 rejection
./build/test_texture
PASS: shared PICA payload format widths, explicit non-power-of-two stride, crop, palette separation and bounded cleanup
./build/test_cgfx
PASS: CGFX 14 PICA formats, borrowed names, backward pointers, selection, crop, layout rejection and bounded malformed cleanup
./build/test_cgfx_model
CGFX static geometry: fixed vectors, shape rebasing, finite/bounds/format rejection passed
./build/test_cgfx_scene
CGFX textured scene: UV/color vectors, named material binding, command masks/state, visibility and rejection passed
./build/test_raster
raster fixed-pixel tests passed
./build/test_field
field parser tests passed
python3 -m unittest discover -s tests -p test_container.py -v
test_bad_sizes_counts_offsets_and_payloads_rejected (test_container.ContainerTests.test_bad_sizes_counts_offsets_and_payloads_rejected) ... ok
test_fixed_index_offsets_names_model_and_texture_metadata (test_container.ContainerTests.test_fixed_index_offsets_names_model_and_texture_metadata) ... ok
test_magic_and_endian_rejections (test_container.ContainerTests.test_magic_and_endian_rejections) ... ok
test_names_must_terminate_inside_data (test_container.ContainerTests.test_names_must_terminate_inside_data) ... ok
test_relocated_image_descriptor_and_missing_pointer (test_container.ContainerTests.test_relocated_image_descriptor_and_missing_pointer) ... ok
test_selected_garc_member_and_cli_errors (test_container.ContainerTests.test_selected_garc_member_and_cli_errors) ... ok
test_truncated_prefixes_rejected (test_container.ContainerTests.test_truncated_prefixes_rejected) ... ok
test_unknown_texture_variant_stays_explicit_and_unparsed (test_container.ContainerTests.test_unknown_texture_variant_stays_explicit_and_unparsed) ... ok

----------------------------------------------------------------------
Ran 8 tests in 1.178s

OK
python3 -m unittest discover -s tests -p test_bch.py -v
test_all_truncated_headers (test_bch.BCHTests.test_all_truncated_headers) ... ok
test_invalid_extents_and_indices (test_bch.BCHTests.test_invalid_extents_and_indices) ... ok
test_name_length_boundary (test_bch.BCHTests.test_name_length_boundary) ... ok
test_names_and_section_relative_offsets (test_bch.BCHTests.test_names_and_section_relative_offsets) ... ok
test_tree_child_and_termination (test_bch.BCHTests.test_tree_child_and_termination) ... ok
test_version_and_read_only (test_bch.BCHTests.test_version_and_read_only) ... ok
test_cli_invalid_inputs_report_errors (test_bch.GRTests.test_cli_invalid_inputs_report_errors) ... ok
test_cli_standalone_and_gr_identity (test_bch.GRTests.test_cli_standalone_and_gr_identity) ... ok
test_headers_counts_and_selections (test_bch.GRTests.test_headers_counts_and_selections) ... ok
test_input_budget (test_bch.GRTests.test_input_budget) ... ok
test_padded_sections_empty_section_and_read_only (test_bch.GRTests.test_padded_sections_empty_section_and_read_only) ... ok
test_truncated_table_and_invalid_extents (test_bch.GRTests.test_truncated_table_and_invalid_extents) ... ok

----------------------------------------------------------------------
Ran 12 tests in 1.233s

OK
python3 -m unittest discover -s tests -p test_pica_commands.py -v
test_all_truncated_byte_extents_and_exact_extent (test_pica_commands.PICACommandTests.test_all_truncated_byte_extents_and_exact_extent) ... ok
test_asymmetric_byte_masks_and_provenance (test_pica_commands.PICACommandTests.test_asymmetric_byte_masks_and_provenance) ... ok
test_budgets_alignment_types_and_empty_stream (test_pica_commands.PICACommandTests.test_budgets_alignment_types_and_empty_stream) ... ok
test_f32_order_auto_increment_and_consecutive_index (test_pica_commands.PICACommandTests.test_f32_order_auto_increment_and_consecutive_index) ... ok
test_incomplete_or_overwritten_uniform_is_not_reported (test_pica_commands.PICACommandTests.test_incomplete_or_overwritten_uniform_is_not_reported) ... ok
test_input_is_unchanged (test_pica_commands.PICACommandTests.test_input_is_unchanged) ... ok
test_padding_is_required_but_its_value_is_uninterpreted (test_pica_commands.PICACommandTests.test_padding_is_required_but_its_value_is_uninterpreted) ... ok
test_register_ids_and_consecutive_overflow (test_pica_commands.PICACommandTests.test_register_ids_and_consecutive_overflow) ... ok
test_repeated_consecutive_writes_and_absolute_sources (test_pica_commands.PICACommandTests.test_repeated_consecutive_writes_and_absolute_sources) ... ok
test_uniform_data_can_span_packets (test_pica_commands.PICACommandTests.test_uniform_data_can_span_packets) ... ok
test_unknown_bytes_do_not_become_known_zeroes (test_pica_commands.PICACommandTests.test_unknown_bytes_do_not_become_known_zeroes) ... ok
test_unsupported_or_uninitialized_uniforms (test_pica_commands.PICACommandTests.test_unsupported_or_uninitialized_uniforms) ... ok

----------------------------------------------------------------------
Ran 12 tests in 0.002s

OK
python3 -m unittest discover -s tests -p test_bch_model.py -v
test_asymmetric_positions_uvs_scales_and_both_index_widths (test_bch_model.BCHModelTests.test_asymmetric_positions_uvs_scales_and_both_index_widths) ... ok
test_cli_summary_gr_selection_and_failed_export (test_bch_model.BCHModelTests.test_cli_summary_gr_selection_and_failed_export) ... ok
test_external_names_and_nullable_units (test_bch_model.BCHModelTests.test_external_names_and_nullable_units) ... ok
test_invalid_relocation_tags_duplicates_overlaps_and_extents (test_bch_model.BCHModelTests.test_invalid_relocation_tags_duplicates_overlaps_and_extents) ... ok
test_model_flags_transform_skinning_and_counts (test_bch_model.BCHModelTests.test_model_flags_transform_skinning_and_counts) ... ok
test_nonfinite_positions_scales_and_over_budget_counts (test_bch_model.BCHModelTests.test_nonfinite_positions_scales_and_over_budget_counts) ... ok
test_obj_geometry_and_exclusive_creation (test_bch_model.BCHModelTests.test_obj_geometry_and_exclusive_creation) ... ok
test_required_pointer_relocations_and_zero_relative_address (test_bch_model.BCHModelTests.test_required_pointer_relocations_and_zero_relative_address) ... ok
test_signed_integer_attributes_preserve_sign_and_scale (test_bch_model.BCHModelTests.test_signed_integer_attributes_preserve_sign_and_scale) ... ok
test_truncated_input_and_model_selection (test_bch_model.BCHModelTests.test_truncated_input_and_model_selection) ... ok
test_unproven_pointer_bytes_bad_topology_and_extra_vertex_buffers (test_bch_model.BCHModelTests.test_unproven_pointer_bytes_bad_topology_and_extra_vertex_buffers) ... ok

----------------------------------------------------------------------
Ran 11 tests in 1.098s

OK
make: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/native'

native_runtime
make: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/native'
./build/pokemon_asset_viewer --demo --inspect
source=synthetic-demo width=256 height=192 pixels=RGBA8
SDL_VIDEODRIVER=dummy ./build/pokemon_asset_viewer --demo --software --frames 3 --self-test-input
[asset-viewer] Video=dummy renderer=software image=256x192. This viewer does not run gameplay.
[asset-viewer] Input self-test passed: pan, zoom, reset, resize, Escape.
[asset-viewer] Exit after 3 rendered frames, 0.048 seconds.
source=synthetic-demo width=256 height=192 pixels=RGBA8
python3 -m unittest discover -s tests -p test_viewer.py -v
test_cgfx_bad_descriptor_and_unsupported_mips (test_viewer.ViewerTests.test_cgfx_bad_descriptor_and_unsupported_mips) ... ok
test_cgfx_selection_listing_and_exported_pixels (test_viewer.ViewerTests.test_cgfx_selection_listing_and_exported_pixels) ... ok
test_etc_archive_pipeline_crop_and_exported_alpha (test_viewer.ViewerTests.test_etc_archive_pipeline_crop_and_exported_alpha) ... ok
test_export_does_not_overwrite_existing_files_or_input (test_viewer.ViewerTests.test_export_does_not_overwrite_existing_files_or_input) ... ok
test_invalid_selection_and_options (test_viewer.ViewerTests.test_invalid_selection_and_options) ... ok
test_missing_member_truncated_archive_and_unsupported_texture (test_viewer.ViewerTests.test_missing_member_truncated_archive_and_unsupported_texture) ... ok
test_raw_and_compressed_pipeline_and_exported_pixels (test_viewer.ViewerTests.test_raw_and_compressed_pipeline_and_exported_pixels) ... ok

----------------------------------------------------------------------
Ran 7 tests in 14.295s

OK
SDL_VIDEODRIVER=dummy ./build/pokemon_model_viewer --demo --software --frames 3 --self-test-input
[model-viewer] Input self-test passed: orbit, zoom, reset, Escape.
[model-viewer] Video=dummy renderer=software; orthographic wireframe.
[model-viewer] Exit after 3 frames.
name="synthetic tetrahedron" vertices=4 triangles=4 shapes=1 bounds_min=(-1,-1,-1) bounds_max=(1,1,1)
SDL_VIDEODRIVER=dummy ./build/pokemon_model_viewer --demo --textured --software --frames 3 --self-test-input
[model-viewer] Input self-test passed: orbit, zoom, reset, Escape.
[model-viewer] Video=dummy renderer=software; orthographic unlit textured software preview; translucency/priority/resource draw order.
[model-viewer] Exit after 3 frames.
name="synthetic tetrahedron" vertices=4 triangles=4 shapes=1 bounds_min=(-1,-1,-1) bounds_max=(1,1,1)
mode=textured shading=unlit-texture-times-vertex-color draws=1 materials=1 textures=1 draw_order=translucency-priority-resource
draw=0 shape=0 material=0 texture=0 indices=12 visible=1 priority=0 depth_write=1 cull=3 blend=0
submission_order=0
python3 -m unittest discover -s tests -p test_model_viewer.py -v
test_archive_and_compression_errors_create_no_capture (test_model_viewer.ModelViewerTests.test_archive_and_compression_errors_create_no_capture) ... ok
test_capture_preserves_existing_file_and_symlink_target (test_model_viewer.ModelViewerTests.test_capture_preserves_existing_file_and_symlink_target) ... ok
test_demo_frame_capture_and_input (test_model_viewer.ModelViewerTests.test_demo_frame_capture_and_input) ... ok
test_demo_inspection_and_help (test_model_viewer.ModelViewerTests.test_demo_inspection_and_help) ... ok
test_invalid_options_are_rejected_before_loading (test_model_viewer.ModelViewerTests.test_invalid_options_are_rejected_before_loading) ... ok
test_raw_and_lz_model_pipeline (test_model_viewer.ModelViewerTests.test_raw_and_lz_model_pipeline) ... ok
test_textured_demo_inspection_capture_and_input (test_model_viewer.ModelViewerTests.test_textured_demo_inspection_capture_and_input) ... ok
test_textured_preview_translucency_order (test_model_viewer.ModelViewerTests.test_textured_preview_translucency_order) ... ok
test_textured_raw_lz_uv_color_alpha_and_blend (test_model_viewer.ModelViewerTests.test_textured_raw_lz_uv_color_alpha_and_blend) ... ok
test_textured_unsupported_state_creates_no_capture (test_model_viewer.ModelViewerTests.test_textured_unsupported_state_creates_no_capture) ... ok

----------------------------------------------------------------------
Ran 10 tests in 28.025s

OK
SDL_VIDEODRIVER=dummy ./build/pokemon_field_viewer --demo --software --frames 3 --self-test-input
[field-viewer] Input self-test passed: marker, zoom, focus, overlay, reset, Escape.
[field-viewer] Video=dummy renderer=software; top-down inspection.
[field-viewer] Exit after 3 frames.
zone=0 area=0 matrix=0 matrix_size=1x1 unique_regions=1 decoded_bytes=0
matrix_cell=(0,0) field=0
field=0 grid=40x40 standard=209 blocked=1390 other=1 collision_triangles=0
marker_start=(10,12) marker=(10,12) accepted=0 rejected=0 policy=exact-standard-cell
marker_world_xz=(189,225) raw_le=00000020 first_triangle_height=none
python3 -m unittest discover -s tests -p test_field_viewer.py -v
test_absent_region_or_standard_cells_remain_inspectable (test_field_viewer.FieldViewerTests.test_absent_region_or_standard_cells_remain_inspectable) ... ok
test_capture_and_no_clobber (test_field_viewer.FieldViewerTests.test_capture_and_no_clobber) ... ok
test_collision_budget_counts_repeated_region_instances (test_field_viewer.FieldViewerTests.test_collision_budget_counts_repeated_region_instances) ... ok
test_help_demo_and_input (test_field_viewer.FieldViewerTests.test_help_demo_and_input) ... ok
test_invalid_cli (test_field_viewer.FieldViewerTests.test_invalid_cli) ... ok
test_large_collision_edges_are_clipped_before_drawing (test_field_viewer.FieldViewerTests.test_large_collision_edges_are_clipped_before_drawing) ... ok
test_malformed_chain_limits_and_no_capture (test_field_viewer.FieldViewerTests.test_malformed_chain_limits_and_no_capture) ... ok
test_multi_region_placement_and_boundary_steps (test_field_viewer.FieldViewerTests.test_multi_region_placement_and_boundary_steps) ... ok
test_raw_lz_chain_and_exact_word_policy (test_field_viewer.FieldViewerTests.test_raw_lz_chain_and_exact_word_policy) ... ok

----------------------------------------------------------------------
Ran 9 tests in 10.989s

OK
make: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/native'

reconstructed
make: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed'
make -C call_wild_battle test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/call_wild_battle'
./build/test_call_wild_battle
PASS: 9 cases; argument snapshot, narrowing, call order, context identity, zero return
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/call_wild_battle'
make -C wild_battle_setup test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/wild_battle_setup'
./build/test_wild_battle_setup
PASS: 65536 flag values; initializer holes; row decoding; optional paths; call order; mutation timing; return propagation; finisher; original wrapper integration
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/wild_battle_setup'
make -C battle_task test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/battle_task'
./build/test_battle_task
PASS: 65536 selector/category pairs; 65536 key pairs; task factory and registration; optional paths; count boundaries; pointer mutation timing; full submit; all three source milestones integrated
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/battle_task'
make -C encounter_builder test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/encounter_builder'
./build/test_encounter_builder
PASS: parameter bytes and holes; branch boundaries; callback timing; 768 weighted draws; signed dynamic counts; 512 config cases; four-milestone integration
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/encounter_builder'
make -C pokemon_constructor test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_constructor'
./build/test_pokemon_constructor
PASS: 66388 parameter normalization cases; 65536 levels; 256 stat counts; 256 ability selectors; 255 explicit forms; sentinel pairs; retries; callback mutation; narrowing and unsigned wrap
PASS: constructor sequencing; raw zero allocations; preserved parameter holes; XOR vectors/round trip; 256 acquire states and 2304 restore masks; callback mutation; parameter normalization; five-milestone integration
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_constructor'
make -C pokemon_data test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_data'
./build/test_pokemon_data
PASS: all 26 setters; 8320 mapping/width cases; 12288 packed-byte cases; 520 corrupt fallback cases; 768 block selections; 4 absent-extra guards; 52 encrypted setter round trips
PASS: 130 population cases; species-zero encoding; 32 block-order rows; 258 ability slots; growth bounds; resource mutation; complete payload comparisons
PASS: Pokemon data population, field setters, storage codec, and six-module integration
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_data'
make -C pokemon_state test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_state'
./build/test_pokemon_state
PASS: 1536 slot field cases; 32 block rows; encoded/locked input; narrowing; invalid slot guards
PASS: direct value widths; name-bit mask; distinct corrupt read/write fallbacks; absent extra
PASS: extra clear; 512 encoded/lock combinations; null extra; four alignment width/order traces; bounds
PASS: derived order; 1792 initial/final lock cases; mode width; manager replacement
PASS: refresh dynamic moves; repeated PP reads; wraparound; unsigned minima; early byte narrowing
PASS: base clear and callback order; captured species; count reload; unsigned levels; 16-bit learnset index wrap; name scratch
PASS: Pokemon state orchestration and seven-module integration
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_state'
make -C pokemon_stats test
make[1]: Entering directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_stats'
./build/test_pokemon_stats
PASS: fixed HP/stat/nature arithmetic; reciprocal boundary; overflow; signed table bytes; full-width nature indices
PASS: growth levels1..100; exact threshold boundaries; unsigned growth; selected resource mutation
PASS: 768 six-stat field cases;32 block rows; codec states; complete extra buffers; fallback and absent-extra guards
PASS: all five stat updates; captured inputs and manager replacement; HP rise/fall/faint/mode/overflow cases
PASS: object cached/fallback level and max HP; repeated no-extra resource computations
PASS: Pokemon stats reconstruction and eight-module integration
make[1]: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed/pokemon_stats'
make: Leaving directory '/mnt/d/Projects/pokemon-x-decomp-local/reconstructed'

analysis
test_32_bit_section_overflow_is_rejected (test_inspect_code.IntakeTests.test_32_bit_section_overflow_is_rejected) ... ok
test_bss_32_bit_overflow_is_rejected (test_inspect_code.IntakeTests.test_bss_32_bit_overflow_is_rejected) ... ok
test_bss_cannot_overlap_other_sections (test_inspect_code.IntakeTests.test_bss_cannot_overlap_other_sections) ... ok
test_bss_only_data_address_must_be_page_aligned (test_inspect_code.IntakeTests.test_bss_only_data_address_must_be_page_aligned) ... ok
test_bss_only_data_is_supported (test_inspect_code.IntakeTests.test_bss_only_data_is_supported) ... ok
test_bss_starts_after_actual_data_not_its_padding (test_inspect_code.IntakeTests.test_bss_starts_after_actual_data_not_its_padding) ... ok
test_cli_cannot_overwrite_inputs (test_inspect_code.IntakeTests.test_cli_cannot_overwrite_inputs) ... error: Output must not overwrite either input
ok
test_cli_writes_json (test_inspect_code.IntakeTests.test_cli_writes_json) ... ok
test_compression_flag_requires_explicit_assertion (test_inspect_code.IntakeTests.test_compression_flag_requires_explicit_assertion) ... ok
test_decompressed_assertion_does_not_bypass_length_check (test_inspect_code.IntakeTests.test_decompressed_assertion_does_not_bypass_length_check) ... ok
test_full_exheader_is_accepted (test_inspect_code.IntakeTests.test_full_exheader_is_accepted) ... ok
test_hashes_and_metadata (test_inspect_code.IntakeTests.test_hashes_and_metadata) ... ok
test_nonzero_size_with_zero_pages_is_rejected (test_inspect_code.IntakeTests.test_nonzero_size_with_zero_pages_is_rejected) ... ok
test_other_exheader_lengths_are_rejected (test_inspect_code.IntakeTests.test_other_exheader_lengths_are_rejected) ... ok
test_overlapping_page_allocations_are_rejected (test_inspect_code.IntakeTests.test_overlapping_page_allocations_are_rejected) ... ok
test_packed_map (test_inspect_code.IntakeTests.test_packed_map) ... ok
test_padded_map_uses_actual_sizes_and_page_strides (test_inspect_code.IntakeTests.test_padded_map_uses_actual_sizes_and_page_strides) ... ok
test_size_cannot_exceed_page_count (test_inspect_code.IntakeTests.test_size_cannot_exceed_page_count) ... ok
test_truncated_extra_and_partially_padded_code_are_rejected (test_inspect_code.IntakeTests.test_truncated_extra_and_partially_padded_code_are_rejected) ... ok
test_unaligned_section_address_is_rejected (test_inspect_code.IntakeTests.test_unaligned_section_address_is_rejected) ... ok
test_zero_bss_is_omitted (test_inspect_code.IntakeTests.test_zero_bss_is_omitted) ... ok
test_crs_external_segments_are_not_treated_as_file_offsets (test_inspect_cro.InspectCroTests.test_crs_external_segments_are_not_treated_as_file_offsets) ... ok
test_import_ownership_and_terminal_batches (test_inspect_cro.InspectCroTests.test_import_ownership_and_terminal_batches) ... ok
test_negative_addend_preserves_raw_and_signed_interpretations (test_inspect_cro.InspectCroTests.test_negative_addend_preserves_raw_and_signed_interpretations) ... ok
test_preserves_outside_target_addend_as_inspection_warning (test_inspect_cro.InspectCroTests.test_preserves_outside_target_addend_as_inspection_warning) ... ok
test_rejects_large_table_before_iteration (test_inspect_cro.InspectCroTests.test_rejects_large_table_before_iteration) ... ok
test_rejects_missing_relocation_target_segment (test_inspect_cro.InspectCroTests.test_rejects_missing_relocation_target_segment) ... ok
test_rejects_module_import_subarray_outside_table (test_inspect_cro.InspectCroTests.test_rejects_module_import_subarray_outside_table) ... ok
test_rejects_patch_site_outside_segment (test_inspect_cro.InspectCroTests.test_rejects_patch_site_outside_segment) ... ok
test_rejects_unterminated_import_batch (test_inspect_cro.InspectCroTests.test_rejects_unterminated_import_batch) ... ok
test_rejects_unterminated_string_at_declared_boundary (test_inspect_cro.InspectCroTests.test_rejects_unterminated_string_at_declared_boundary) ... ok
test_segment_table_indices_and_thumb_pointer_are_preserved (test_inspect_cro.InspectCroTests.test_segment_table_indices_and_thumb_pointer_are_preserved) ... ok
test_unknown_patch_type_is_inspected_but_explicitly_warned (test_inspect_cro.InspectCroTests.test_unknown_patch_type_is_inspected_but_explicitly_warned) ... ok
test_unknown_static_symbol_table_fails_closed (test_inspect_cro.InspectCroTests.test_unknown_static_symbol_table_fails_closed) ... ok
test_explicit_addend_and_32_bit_negative_addend (test_prepare_cro_analysis.RelocationTests.test_explicit_addend_and_32_bit_negative_addend) ... ok
test_preparation_links_both_directions_preserves_inputs_and_unknown_bss (test_prepare_cro_analysis.RelocationTests.test_preparation_links_both_directions_preserves_inputs_and_unknown_bss) ... ok
test_unsupported_operation_is_not_silently_applied (test_prepare_cro_analysis.RelocationTests.test_unsupported_operation_is_not_silently_applied) ... ok
setUpClass (test_windows_extract.WindowsExtractionTests) ... skipped 'Required local tools/script missing: /mnt/d/Projects/pokemon-x-decomp-local/tools/pwsh/pwsh, /mnt/d/Projects/pokemon-x-decomp-local/tools/3dstool-linux/3dstool'
test_modules_preserve_paths_exclude_assets_and_preserve_input (test_windows_modules_extract.ModulesExtractionTests.test_modules_preserve_paths_exclude_assets_and_preserve_input) ... skipped 'Required tool/script missing: /mnt/d/Projects/pokemon-x-decomp-local/tools/pwsh/pwsh'

----------------------------------------------------------------------
Ran 38 tests in 0.054s

OK (skipped=2)
Validated page-padded code; wrote /tmp/tmpt94mqa_f/out/manifest.json
