Pcileech/junit-unit.xml

510 lines
124 KiB
XML
Raw Permalink Normal View History

<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="55" skipped="2" tests="582" time="38.021" timestamp="2025-06-13T13:43:11.549964-04:00" hostname="Ramseys-MacBook-Pro.local"><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_power_management_config_defaults" time="0.024" /><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_power_management_generator_init" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_power_declarations_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_power_state_machine_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_link_state_machine_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_clock_gating_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPowerManagementGenerator" name="test_disabled_features" time="0.001" /><testcase classname="tests.test_advanced_sv.TestErrorHandlingGenerator" name="test_error_handling_config_defaults" time="0.001" /><testcase classname="tests.test_advanced_sv.TestErrorHandlingGenerator" name="test_error_declarations_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestErrorHandlingGenerator" name="test_error_detection_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestErrorHandlingGenerator" name="test_error_state_machine_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestErrorHandlingGenerator" name="test_error_logging_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestErrorHandlingGenerator" name="test_error_injection_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPerformanceCounterGenerator" name="test_perf_counter_config_defaults" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPerformanceCounterGenerator" name="test_perf_declarations_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPerformanceCounterGenerator" name="test_transaction_counters_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPerformanceCounterGenerator" name="test_bandwidth_monitoring_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPerformanceCounterGenerator" name="test_device_specific_counters" time="0.001" /><testcase classname="tests.test_advanced_sv.TestPerformanceCounterGenerator" name="test_performance_grading_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_advanced_sv_generator_init" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_module_header_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_device_specific_ports" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_register_logic_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_register_logic_with_variance" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_read_logic_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_interrupt_logic_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_complete_systemverilog_generation" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_systemverilog_with_all_features" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_generate_enhanced_build_integration" time="0.001" /><testcase classname="tests.test_advanced_sv.TestAdvancedSVGenerator" name="test_register_logic_with_special_names" time="0.001" /><testcase classname="tests.test_a
raise AssertionError(
E AssertionError: run('make -s') call not found
During handling of the above exception, another exception occurred:
tests/test_build.py:121: in test_get_donor_info_success
mock_run.assert_any_call("make -s")
E AssertionError: run('make -s') call not found</failure></testcase><testcase classname="tests.test_build.TestDonorInfoExtraction" name="test_get_donor_info_missing_fields" time="0.002"><failure message="Failed: DID NOT RAISE &lt;class 'SystemExit'&gt;">tests/test_build.py:136: in test_get_donor_info_missing_fields
with pytest.raises(SystemExit):
E Failed: DID NOT RAISE &lt;class 'SystemExit'&gt;</failure></testcase><testcase classname="tests.test_build.TestDonorInfoExtraction" name="test_get_donor_info_malformed_output" time="0.002"><failure message="Failed: DID NOT RAISE &lt;class 'SystemExit'&gt;">tests/test_build.py:146: in test_get_donor_info_malformed_output
with pytest.raises(SystemExit):
E Failed: DID NOT RAISE &lt;class 'SystemExit'&gt;</failure></testcase><testcase classname="tests.test_build.TestDriverRegisterScraping" name="test_scrape_driver_regs_success" time="0.001" /><testcase classname="tests.test_build.TestDriverRegisterScraping" name="test_scrape_driver_regs_command_failure" time="0.001" /><testcase classname="tests.test_build.TestDriverRegisterScraping" name="test_scrape_driver_regs_invalid_json" time="0.001" /><testcase classname="tests.test_build.TestBehaviorProfiling" name="test_integrate_behavior_profile_success" time="0.001"><failure message="AssertionError: assert 'behavioral_timing' in {'access_pattern': 'write_then_read', 'dependencies': ['reg_status'], 'function': 'init_device', 'sequences': [{'function': 'init_device', 'operation': 'write', 'position': 0, 'total_ops': 3}], ...}">tests/test_build.py:235: in test_integrate_behavior_profile_success
assert "behavioral_timing" in enhanced_regs[0]["context"]
E AssertionError: assert 'behavioral_timing' in {'access_pattern': 'write_then_read', 'dependencies': ['reg_status'], 'function': 'init_device', 'sequences': [{'function': 'init_device', 'operation': 'write', 'position': 0, 'total_ops': 3}], ...}</failure></testcase><testcase classname="tests.test_build.TestBehaviorProfiling" name="test_integrate_behavior_profile_import_error" time="0.001" /><testcase classname="tests.test_build.TestBehaviorProfiling" name="test_integrate_behavior_profile_profiling_error" time="0.001" /><testcase classname="tests.test_build.TestSystemVerilogGeneration" name="test_build_sv_success" time="0.001" /><testcase classname="tests.test_build.TestSystemVerilogGeneration" name="test_build_sv_no_registers" time="0.001" /><testcase classname="tests.test_build.TestSystemVerilogGeneration" name="test_build_sv_complex_timing" time="0.001" /><testcase classname="tests.test_build.TestStateMachineGeneration" name="test_generate_register_state_machine_simple" time="0.001" /><testcase classname="tests.test_build.TestStateMachineGeneration" name="test_generate_register_state_machine_insufficient_sequences" time="0.001" /><testcase classname="tests.test_build.TestStateMachineGeneration" name="test_generate_device_state_machine" time="0.001" /><testcase classname="tests.test_build.TestStateMachineGeneration" name="test_generate_device_state_machine_empty_regs" time="0.001" /><testcase classname="tests.test_build.TestTCLGeneration" name="test_code_from_bytes_valid" time="0.001" /><testcase classname="tests.test_build.TestTCLGeneration" name="test_code_from_bytes_invalid" time="0.001" /><testcase classname="tests.test_build.TestTCLGeneration" name="test_build_tcl_success" time="0.001" /><testcase classname="tests.test_build.TestTCLGeneration" name="test_build_tcl_unsupported_bar_size" time="0.001"><failure message="assert '128K' in '#\n# PCILeech FPGA Build Script - Compatibility Mode\n#\n\n# Device configuration\n# Vendor ID: 0x8086\n# Device ID: 0x1533\n\ncreate_project test_project . -force\n\n# Set device properties\nset_property -name &quot;VENDOR_ID&quot; -value &quot;0x8086&quot; [current_project]\nset_property -name &quot;DEVICE_ID&quot; -value &quot;0x1533&quot; [current_project]\nset_property -name &quot;SUBSYSTEM_VENDOR_ID&quot; -value &quot;0x8086&quot; [current_project]\nset_property -name &quot;SUBSYSTEM_ID&quot; -value &quot;0x0000&quot; [current_project]\nset_property -name &quot;REVISION_ID&quot; -value &quot;0x03&quot; [current_project]\n\n# BAR Configuration\n# BAR Size: 128_KB\nset_property -name &quot;BAR0_SIZE&quot; -value &quot;128_KB&quot; [current_project]\n\n# Create \'sources_1\' fileset\ncreate_fileset -srcset sources_1\n\n# Include source files\nadd_files -fileset sources_1 -norecurse [file normalize &quot;${origin_dir}/pcileech_tlps128_bar_controller.sv&quot;]\nadd_files -fileset sources_1 -norecurse [file normalize &quot;${origin_dir}/pcileech_tlps128_cfgspace_shadow.sv&quot;]\nadd_files -fileset sources_1 -norecurse [file normalize &quot;${origin_dir}/config_space_init.hex&quot;]\n\n# MSIX Configuration\nset_property -name &quot;MSIX_CAP_ENABLE&quot; -value &quot;1&quot; [current_project]\nset_property -name &quot;MSIX_CAP_TABLE_SIZE&quot; -value &quot;64&quot; [current_project]\nset_property -name &quot;MSIX_CAP_TABLE_BIR&quot; -value &quot;0&quot; [current_project]\n'">tests/test_build.py:455: in test_build_tcl_unsupported_bar_size
assert "128K" in tcl_content
E assert '128K' in '#\n# PCILeech FPGA Build Script - Compatibility Mode\n#\n\n# Device configuration\n# Vendor ID: 0x8086\n# Device ID: 0x1533\n\ncreate_project test_project . -force\n\n# Set device properties\nset_property -name "VENDOR_ID" -value "0x8086" [current_project]\nset_property -name "DEVICE_ID" -value "0x1533" [current_project]\nset_property -name "SUBSYSTEM_VENDOR_ID" -value "0x8086" [current_project]\nset_property -name "SUBSYSTEM_ID" -value "0x0000" [current_project]\nset_property -name "REVISION_ID" -value "0x03" [current_project]\n\n# BAR Configuration\n# BAR Size: 128_KB\nset_property -name "BAR0_SIZE" -value "128_KB" [current_project]\n\n# Create \'sources_1\' fileset\ncreate_fileset -srcset sources_1\n\n# Include source files\nadd_files -fileset sources_1 -norecurse [file normalize "${origin_dir}/pcileech_tlps128_bar_controller.sv"]\nadd_files -fileset sources_1 -norecurse [file normalize "${origin_dir}/pcileech_tlps128_cfgspace_shadow.sv"]\nadd_files -fileset sources_1 -norecurse [file normalize "${origin_dir}/config_space_init.hex"]\n\n# MSIX Configuration\nset_property -name "MSIX_CAP_ENABLE" -value "1" [current_project]\nset_property -name "MSIX_CAP_TABLE_SIZE" -value "64" [current_project]\nset_property -name "MSIX_CAP_TABLE_BIR" -value "0" [current_project]\n'</failure></testcase><testcase classname="tests.test_build.TestBoardConfiguration" name="test_board_info_constants" time="0.001" /><testcase classname="tests.test_build.TestBoardConfiguration" name="test_aperture_constants" time="0.001" /><testcase classname="tests.test_build.TestUtilityFunctions" name="test_run_command_success" time="0.001"><failure message="AssertionError: Expected 'run' to be called once. Called 0 times.">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:988: in assert_called_once_with
raise AssertionError(msg)
E AssertionError: Expected 'run' to be called once. Called 0 times.
During handling of the above exception, another exception occurred:
tests/test_build.py:509: in test_run_command_success
mock_run.assert_called_once_with("echo test", shell=True, check=True)
E AssertionError: Expected 'run' to be called once. Called 0 times.</failure></testcase><testcase classname="tests.test_build.TestUtilityFunctions" name="test_run_command_failure" time="0.001"><failure message="Failed: DID NOT RAISE &lt;class 'subprocess.CalledProcessError'&gt;">tests/test_build.py:516: in test_run_command_failure
with pytest.raises(subprocess.CalledProcessError):
E Failed: DID NOT RAISE &lt;class 'subprocess.CalledProcessError'&gt;</failure></testcase><testcase classname="tests.test_build.TestIntegrationScenarios" name="test_full_build_workflow" time="0.001" /><testcase classname="tests.test_build.TestErrorHandlingAndEdgeCases" name="test_empty_register_list_handling" time="0.001" /><testcase classname="tests.test_build.TestErrorHandlingAndEdgeCases" name="test_malformed_register_data" time="0.001"><failure message="Failed: DID NOT RAISE (&lt;class 'ValueError'&gt;, &lt;class 'TypeError'&gt;)">tests/test_build.py:597: in test_malformed_register_data
with pytest.raises((ValueError, TypeError)):
E Failed: DID NOT RAISE (&lt;class 'ValueError'&gt;, &lt;class 'TypeError'&gt;)</failure></testcase><testcase classname="tests.test_build.TestErrorHandlingAndEdgeCases" name="test_missing_context_data" time="0.001" /><testcase classname="tests.test_build.TestPerformanceAndScaling" name="test_large_register_set_generation" time="0.003" /><testcase classname="tests.test_build.TestPerformanceAndScaling" name="test_memory_usage_with_large_datasets" time="0.002" /><testcase classname="tests.test_build.TestRegressionPrevention" name="test_register_offset_formatting" time="0.001" /><testcase classname="tests.test_build.TestRegressionPrevention" name="test_special_character_handling_in_names" time="0.001" /><testcase classname="tests.test_build.TestRegressionPrevention" name="test_timing_calculation_edge_cases" time="0.001" /><testcase classname="tests.test_build_integration.TestBuildWithExternalExamples" name="test_build_sv_with_example_registers" time="0.004" /><testcase classname="tests.test_build_integration.TestBuildWithExternalExamples" name="test_build_tcl_with_example_donor_info" time="0.001" /><testcase classname="tests.test_build_integration.TestBuildWithExternalExamples" name="test_full_build_workflow_with_example_data" time="0.001"><failure message="NameError: name 'build' is not defined">tests/test_build_integration.py:271: in test_full_build_workflow_with_example_data
build.build_sv(enhanced_regs, sv_file)
E NameError: name 'build' is not defined</failure></testcase><testcase classname="tests.test_build_integration.TestBuildWithExternalExamples" name="test_behavior_profiling_integration" time="0.001"><failure message="NameError: name 'build' is not defined">tests/test_build_integration.py:319: in test_behavior_profiling_integration
enhanced_regs = build.integrate_behavior_profile(
E NameError: name 'build' is not defined</failure></testcase><testcase classname="tests.test_build_integration.TestAdvancedSVWithExternalExamples" name="test_advanced_sv_with_example_registers" time="0.002" /><testcase classname="tests.test_build_integration.TestAdvancedSVWithExternalExamples" name="test_variance_model_with_example_registers" time="0.001" /><testcase classname="tests.test_build_integration.TestBuildScriptIntegration" name="test_build_script_with_example_files" time="0.003"><failure message="NameError: name 'build' is not defined">tests/test_build_integration.py:585: in test_build_script_with_example_files
if hasattr(build, "build_fpga"):
E NameError: name 'build' is not defined</failure></testcase><testcase classname="tests.test_build_integration.TestBuildScriptIntegration" name="test_tcl_script_execution_with_example" time="0.002"><failure message="NameError: name 'build' is not defined">tests/test_build_integration.py:620: in test_tcl_script_execution_with_example
build.run(cmd)
E NameError: name 'build' is not defined</failure></testcase><testcase classname="tests.test_capability_pruning_enhanced.TestCapabilityPruningEnhanced" name="test_capability_chain_integrity" time="0.001" /><testcase classname="tests.test_capability_pruning_enhanced.TestCapabilityPruningEnhanced" name="test_complex_capability_configuration" time="0.001"><failure message="AssertionError: unexpectedly None">tests/test_capability_pruning_enhanced.py:443: in test_complex_capability_configuration
self.assertIsNotNone(find_cap(pruned_config, PCICapabilityID.PCI_EXPRESS.value))
E AssertionError: unexpectedly None</failure></testcase><testcase classname="tests.test_capability_pruning_enhanced.TestCapabilityPruningEnhanced" name="test_empty_capability_chain" time="0.001" /><testcase classname="tests.test_capability_pruning_enhanced.TestCapabilityPruningEnhanced" name="test_extended_capability_pruning" time="0.001"><failure message="AssertionError: 1 != 4">tests/test_capability_pruning_enhanced.py:362: in test_extended_capability_pruning
self.assertEqual(len(ext_caps), 4)
E AssertionError: 1 != 4</failure></testcase><testcase classname="tests.test_capability_pruning_enhanced.TestCapabilityPruningEnhanced" name="test_pcie_capability_modification" time="0.001" /><testcase classname="tests.test_capability_pruning_enhanced.TestCapabilityPruningEnhanced" name="test_pruning_specific_capability_types" time="0.001"><failure message="AssertionError: 1 != 5">tests/test_capability_pruning_enhanced.py:176: in test_pruning_specific_capability_types
self.assertEqual(len(caps), 5)
E AssertionError: 1 != 5</failure></testcase><testcase classname="tests.test_capability_pruning_integration.TestCapabilityPruningIntegration" name="test_capability_pruning_disabled" time="0.002" /><testcase classname="tests.test_capability_pruning_integration.TestCapabilityPruningIntegration" name="test_capability_pruning_integration" time="0.002"><failure message="AssertionError: False is not true">tests/test_capability_pruning_integration.py:310: in test_capability_pruning_integration
self.assertTrue(os.path.exists(self.config_hex_path))
E AssertionError: False is not true</failure></testcase><testcase classname="tests.test_config_space_extraction.TestConfigSpaceExtraction" name="test_save_config_space_hex" time="0.002" /><testcase classname="tests.test_config_space_extraction.TestConfigSpaceExtraction" name="test_save_donor_info_with_config_space" time="0.002" /><testcase classname="tests.test_config_space_extraction.TestConfigSpaceExtraction" name="test_setup_module_with_config_extraction" time="0.001" /><testcase classname="tests.test_config_space_extraction.TestConfigSpaceExtraction" name="test_synthetic_config_space_generation" time="0.006" /><testcase classname="tests.test_config_space_integration.TestConfigSpaceIntegration" name="test_build_process_integration" time="0.002"><failure message="AssertionError: Expected 'get_donor_info' to have been called once. Called 0 times.">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:956: in assert_called_once
raise AssertionError(msg)
E AssertionError: Expected 'get_donor_info' to have been called once. Called 0 times.
During handling of the above exception, another exception occurred:
tests/test_config_space_integration.py:130: in test_build_process_integration
mock_get_donor_info.assert_called_once()
E AssertionError: Expected 'get_donor_info' to have been called once. Called 0 times.</failure></testcase><testcase classname="tests.test_config_space_integration.TestConfigSpaceIntegration" name="test_build_tcl_includes_config_space_hex" time="0.001" /><testcase classname="tests.test_config_space_integration.TestConfigSpaceIntegration" name="test_get_donor_info_with_config_space" time="0.001" /><testcase classname="tests.test_config_space_shadow.TestConfigSpaceShadow" name="test_save_config_space_hex" time="0.001"><failure message="AssertionError: 1024 != 512">tests/test_config_space_shadow.py:64: in test_save_config_space_hex
self.assertEqual(len(lines), 512)
E AssertionError: 1024 != 512</failure></testcase><testcase classname="tests.test_config_space_shadow.TestConfigSpaceShadow" name="test_save_donor_info_with_config_space" time="0.002" /><testcase classname="tests.test_config_space_shadow.TestConfigSpaceShadow" name="test_setup_module_with_config_extraction" time="0.001" /><testcase classname="tests.test_config_space_shadow.TestConfigSpaceShadow" name="test_synthetic_config_space_generation" time="0.006" /><testcase classname="tests.test_config_space_shadow_enhanced.TestConfigSpaceShadowEnhanced" name="test_config_space_boundary_conditions" time="0.003" /><testcase classname="tests.test_config_space_shadow_enhanced.TestConfigSpaceShadowEnhanced" name="test_extended_config_space_access" time="0.003" /><testcase classname="tests.test_config_space_shadow_enhanced.TestConfigSpaceShadowEnhanced" name="test_overlay_ram_fields" time="0.004" /><testcase classname="tests.test_config_space_shadow_enhanced.TestConfigSpaceShadowEnhanced" name="test_synthetic_config_space_with_specific_fields" time="0.006" /><testcase classname="tests.test_donor_dump.TestKernelModuleBuild" name="test_module_compilation_success" time="0.001" /><testcase classname="tests.test_donor_dump.TestKernelModuleBuild" name="test_module_compilation_failure" time="0.001" /><testcase classname="tests.test_donor_dump.TestKernelModuleBuild" name="test_kernel_headers_check" time="0.001" /><testcase classname="tests.test_donor_dump.TestModuleParameters" name="test_bdf_parameter_validation" time="0.001" /><testcase classname="tests.test_donor_dump.TestModuleParameters" name="test_module_parameter_parsing" time="0.001" /><testcase classname="tests.test_donor_dump.TestModuleLoading" name="test_module_loading_success" time="0.001" /><testcase classname="tests.test_donor_dump.TestModuleLoading" name="test_module_loading_failure" time="0.001" /><testcase classname="tests.test_donor_dump.TestModuleLoading" name="test_module_unloading" time="0.001" /><testcase classname="tests.test_donor_dump.TestModuleLoading" name="test_module_already_loaded_handling" time="0.001" /><testcase classname="tests.test_donor_dump.TestProcInterface" name="test_proc_donor_dump_output_parsing" time="0.001" /><testcase classname="tests.test_donor_dump.TestProcInterface" name="test_proc_output_missing_fields" time="0.001" /><testcase classname="tests.test_donor_dump.TestProcInterface" name="test_proc_output_malformed" time="0.001" /><testcase classname="tests.test_donor_dump.TestDeviceAccess" name="test_pci_config_space_access_simulation" time="0.001" /><testcase classname="tests.test_donor_dump.TestDeviceAccess" name="test_bar_size_calculation" time="0.001" /><testcase classname="tests.test_donor_dump.TestDeviceAccess" name="test_extended_config_space_access" time="0.001" /><testcase classname="tests.test_donor_dump.TestErrorHandling" name="test_device_not_found_error" time="0.001" /><testcase classname="tests.test_donor_dump.TestErrorHandling" name="test_permission_denied_error" time="0.001" /><testcase classname="tests.test_donor_dump.TestErrorHandling" name="test_module_build_dependency_missing" time="0.001" /><testcase classname="tests.test_donor_dump.TestErrorHandling" name="test_invalid_bdf_parameter_handling" time="0.001" /><testcase classname="tests.test_donor_dump.TestHardwareSimulation" name="test_simulated_pci_device_data" time="0.001" /><testcase classname="tests.test_donor_dump.TestHardwareSimulation" name="test_simulated_config_space_data" time="0.001" /><testcase classname="tests.test_donor_dump.TestMakefileValidation" name="test_makefile_exists" time="0.001" /><testcase classname="tests.test_donor_dump.TestMakefileValidation" name="test_makefile_targets" time="0.002" /><testcase classname="tests.test_donor_dump.TestMakefileValidation" name="test_kernel_version_compatibility" time="0.001" /><testcase classname="tests.test_donor_dump.TestDonorDumpManager" name="test_manager_initialization" time="0.001" /><testcase classname="tests.test_donor_dump.TestDonorDumpManager" name="test_check_kernel_headers_available" time="0.001" /><testcas
self.assertTrue(os.path.exists(self.config_hex_path))
E AssertionError: False is not true</failure></testcase><testcase classname="tests.test_feature_integration.TestFeatureIntegration" name="test_capability_pruning" time="0.002" /><testcase classname="tests.test_feature_integration.TestFeatureIntegration" name="test_config_space_shadow_integration" time="0.001" /><testcase classname="tests.test_feature_integration.TestFeatureIntegration" name="test_deterministic_variance_seeding" time="0.001" /><testcase classname="tests.test_feature_integration.TestFeatureIntegration" name="test_msix_table_replication" time="0.001"><failure message="AssertionError: 'MSIX_CAP_TABLE_OFFSET' not found in '#\n# PCILeech FPGA Build Script - Compatibility Mode\n#\n\n# Device configuration\n# Vendor ID: 0x8086\n# Device ID: 0x1533\n\ncreate_project test_project . -force\n\n# Set device properties\nset_property -name &quot;VENDOR_ID&quot; -value &quot;0x8086&quot; [current_project]\nset_property -name &quot;DEVICE_ID&quot; -value &quot;0x1533&quot; [current_project]\nset_property -name &quot;SUBSYSTEM_VENDOR_ID&quot; -value &quot;0x8086&quot; [current_project]\nset_property -name &quot;SUBSYSTEM_ID&quot; -value &quot;0x0000&quot; [current_project]\nset_property -name &quot;REVISION_ID&quot; -value &quot;0x03&quot; [current_project]\n\n# BAR Configuration\n# BAR Size: 128_KB\nset_property -name &quot;BAR0_SIZE&quot; -value &quot;128_KB&quot; [current_project]\n\n# Create \'sources_1\' fileset\ncreate_fileset -srcset sources_1\n\n# Include source files\nadd_files -fileset sources_1 -norecurse [file normalize &quot;${origin_dir}/pcileech_tlps128_bar_controller.sv&quot;]\nadd_files -fileset sources_1 -norecurse [file normalize &quot;${origin_dir}/pcileech_tlps128_cfgspace_shadow.sv&quot;]\nadd_files -fileset sources_1 -norecurse [file normalize &quot;${origin_dir}/config_space_init.hex&quot;]\n\n# MSIX Configuration\nset_property -name &quot;MSIX_CAP_ENABLE&quot; -value &quot;1&quot; [current_project]\nset_property -name &quot;MSIX_CAP_TABLE_SIZE&quot; -value &quot;64&quot; [current_project]\nset_property -name &quot;MSIX_CAP_TABLE_BIR&quot; -value &quot;0&quot; [current_project]\n'">tests/test_feature_integration.py:199: in test_msix_table_replication
self.assertIn("MSIX_CAP_TABLE_OFFSET", tcl_content)
E AssertionError: 'MSIX_CAP_TABLE_OFFSET' not found in '#\n# PCILeech FPGA Build Script - Compatibility Mode\n#\n\n# Device configuration\n# Vendor ID: 0x8086\n# Device ID: 0x1533\n\ncreate_project test_project . -force\n\n# Set device properties\nset_property -name "VENDOR_ID" -value "0x8086" [current_project]\nset_property -name "DEVICE_ID" -value "0x1533" [current_project]\nset_property -name "SUBSYSTEM_VENDOR_ID" -value "0x8086" [current_project]\nset_property -name "SUBSYSTEM_ID" -value "0x0000" [current_project]\nset_property -name "REVISION_ID" -value "0x03" [current_project]\n\n# BAR Configuration\n# BAR Size: 128_KB\nset_property -name "BAR0_SIZE" -value "128_KB" [current_project]\n\n# Create \'sources_1\' fileset\ncreate_fileset -srcset sources_1\n\n# Include source files\nadd_files -fileset sources_1 -norecurse [file normalize "${origin_dir}/pcileech_tlps128_bar_controller.sv"]\nadd_files -fileset sources_1 -norecurse [file normalize "${origin_dir}/pcileech_tlps128_cfgspace_shadow.sv"]\nadd_files -fileset sources_1 -norecurse [file normalize "${origin_dir}/config_space_init.hex"]\n\n# MSIX Configuration\nset_property -name "MSIX_CAP_ENABLE" -value "1" [current_project]\nset_property -name "MSIX_CAP_TABLE_SIZE" -value "64" [current_project]\nset_property -name "MSIX_CAP_TABLE_BIR" -value "0" [current_project]\n'</failure></testcase><testcase classname="tests.test_feature_integration_enhanced.TestFeatureIntegrationEnhanced" name="test_config_space_shadow_with_pruned_capabilities" time="0.002" /><testcase classname="tests.test_feature_integration_enhanced.TestFeatureIntegrationEnhanced" name="test_deterministic_variance_with_pruned_config_space" time="0.001" /><testcase classname="tests.test_feature_integration_enhanced.TestFeatureIntegrationEnhanced" name="test_end_to_end_integration" time="0.002" /><testcase classname="tests.test_feature_integration_enhanced.TestFeatureIntegrationEnhanced" name="test_msix_table_replication_with_pruned_capabilities" time="0.001" /><testcase classname="tests.test_feature_integration_enhanced.TestFeatureIntegrationEnhanced" name="test_reproducibility_across_builds" time="0.001" /><testcase classname="tests.test_flash_fpga.TestCommandExecution" name="test_run_command_success" time="0.001" /><testcase classname="tests.test_flash_fpga.TestCommandExecution" name="test_run_command_failure" time="0.001" /><testcase classname="tests.test_flash_fpga.TestArgumentParsing" name="test_argument_parser_creation" time="0.001" /><testcase classname="tests.test_flash_fpga.TestArgumentParsing" name="test_argument_parser_missing_bitfile" time="0.001" /><testcase classname="tests.test_flash_fpga.TestUSBLoaderValidation" name="test_usbloader_available" time="0.001" /><testcase classname="tests.test_flash_fpga.TestUSBLoaderValidation" name="test_usbloader_not_available" time="0.001" /><testcase classname="tests.test_flash_fpga.TestBitfileValidation" name="test_bitfile_exists" time="0.001" /><testcase classname="tests.test_flash_fpga.TestBitfileValidation" name="test_bitfile_not_exists" time="0.001" /><testcase classname="tests.test_flash_fpga.TestFlashingProcess" name="test_flash_process_success" time="0.001" /><testcase classname="tests.test_flash_fpga.TestFlashingProcess" name="test_flash_process_no_usbloader" time="0.001" /><testcase classname="tests.test_flash_fpga.TestFlashingProcess" name="test_flash_process_no_bitfile" time="0.001" /><testcase classname="tests.test_flash_fpga.TestVIDPIDConfiguration" name="test_default_vidpid" time="0.001" /><testcase classname="tests.test_flash_fpga.TestVIDPIDConfiguration" name="test_flash_command_format" time="0.001" /><testcase classname="tests.test_flash_fpga.TestErrorHandling" name="test_usbloader_command_failure" time="0.001" /><testcase classname="tests.test_flash_fpga.TestErrorHandling" name="test_usbloader_permission_error" time="0.001" /><testcase classname="tests.test_flash_fpga.TestErrorHandling" name="test_invalid_bitfile_path" time="0.001" /><testcase classname="tests.test_flash_fpga.TestIntegrationScenarios" name="test_complete_flash_workflow"
devices = generate.list_pci_devices()
generate.py:96: in list_pci_devices
check_linux_requirement("PCIe device enumeration")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: PCIe device enumeration requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestPCIDeviceEnumeration" name="test_list_pci_devices_empty" time="0.001"><failure message="RuntimeError: PCIe device enumeration requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:83: in test_list_pci_devices_empty
devices = generate.list_pci_devices()
generate.py:96: in list_pci_devices
check_linux_requirement("PCIe device enumeration")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: PCIe device enumeration requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestPCIDeviceEnumeration" name="test_list_pci_devices_malformed" time="0.001"><failure message="RuntimeError: PCIe device enumeration requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:90: in test_list_pci_devices_malformed
devices = generate.list_pci_devices()
generate.py:96: in list_pci_devices
check_linux_requirement("PCIe device enumeration")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: PCIe device enumeration requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestDeviceSelection" name="test_choose_device_valid_selection" time="0.001" /><testcase classname="tests.test_generate.TestDeviceSelection" name="test_choose_device_invalid_then_valid" time="0.001" /><testcase classname="tests.test_generate.TestDriverManagement" name="test_get_current_driver_exists" time="0.001"><failure message="RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:129: in test_get_current_driver_exists
driver = generate.get_current_driver("0000:03:00.0")
generate.py:132: in get_current_driver
check_linux_requirement("Driver detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestDriverManagement" name="test_get_current_driver_none" time="0.001"><failure message="RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:138: in test_get_current_driver_none
driver = generate.get_current_driver("0000:03:00.0")
generate.py:132: in get_current_driver
check_linux_requirement("Driver detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestDriverManagement" name="test_get_current_driver_invalid_bdf" time="0.001"><failure message="RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:144: in test_get_current_driver_invalid_bdf
generate.get_current_driver("invalid-bdf")
generate.py:132: in get_current_driver
check_linux_requirement("Driver detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestDriverManagement" name="test_get_iommu_group" time="0.001"><failure message="RuntimeError: IOMMU group detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:153: in test_get_iommu_group
group = generate.get_iommu_group("0000:03:00.0")
generate.py:147: in get_iommu_group
check_linux_requirement("IOMMU group detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: IOMMU group detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestDriverManagement" name="test_get_iommu_group_invalid_bdf" time="0.001"><failure message="RuntimeError: IOMMU group detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:162: in test_get_iommu_group_invalid_bdf
generate.get_iommu_group("invalid-bdf")
generate.py:147: in get_iommu_group
check_linux_requirement("IOMMU group detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: IOMMU group detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestVFIOBinding" name="test_bind_to_vfio_success" time="0.001"><failure message="RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:174: in test_bind_to_vfio_success
generate.bind_to_vfio("0000:03:00.0", "8086", "1533", "e1000e")
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestVFIOBinding" name="test_bind_to_vfio_no_original_driver" time="0.001"><failure message="RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:189: in test_bind_to_vfio_no_original_driver
generate.bind_to_vfio("0000:03:00.0", "8086", "1533", None)
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestVFIOBinding" name="test_bind_to_vfio_driver_not_available" time="0.001"><failure message="AssertionError: Regex pattern did not match.&#10; Regex: 'vfio-pci driver not available'&#10; Input: 'VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.'">tests/test_generate.py:203: in test_bind_to_vfio_driver_not_available
generate.bind_to_vfio("0000:03:00.0", "8086", "1533", "e1000e")
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.
During handling of the above exception, another exception occurred:
tests/test_generate.py:202: in test_bind_to_vfio_driver_not_available
with pytest.raises(RuntimeError, match="vfio-pci driver not available"):
E AssertionError: Regex pattern did not match.
E Regex: 'vfio-pci driver not available'
E Input: 'VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.'</failure></testcase><testcase classname="tests.test_generate.TestVFIOBinding" name="test_bind_to_vfio_invalid_bdf" time="0.001"><failure message="RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:208: in test_bind_to_vfio_invalid_bdf
generate.bind_to_vfio("invalid-bdf", "8086", "1533", "e1000e")
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestDriverRestore" name="test_restore_original_driver_success" time="16.176"><failure message="AssertionError: Calls not found.&#10;Expected: [call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind'),&#10; call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind')]&#10; Actual: [call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),&#10; call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),&#10; call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),&#10; call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10),&#10; call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10),&#10; call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10)]&#10;&#10;pytest introspection follows:&#10;&#10;Kwargs:&#10;assert {'timeout': 10} == {}&#10; &#10; Left contains 1 more item:&#10; #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m&#10; &#10; Full diff:&#10; #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10;Args:&#10;assert ('echo 0000:0...-pci/unbind',) == ('echo 0000:0...e1000e/bind',)&#10; &#10; At index 0 diff: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m != #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; &#10; Full diff:&#10; #x1B[0m#x1B[90m #x1B[39;49;00m (#x1B[90m#x1B[39;49;00m&#10; #x1B[91m- 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; ? ^^^^^^#x1B[90m#x1B[39;49;00m...&#10; &#10; ...Full output truncated (3 lines hidden), use '-vv' to show&#10;Kwargs:&#10;assert {'timeout': 10} == {}&#10; &#10; Left contains 1 more item:&#10; #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m&#10; &#10; Full diff:&#10; #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10;Args:&#10;assert ('echo 0000:0...-pci/unbind',) == ()&#10; &#10; Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; &#10; Full diff:&#10; #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10;Kwargs:&#10;assert {'timeout': 10} == {}&#10; &#10; Left contains 1 more item:&#10; #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m&#10; &#10; Full diff:&#10; #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10;Args:&#10;assert ('echo 0000:0...e1000e/bind',) == ()&#10; &#10; Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[
raise AssertionError(
E AssertionError: Calls not found.
E Expected: [call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind'),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind')]
E Actual: [call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10)]
During handling of the above exception, another exception occurred:
tests/test_generate.py:230: in test_restore_original_driver_success
mock_run.assert_has_calls(expected_calls)
E AssertionError: Calls not found.
E Expected: [call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind'),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind')]
E Actual: [call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10),
E call('echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind', timeout=10)]
E
E pytest introspection follows:
E
E Kwargs:
E assert {'timeout': 10} == {}
E
E Left contains 1 more item:
E #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Args:
E assert ('echo 0000:0...-pci/unbind',) == ('echo 0000:0...e1000e/bind',)
E
E At index 0 diff: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m != #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[90m #x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
E #x1B[91m- 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E ? ^^^^^^#x1B[90m#x1B[39;49;00m...
E
E ...Full output truncated (3 lines hidden), use '-vv' to show
E Kwargs:
E assert {'timeout': 10} == {}
E
E Left contains 1 more item:
E #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Args:
E assert ('echo 0000:0...-pci/unbind',) == ()
E
E Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/vfio-pci/unbind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Kwargs:
E assert {'timeout': 10} == {}
E
E Left contains 1 more item:
E #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Args:
E assert ('echo 0000:0...e1000e/bind',) == ()
E
E Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Kwargs:
E assert {'timeout': 10} == {}
E
E Left contains 1 more item:
E #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Args:
E assert ('echo 0000:0...e1000e/bind',) == ()
E
E Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Kwargs:
E assert {'timeout': 10} == {}
E
E Left contains 1 more item:
E #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Args:
E assert ('echo 0000:0...e1000e/bind',) == ()
E
E Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mecho 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'echo 0000:03:00.0 &gt; /sys/bus/pci/drivers/e1000e/bind',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E Kwargs:
E assert {'timeout': 10} == {}
E
E Left contains 1 more item:
E #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mtimeout#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[94m10#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- {}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ {#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'timeout': 10,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ }#x1B[39;49;00m#x1B[90m#x1B[39;49;00m</failure></testcase><testcase classname="tests.test_generate.TestDriverRestore" name="test_restore_original_driver_not_vfio" time="0.001" /><testcase classname="tests.test_generate.TestDriverRestore" name="test_restore_original_driver_no_original" time="0.001" /><testcase classname="tests.test_generate.TestUSBDeviceManagement" name="test_list_usb_devices_success" time="0.001" /><testcase classname="tests.test_generate.TestUSBDeviceManagement" name="test_list_usb_devices_command_error" time="0.001" /><testcase classname="tests.test_generate.TestUSBDeviceManagement" name="test_select_usb_device_success" time="0.001" /><testcase classname="tests.test_generate.TestUSBDeviceManagement" name="test_select_usb_device_no_devices" time="0.001" /><testcase classname="tests.test_generate.TestFirmwareFlashing" name="test_flash_firmware_success" time="0.001" /><testcase classname="tests.test_generate.TestFirmwareFlashing" name="test_flash_firmware_no_usbloader" time="0.002" /><testcase classname="tests.test_generate.TestFirmwareFlashing" name="test_flash_firmware_command_failure" time="0.001" /><testcase classname="tests.test_generate.TestContainerExecution" name="test_run_build_container_success" time="0.002"><failure message="RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:365: in test_run_build_container_success
generate.run_build_container("0000:03:00.0", "75t", "/dev/vfio/15", mock_args)
generate.py:717: in run_build_container
_validate_vfio_device_access(vfio_device, bdf)
generate.py:645: in _validate_vfio_device_access
current_driver = get_current_driver(bdf)
generate.py:132: in get_current_driver
check_linux_requirement("Driver detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestContainerExecution" name="test_run_build_container_no_vfio_device" time="0.002"><failure message="AssertionError: Regex pattern did not match.&#10; Regex: 'VFIO device .* not found'&#10; Input: 'Podman not found in PATH. Please install Podman container runtime.'">tests/test_generate.py:394: in test_run_build_container_no_vfio_device
generate.run_build_container(
generate.py:704: in run_build_container
_validate_container_environment()
generate.py:658: in _validate_container_environment
raise RuntimeError(error_msg)
E RuntimeError: Podman not found in PATH. Please install Podman container runtime.
During handling of the above exception, another exception occurred:
tests/test_generate.py:393: in test_run_build_container_no_vfio_device
with pytest.raises(RuntimeError, match="VFIO device .* not found"):
E AssertionError: Regex pattern did not match.
E Regex: 'VFIO device .* not found'
E Input: 'Podman not found in PATH. Please install Podman container runtime.'</failure></testcase><testcase classname="tests.test_generate.TestContainerExecution" name="test_run_build_container_invalid_bdf" time="0.001" /><testcase classname="tests.test_generate.TestContainerExecution" name="test_run_build_container_with_advanced_features" time="0.001"><failure message="RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_generate.py:435: in test_run_build_container_with_advanced_features
generate.run_build_container("0000:03:00.0", "75t", "/dev/vfio/15", mock_args)
generate.py:717: in run_build_container
_validate_vfio_device_access(vfio_device, bdf)
generate.py:645: in _validate_vfio_device_access
current_driver = get_current_driver(bdf)
generate.py:132: in get_current_driver
check_linux_requirement("Driver detection")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: Driver detection requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_generate.TestEnvironmentValidation" name="test_validate_environment_success" time="0.004" /><testcase classname="tests.test_generate.TestEnvironmentValidation" name="test_validate_environment_not_root" time="0.001" /><testcase classname="tests.test_generate.TestEnvironmentValidation" name="test_validate_environment_no_podman" time="0.001" /><testcase classname="tests.test_generate.TestMainWorkflow" name="test_main_success_no_flash" time="0.004" /><testcase classname="tests.test_generate.TestMainWorkflow" name="test_main_success_with_flash" time="0.002" /><testcase classname="tests.test_generate.TestMainWorkflow" name="test_main_no_devices" time="0.001" /><testcase classname="tests.test_generate.TestMainWorkflow" name="test_main_keyboard_interrupt" time="0.001" /><testcase classname="tests.test_generate.TestErrorHandling" name="test_run_command_success" time="0.001" /><testcase classname="tests.test_generate.TestErrorHandling" name="test_run_command_failure" time="0.001" /><testcase classname="tests.test_generate.TestArgumentParsing" name="test_default_arguments" time="0.001" /><testcase classname="tests.test_generate.TestArgumentParsing" name="test_custom_arguments" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_normal_hex_with_prefix" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_hex_without_prefix" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_uppercase_prefix_handling" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_double_prefix_handling" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_multiple_prefix_handling" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_numeric_inputs" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_edge_cases" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_invalid_hex_characters" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_whitespace_handling" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_non_string_non_int_inputs" time="0.001" /><testcase classname="tests.test_hex_formatting.TestHexValueSanitization" name="test_case_preservation" time="0.001" /><testcase classname="tests.test_hex_formatting.TestTCLIntegration" name="test_tcl_generation_with_sanitized_values" time="0.001" /><testcase classname="tests.test_hex_formatting.TestTCLIntegration" name="test_tcl_generation_with_edge_cases" time="0.001" /><testcase classname="tests.test_hex_formatting.TestRealWorldScenarios" name="test_donor_info_with_mixed_formats" time="0.001" /><testcase classname="tests.test_hex_formatting.TestRealWorldScenarios" name="test_common_pci_vendor_device_ids" time="0.001" /><testcase classname="tests.test_hex_formatting.TestRealWorldScenarios" name="test_subsystem_ids_edge_cases" time="0.001" /><testcase classname="tests.test_local_build.TestLocalBuild" name="test_default_donor_dump_behavior" time="0.001"><failure message="AssertionError: Expected 'generate_donor_info' to be called once. Called 0 times.">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:988: in assert_called_once_with
raise AssertionError(msg)
E AssertionError: Expected 'generate_donor_info' to be called once. Called 0 times.
During handling of the above exception, another exception occurred:
tests/test_local_build.py:41: in test_default_donor_dump_behavior
mock_generate.assert_called_once_with("generic")
E AssertionError: Expected 'generate_donor_info' to be called once. Called 0 times.</failure></testcase><testcase classname="tests.test_local_build.TestLocalBuild" name="test_get_donor_info_from_file" time="0.001" /><testcase classname="tests.test_local_build.TestLocalBuild" name="test_build_with_skip_donor_dump" time="0.001" /><testcase classname="tests.test_local_build.TestLocalBuild" name="test_generate_synthetic_donor_info" time="0.001"><failure message="AssertionError: Expected 'generate_donor_info' to be called once. Called 0 times.">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:988: in assert_called_once_with
raise AssertionError(msg)
E AssertionError: Expected 'generate_donor_info' to be called once. Called 0 times.
During handling of the above exception, another exception occurred:
tests/test_local_build.py:152: in test_generate_synthetic_donor_info
mock_generate_donor_info.assert_called_once_with("network")
E AssertionError: Expected 'generate_donor_info' to be called once. Called 0 times.</failure></testcase><testcase classname="tests.test_local_build.TestLocalBuild" name="test_donor_info_file_validation" time="0.001"><failure message="AssertionError: Expected 'generate_donor_info' to have been called once. Called 0 times.">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:956: in assert_called_once
raise AssertionError(msg)
E AssertionError: Expected 'generate_donor_info' to have been called once. Called 0 times.
During handling of the above exception, another exception occurred:
tests/test_local_build.py:195: in test_donor_info_file_validation
mock_generate.assert_called_once()
E AssertionError: Expected 'generate_donor_info' to have been called once. Called 0 times.</failure></testcase><testcase classname="tests.test_local_build.TestLocalBuild" name="test_build_without_donor_file" time="0.001" /><testcase classname="tests.test_local_build.TestBuildOrchestratorLocalBuild" name="test_orchestrator_default_behavior" time="5.374" /><testcase classname="tests.test_local_build.TestBuildOrchestratorLocalBuild" name="test_orchestrator_local_build" time="5.369" /><testcase classname="tests.test_manufacturing_variance.TestDeterministicVarianceSeeding" name="test_deterministic_seed_generation" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestDeterministicVarianceSeeding" name="test_deterministic_rng_initialization" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestDeterministicVarianceSeeding" name="test_deterministic_variance_model" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_simulator_initialization" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_variance_model_generation" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_device_class_parameters" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_timing_pattern_analysis" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_variance_application" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_systemverilog_code_generation" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_variance_metadata" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_variance_parameters_dataclass" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_variance_model_timing_calculations" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestManufacturingVarianceSimulator" name="test_reproducible_generation" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestVarianceIntegration" name="test_default_device_class_parameters" time="0.001" /><testcase classname="tests.test_manufacturing_variance.TestVarianceIntegration" name="test_variance_ranges_logical" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_boundary_conditions_for_seed_generation" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_deterministic_rng_sequence" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_deterministic_timing_adjustments" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_reproducibility_across_multiple_runs" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_seed_algorithm_correctness" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_seed_with_different_dsn_revision_combinations" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestDeterministicVarianceSeedingEnhanced" name="test_systemverilog_code_determinism" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestManufacturingVarianceIntegration" name="test_deterministic_variance_with_different_device_classes" time="0.001" /><testcase classname="tests.test_manufacturing_variance_enhanced.TestManufacturingVarianceIntegration" name
int(donor_info["device_id"], 16)
E ValueError: invalid literal for int() with base 16: '0xXYZ'
During handling of the above exception, another exception occurred:
tests/test_pci_validation.py:107: in test_validate_donor_info_invalid_format
result = build.validate_donor_info(invalid_info)
src/build_compat.py:539: in validate_donor_info
sys.exit(1)
E SystemExit: 1</failure></testcase><testcase classname="tests.test_pci_validation.TestPCIValidation" name="test_get_donor_info_calls_validation" time="0.001"><failure message="AssertionError: Expected 'validate_donor_info' to be called once. Called 0 times.">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:988: in assert_called_once_with
raise AssertionError(msg)
E AssertionError: Expected 'validate_donor_info' to be called once. Called 0 times.
During handling of the above exception, another exception occurred:
tests/test_pci_validation.py:134: in test_get_donor_info_calls_validation
mock_validate.assert_called_once_with(mock_donor_info)
E AssertionError: Expected 'validate_donor_info' to be called once. Called 0 times.</failure></testcase><testcase classname="tests.test_profiler_generator_compatibility.TestProfilerGeneratorCompatibility" name="test_profiler_analysis_structure" time="0.002" /><testcase classname="tests.test_profiler_generator_compatibility.TestProfilerGeneratorCompatibility" name="test_enhanced_registers_format" time="0.001" /><testcase classname="tests.test_profiler_generator_compatibility.TestProfilerGeneratorCompatibility" name="test_generator_compatibility" time="0.002" /><testcase classname="tests.test_profiler_generator_compatibility.TestProfilerGeneratorCompatibility" name="test_end_to_end_integration" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateTransition" name="test_state_transition_init" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateTransition" name="test_state_transition_init_with_custom_values" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateTransition" name="test_to_dict" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_state_machine_init" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_add_state" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_add_transition" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_calculate_complexity" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_to_dict" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_generate_systemverilog" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachine" name="test_generate_transition_condition" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_init" time="0.004" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_functions" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_explicit_state_machine_switch" time="0.002" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_explicit_state_machine_if_chain" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_implicit_state_machine" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_global_state_machine" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_transitions_from_code" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_find_delay_between_positions" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_categorize_function" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_get_state_type_for_category" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_optimize_state_machines" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_generate_analysis_report" time="0.001" /><testcase classname="tests.test_state_machine_extractor.TestStateMachineExtractor" name="test_extract_state_machines_integration" time="0.001" /><testcase classname="tests.test_sv_validation.TestSystemVerilogValidation" name="test_sv_module_structure_matches_example" time="0.002" /><testcase classname="tests.test_sv_validation.TestSystemVerilogValidation" name="test_sv_register_handling_matches_example" time="0.001" /><testcase classname="tests.test_sv_validation.TestSystemVerilogValidation" name="test_sv_clock_domain
generate.bind_to_vfio("0000:03:00.0", "8086", "1533", "vfio-pci")
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_vfio_binding.TestVFIOBindingEdgeCases" name="test_bind_to_vfio_bind_error_but_already_bound" time="0.001"><failure message="RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.">tests/test_vfio_binding.py:70: in test_bind_to_vfio_bind_error_but_already_bound
generate.bind_to_vfio("0000:03:00.0", "8086", "1533", original_driver)
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.</failure></testcase><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_vfio_prerequisites_success" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_vfio_prerequisites_missing_modules" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_vfio_prerequisites_missing_driver" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_check_device_in_use" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_check_device_not_in_use" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_wait_for_device_state_success" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_wait_for_device_state_timeout" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_bind_to_vfio_enhanced_success" time="0.002" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_bind_to_vfio_device_busy_retry" time="1.010" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_bind_to_vfio_invalid_vendor_id" time="0.004" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_bind_to_vfio_invalid_device_id" time="0.004" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_bind_to_vfio_device_not_found" time="0.004" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_restore_original_driver_enhanced_success" time="0.003" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_restore_original_driver_device_disappeared" time="0.002" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_restore_original_driver_retry_logic" time="2.015"><failure message="AssertionError: assert 4 == 3&#10; + where 4 = &lt;MagicMock name='run_command' id='4402554464'&gt;.call_count">tests/test_vfio_binding_enhanced.py:260: in test_restore_original_driver_retry_logic
assert mock_run.call_count == 3
E AssertionError: assert 4 == 3
E + where 4 = &lt;MagicMock name='run_command' id='4402554464'&gt;.call_count</failure></testcase><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_run_build_container_enhanced_validation" time="0.003" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_container_environment_no_podman" time="0.002" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_container_environment_no_image" time="0.002" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_vfio_device_access_success" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_vfio_device_access_missing_device" time="0.001" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingEnhanced" name="test_validate_vfio_device_access_wrong_driver" time="0.002" /><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingStressTests" name="test_bind_to_vfio_maximum_retries" time="0.003"><failure message="AssertionError: Regex pattern did not match.&#10; Regex: 'Failed to bind to vfio-pci after .* attempts'&#10; Input: 'VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.'">tests/test_vfio_binding_enhanced.py:367: in test_bind_to_vfio_maximum_retries
generate.bind_to_vfio("0000:03:00.0", "8086", "1533", "e1000e")
generate.py:303: in bind_to_vfio
check_linux_requirement("VFIO device binding")
generate.py:87: in check_linux_requirement
raise RuntimeError(
E RuntimeError: VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.
During handling of the above exception, another exception occurred:
tests/test_vfio_binding_enhanced.py:366: in test_bind_to_vfio_maximum_retries
with pytest.raises(RuntimeError, match="Failed to bind to vfio-pci after .* attempts"):
E AssertionError: Regex pattern did not match.
E Regex: 'Failed to bind to vfio-pci after .* attempts'
E Input: 'VFIO device binding requires Linux. Current platform: Darwin. Please run this on a Linux system with VFIO support.'</failure></testcase><testcase classname="tests.test_vfio_binding_enhanced.TestVFIOBindingStressTests" name="test_restore_original_driver_maximum_retries" time="0.001" /><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_find_vivado_in_path" time="0.001" /><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_find_vivado_in_common_locations" time="0.001"><failure message="assert None is not None">tests/test_vivado_utils.py:83: in test_find_vivado_in_common_locations
assert result is not None
E assert None is not None</failure></testcase><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_find_vivado_from_environment_variable" time="0.003"><failure message="IndexError: string index out of range">tests/test_vivado_utils.py:115: in test_find_vivado_from_environment_variable
result = find_vivado_installation()
src/vivado_utils.py:112: in find_vivado_installation
version = next(
src/vivado_utils.py:113: in &lt;genexpr&gt;
(p for p in path_parts if p[0].isdigit() and "." in p), "unknown"
E IndexError: string index out of range</failure></testcase><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_vivado_not_found" time="0.001" /><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_get_vivado_version_from_output" time="0.004" /><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_run_vivado_command" time="0.001" /><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_run_vivado_command_with_tcl" time="0.001" /><testcase classname="tests.test_vivado_utils.TestVivadoDetection" name="test_run_vivado_command_vivado_not_found" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_device_properties_initialization" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_validity_indicator" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_driver_indicator" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_vfio_indicator" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_iommu_indicator" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_ready_indicator" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_compact_status_display" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_enhanced_suitability_scoring" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_detailed_status_information" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceIndicators" name="test_error_handling_edge_cases" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceManagerEnhancements" name="test_device_validity_check" time="0.002" /><testcase classname="tests.tui.test_device_indicators.TestDeviceManagerEnhancements" name="test_driver_status_check" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceManagerEnhancements" name="test_vfio_compatibility_check" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceManagerEnhancements" name="test_iommu_status_check" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestDeviceManagerEnhancements" name="test_enhanced_device_info_creation" time="0.003" /><testcase classname="tests.tui.test_device_indicators.TestTUIIntegration" name="test_device_table_columns" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestTUIIntegration" name="test_device_table_row_data" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestSpecificDeviceScenarios" name="test_valid_device_with_vfio" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestSpecificDeviceScenarios" name="test_device_with_bound_driver" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestSpecificDeviceScenarios" name="test_invalid_device" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestSpecificDeviceScenarios" name="test_iommu_disabled_device" time="0.001" /><testcase classname="tests.tui.test_device_indicators.TestSpecificDeviceScenarios" name="test_vfio_incompatible_device" time="0.001" /><testcase classname="tests.tui.test_progress.TestBuildStage" name="test_build_stage_values" time="0.001" /><testcase classname="tests.tui.test_progress.TestBuildProgress" name="test_build_progress_init" time="0.001" /><testcase classname="tests.tui.test_progress.TestBuildProgress" name="test_completed_stages_property" time="0.001" /><testcase classname="tests.tui.test_progress.TestBuildProgress" name="test_total_stages_property" time="0.001" /><testcase classname="tests.tui.test_progress.TestBuildProgress" name="test_overall_progress_property" time="0.001" /><testcase classname="tests.tui.test_pro
assert score &gt; 0.8
E assert 0.7999999999999999 &gt; 0.8</failure></testcase><testcase classname="tests.tui.test_tui_core.TestDeviceManager" name="test_cached_operations" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_config_manager_init" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_current_config_management" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_create_default_profiles" time="0.003" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_save_and_load_profile" time="0.001"><failure message="AssertionError: assert False&#10; + where False = exists()&#10; + where exists = PosixPath('/var/folders/pz/zdq1ptxs0h3700ssftp1vlch0000gn/T/tmpv4n0iltu/Test_Profile.json').exists">tests/tui/test_tui_core.py:264: in test_save_and_load_profile
assert profile_file.exists()
E AssertionError: assert False
E + where False = exists()
E + where exists = PosixPath('/var/folders/pz/zdq1ptxs0h3700ssftp1vlch0000gn/T/tmpv4n0iltu/Test_Profile.json').exists</failure></testcase><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_profile_operations" time="0.002" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_list_profiles" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_delete_profile" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestConfigManager" name="test_config_validation" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestBuildOrchestrator" name="test_build_orchestrator_init" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestBuildOrchestrator" name="test_progress_management" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestBuildOrchestrator" name="test_start_build_success" time="1.360" /><testcase classname="tests.tui.test_tui_core.TestBuildOrchestrator" name="test_build_already_running" time="0.006" /><testcase classname="tests.tui.test_tui_core.TestBuildOrchestrator" name="test_cancel_build" time="2.008" /><testcase classname="tests.tui.test_tui_core.TestBuildOrchestrator" name="test_ensure_git_repo" time="0.009"><failure message="AssertionError: Expected '_run_command' to have been called once. Called 2 times.&#10;Calls: [call('git --version'),&#10; call('git clone https://github.com/ufrisk/pcileech-fpga.git /Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga')].&#10;&#10;pytest introspection follows:&#10;&#10;Args:&#10;assert ('git clone h...ileech-fpga',) == ()&#10; &#10; Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mgit clone https://github.com/ufrisk/pcileech-fpga.git /Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; &#10; Full diff:&#10; #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ 'git clone https://github.com/ufrisk/pcileech-fpga.git '#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ '/Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m&#10; #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m">/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/unittest/mock.py:956: in assert_called_once
raise AssertionError(msg)
E AssertionError: Expected '_run_command' to have been called once. Called 2 times.
E Calls: [call('git --version'),
E call('git clone https://github.com/ufrisk/pcileech-fpga.git /Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga')].
During handling of the above exception, another exception occurred:
tests/tui/test_tui_core.py:522: in test_ensure_git_repo
mock_run_command.assert_called_once()
E AssertionError: Expected '_run_command' to have been called once. Called 2 times.
E Calls: [call('git --version'),
E call('git clone https://github.com/ufrisk/pcileech-fpga.git /Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga')].
E
E pytest introspection follows:
E
E Args:
E assert ('git clone h...ileech-fpga',) == ()
E
E Left contains one more item: #x1B[0m#x1B[33m'#x1B[39;49;00m#x1B[33mgit clone https://github.com/ufrisk/pcileech-fpga.git /Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E
E Full diff:
E #x1B[0m#x1B[91m- ()#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ (#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ 'git clone https://github.com/ufrisk/pcileech-fpga.git '#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ '/Users/ramseymcgrath/.cache/pcileech-fw-generator/repos/pcileech-fpga',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E #x1B[92m+ )#x1B[39;49;00m#x1B[90m#x1B[39;49;00m</failure></testcase><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_status_monitor_init" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_check_podman_status" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_check_vivado_status" time="0.002" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_get_disk_space" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_check_root_access" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_get_system_status" time="0.002" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_monitoring_control" time="0.001" /><testcase classname="tests.tui.test_tui_core.TestStatusMonitor" name="test_status_summary" time="0.001" /><testcase classname="tests.tui.test_tui_main.TestConfigurationDialog" name="test_configuration_dialog_init" time="0.001" /><testcase classname="tests.tui.test_tui_main.TestConfigurationDialog" name="test_create_config_from_form" time="0.003" /><testcase classname="tests.tui.test_tui_main.TestConfigurationDialog" name="test_populate_form" time="0.003" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_tui_app_init" time="0.008"><failure message="textual.app.ScreenStackError: No screens on stack">tests/tui/test_tui_main.py:160: in test_tui_app_init
assert app.selected_device is None
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:275: in __get__
self._initialize_reactive(obj, self.name)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:199: in _initialize_reactive
self._check_watchers(obj, name, default)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:367: in _check_watchers
invoke_watcher(obj, public_watch_function, old_value, value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:91: in invoke_watcher
watch_result = cast(WatchCallbackNewValueType, watch_function)(value)
src/tui/main.py:946: in watch_selected_device
self._clear_compatibility_display()
src/tui/main.py:1067: in _clear_compatibility_display
compatibility_title = self.query_one("#compatibility-title", Static)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/dom.py:1465: in query_one
base_node = self._get_dom_base()
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:870: in _get_dom_base
return self.default_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:883: in default_screen
return self.screen if self._compose_screen is None else self._compose_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:1472: in screen
raise ScreenStackError("No screens on stack") from None
E textual.app.ScreenStackError: No screens on stack</failure></testcase><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_app_properties" time="0.002"><failure message="textual.app.ScreenStackError: No screens on stack">tests/tui/test_tui_main.py:175: in test_app_properties
assert hasattr(app, "selected_device")
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:275: in __get__
self._initialize_reactive(obj, self.name)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:199: in _initialize_reactive
self._check_watchers(obj, name, default)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:367: in _check_watchers
invoke_watcher(obj, public_watch_function, old_value, value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:91: in invoke_watcher
watch_result = cast(WatchCallbackNewValueType, watch_function)(value)
src/tui/main.py:946: in watch_selected_device
self._clear_compatibility_display()
src/tui/main.py:1067: in _clear_compatibility_display
compatibility_title = self.query_one("#compatibility-title", Static)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/dom.py:1465: in query_one
base_node = self._get_dom_base()
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:870: in _get_dom_base
return self.default_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:883: in default_screen
return self.screen if self._compose_screen is None else self._compose_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:1472: in screen
raise ScreenStackError("No screens on stack") from None
E textual.app.ScreenStackError: No screens on stack</failure></testcase><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_initialize_app" time="0.003" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_scan_devices" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_update_device_table" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_update_config_display" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_update_status_display" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_update_build_progress" time="0.002"><failure message="textual.app.ScreenStackError: No screens on stack">tests/tui/test_tui_main.py:353: in test_update_build_progress
app.build_progress = BuildProgress(
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:345: in __set__
self._set(obj, value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:326: in _set
self._check_watchers(obj, name, current_value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:367: in _check_watchers
invoke_watcher(obj, public_watch_function, old_value, value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:91: in invoke_watcher
watch_result = cast(WatchCallbackNewValueType, watch_function)(value)
src/tui/main.py:1079: in watch_build_progress
self._update_build_progress()
src/tui/main.py:750: in _update_build_progress
self.query_one("#build-status", Static).update(
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/dom.py:1465: in query_one
base_node = self._get_dom_base()
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:870: in _get_dom_base
return self.default_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:883: in default_screen
return self.screen if self._compose_screen is None else self._compose_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:1472: in screen
raise ScreenStackError("No screens on stack") from None
E textual.app.ScreenStackError: No screens on stack</failure></testcase><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_button_press_handlers" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_data_table_row_selection" time="0.003" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_start_build" time="0.002"><failure message="textual.app.ScreenStackError: No screens on stack">tests/tui/test_tui_main.py:487: in test_start_build
app.selected_device = test_device
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:345: in __set__
self._set(obj, value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:299: in _set
self._initialize_reactive(obj, self.name)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:199: in _initialize_reactive
self._check_watchers(obj, name, default)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:367: in _check_watchers
invoke_watcher(obj, public_watch_function, old_value, value)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/reactive.py:91: in invoke_watcher
watch_result = cast(WatchCallbackNewValueType, watch_function)(value)
src/tui/main.py:946: in watch_selected_device
self._clear_compatibility_display()
src/tui/main.py:1067: in _clear_compatibility_display
compatibility_title = self.query_one("#compatibility-title", Static)
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/dom.py:1465: in query_one
base_node = self._get_dom_base()
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:870: in _get_dom_base
return self.default_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:883: in default_screen
return self.screen if self._compose_screen is None else self._compose_screen
/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/textual/app.py:1472: in screen
raise ScreenStackError("No screens on stack") from None
E textual.app.ScreenStackError: No screens on stack</failure></testcase><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_stop_build" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_build_progress_callback" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_reactive_watchers" time="0.003" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_build_progress_watcher" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_open_configuration_dialog" time="0.002" /><testcase classname="tests.tui.test_tui_main.TestPCILeechTUI" name="test_monitor_system_status" time="0.016" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_default_configuration" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_configuration_validation" time="0.002" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_is_advanced_property" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_feature_summary" time="0.001"><failure message="AssertionError: assert 'Local Build' == 'Basic Configuration'&#10; &#10; - Basic Configuration&#10; + Local Build">tests/tui/test_tui_models.py:91: in test_feature_summary
assert config.feature_summary == "Basic Configuration"
E AssertionError: assert 'Local Build' == 'Basic Configuration'
E
E - Basic Configuration
E + Local Build</failure></testcase><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_to_cli_args" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_serialization" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_file_operations" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildConfiguration" name="test_copy" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestPCIDevice" name="test_device_creation" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestPCIDevice" name="test_display_name" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestPCIDevice" name="test_is_suitable" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestPCIDevice" name="test_status_indicator" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestPCIDevice" name="test_serialization" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestTUIError" name="test_error_creation" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestTUIError" name="test_severity_properties" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestTUIError" name="test_add_action" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestTUIError" name="test_serialization" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestErrorTemplates" name="test_vfio_binding_failed" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestErrorTemplates" name="test_container_not_found" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestErrorTemplates" name="test_insufficient_permissions" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestErrorTemplates" name="test_build_failed" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestErrorTemplates" name="test_device_not_suitable" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_progress_creation" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_stage_tracking" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_overall_progress" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_status_text" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_progress_bar_text" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_warning_and_error_management" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_resource_usage_update" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildProgress" name="test_serialization" time="0.001" /><testcase classname="tests.tui.test_tui_models.TestBuildStage" name="test_build_stages" time="0.001" /></testsuite></testsuites>