Move tests, examples, playground under a single tests folder#459
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR reorganizes the repository’s test collateral by consolidating scripts, configs, and examples under tests/, and updates code/docs/pipeline references to match the new layout.
Changes:
- Moved/standardized test collateral locations to
tests/configs,tests/examples, andtests/scripts, updating docs and helper code to reference the new paths. - Added/relocated additional test runner scripts (PowerShell + shell) and a new
tests/playgroundElectron-based playground for interactive sandbox testing. - Updated CI/pipeline and documentation references from legacy
test_configs/,test_scripts/, andexamples/paths to the newtests/structure.
Show a summary per file
Reviewed files (expanded list)
| File | Description |
|---|---|
| tests/scripts/Win25H2Safe-Tests.ps1 | Updated default repo-root/path assumptions for new folder layout |
| tests/scripts/T3-Workloads.ps1 | Updated default binary path for new folder layout |
| tests/scripts/run_wslc_all_tests.ps1 | Updated repo root + configs directory reference |
| tests/scripts/run_windows_sandbox_tests.ps1 | Updated repo root + configs directory reference |
| tests/scripts/run_test_configs.ps1 | Updated repo root + configs directory reference |
| tests/scripts/run_pwsh_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_microvm_tests.ps1 | Updated repo root + default configs directory reference |
| tests/scripts/run_microvm_basic_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_isolation_session_tests.ps1 | Updated repo root + default configs directory reference |
| tests/scripts/run_isolation_session_state_aware_tests.ps1 | Updated repo root + default fixture directory reference |
| tests/scripts/run_isolation_session_resize_smoke.ps1 | Updated repo root + docs reference path |
| tests/scripts/run_filesystem_bfs_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_filesystem_bfsreadonly_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_filesystem_bfs_spaces_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_examples.ps1 | Updated repo root + examples directory reference |
| tests/scripts/run_lpacac_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_basicac_test.ps1 | Updated repo root + config path reference |
| tests/scripts/run_appcontainer_proxy_tests.ps1 | Updated repo root + configs directory reference |
| tests/scripts/run_dacl_tests.ps1 | Updated repo root + src directory reference |
| tests/scripts/run_on_repeat.ps1 | Added stress-runner to loop a core script set |
| tests/scripts/run_lxc_all_tests.sh | Added LXC “run all” wrapper |
| tests/scripts/run_lxc_basic_test.sh | Updated repo-root/config paths |
| tests/scripts/run_lxc_filesystem_test.sh | Updated repo-root/config paths |
| tests/scripts/run_lxc_network_test.sh | Updated repo-root/config paths |
| tests/scripts/run_lxc_timeout_test.sh | Updated repo-root/config paths |
| tests/scripts/run_bwrap_all_tests.sh | Added Bubblewrap “run all” wrapper |
| tests/scripts/run_bwrap_basic_test.sh | Updated repo-root/config paths |
| tests/scripts/run_bwrap_filesystem_test.sh | Updated repo-root/config paths |
| tests/scripts/run_bwrap_network_test.sh | Updated repo-root/config paths |
| tests/scripts/run_bwrap_network_proxy_test.sh | Updated repo-root/config paths |
| tests/scripts/run_linux_process_default_test.sh | Updated repo-root/config paths |
| tests/scripts/sort_numbers.py | Added a simple Python sandbox workload |
| tests/scripts/script_test_prompt.txt | Added a prompt fixture referencing sort_numbers.py |
| tests/scripts/push_sdk_integration_tests_to_vm.ps1 | Added PowerShell Remoting deploy helper for SDK integration artifacts |
| tests/scripts/push_exes_to_vm.ps1 | Added TShell deploy helper for native binaries |
| tests/scripts/push_batch_and_config_files_to_vm.ps1 | Added TShell deploy helper for test collateral |
| tests/scripts/README.md | Updated script/docs references for new tests/ layout |
| test_scripts/push_batch_and_config_files_to_vm.ps1 | Removed legacy deploy helper from old location |
| tests/examples/01_hello_world.json | Added/moved example config under tests/examples |
| tests/examples/02_filesystem_access.json | Added/moved example config under tests/examples |
| tests/examples/03_network_restricted.json | Added/moved example config under tests/examples |
| tests/examples/04_combined_restrictions.json | Added/moved example config under tests/examples |
| tests/examples/05_custom_python.json | Added/moved example config under tests/examples |
| tests/examples/06_network_capabilities_only.json | Added/moved example config under tests/examples |
| tests/examples/07_test_delete.json | Added/moved example config under tests/examples |
| tests/examples/08_pwsh.json | Added/moved example config under tests/examples |
| tests/examples/09_windows_sandbox_hello_world.json | Added/moved example config under tests/examples |
| tests/examples/10_windows_sandbox_network_isolated.json | Added/moved example config under tests/examples |
| tests/examples/11_lxc_hello_world.json | Added/moved example config under tests/examples |
| tests/examples/11_localhost_proxy_processcontainer.json | Added/moved example config under tests/examples |
| tests/examples/12_lxc_filesystem_access.json | Added/moved example config under tests/examples |
| tests/examples/12_builtin_test_proxy_processcontainer.json | Added/moved example config under tests/examples |
| tests/examples/13_lxc_network_restricted.json | Added/moved example config under tests/examples |
| tests/examples/15_mac_hello_world.json | Added/moved seatbelt example under tests/examples |
| tests/examples/16_mac_deny_network.json | Added/moved seatbelt example under tests/examples |
| tests/examples/17_mac_deny_filesystem.json | Added/moved seatbelt example under tests/examples |
| tests/examples/18_mac_filesystem_access.json | Added/moved seatbelt example under tests/examples |
| tests/examples/19_mac_network_restricted.json | Added/moved seatbelt example under tests/examples |
| tests/examples/20_mac_combined_restrictions.json | Added/moved seatbelt example under tests/examples |
| tests/examples/21_mac_python_info.json | Added/moved seatbelt example under tests/examples |
| tests/examples/22_mac_network_allow_all.json | Added/moved seatbelt example under tests/examples |
| tests/examples/23_mac_blocked_hosts_unsupported.json | Added/moved seatbelt example under tests/examples |
| tests/examples/24_mac_ui_disabled.json | Added/moved seatbelt UI example under tests/examples |
| tests/examples/25_mac_ui_clipboard_enabled.json | Added/moved seatbelt UI example under tests/examples |
| tests/examples/26_mac_gui_access.json | Added/moved seatbelt GUI access example under tests/examples |
| tests/examples/27_mac_terminal_sandboxed.json | Added/moved seatbelt terminal example under tests/examples |
| tests/examples/wslc_hello_world.json | Added/moved WSLC example under tests/examples |
| tests/configs/basic_processcontainer.json | Added/moved test config under tests/configs |
| tests/configs/basic_permissive.json | Added/moved test config under tests/configs |
| tests/configs/basic_lpac.json | Added/moved test config under tests/configs |
| tests/configs/basic_lxc.json | Added/moved test config under tests/configs |
| tests/configs/basic_windows_sandbox.json | Added/moved test config under tests/configs |
| tests/configs/containment_process_intent.json | Added/moved test config under tests/configs |
| tests/configs/experimental_hello_processcontainer.json | Added/moved test config under tests/configs |
| tests/configs/experimental_hello_lxc.json | Added/moved test config under tests/configs |
| tests/configs/filesystem_bfs_test.json | Added/moved test config under tests/configs |
| tests/configs/filesystem_bfs_readonly_test.json | Added/moved test config under tests/configs |
| tests/configs/filesystem_bfs_spaces_test.json | Added/moved test config under tests/configs |
| tests/configs/hello_world_v050.json | Added/moved test config under tests/configs |
| tests/configs/hyperlight_hello.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/hyperlight_pandas.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/hyperlight_timeout.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/hyperlight_exit_code.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/hyperlight_networking.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/hyperlight_networking_blocked.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/hyperlight_fs.json | Added/moved Hyperlight test config under tests/configs |
| tests/configs/isolation_session_hello.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_hello_medium.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_exit42.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_timeout.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_stderr.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_stdout_stderr_interleaved.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_streaming_smoke.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_filtered.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_filesystem.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_powershell_interactive.json | Added/moved IsolationSession test config under tests/configs |
| tests/configs/isolation_session_one_shot_user_rejected.json | Added/moved IsolationSession negative test config under tests/configs |
| tests/configs/isolation_session_concurrent_A.json | Added/moved IsolationSession concurrent test config under tests/configs |
| tests/configs/isolation_session_concurrent_B.json | Added/moved IsolationSession concurrent test config under tests/configs |
| tests/configs/isolation_session_concurrent_C.json | Added/moved IsolationSession concurrent test config under tests/configs |
| tests/configs/isolation_session_concurrent_D.json | Added/moved IsolationSession concurrent test config under tests/configs |
| tests/configs/isolation_session_state_aware_provision.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_provision_with_filesystem.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_provision_with_filter.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_provision_user_malformed_upn.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_provision_user_empty_wamtoken.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_provision_rejected_denied.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_start.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_start_medium.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_start_local_with_user.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_start_entra_missing_user.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_start_upn_mismatch.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_basic.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_cwd.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_env_absent.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_env_initial.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_env_modified.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_exit_0.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_exit_1.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_exit_2.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_read_marker.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_write_marker.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_read_persist.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_setx_initial.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_setx_modified.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_read_shared.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_write_shared.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_read_readonly.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_write_readonly_denied.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_exec_read_restricted.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_stop.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/isolation_session_state_aware_deprovision.json | Added/moved state-aware fixture under tests/configs |
| tests/configs/linux_process_default.json | Added/moved Linux “process intent” test config under tests/configs |
| tests/configs/linux_process_abstract.json | Added/moved Linux “process intent” test config under tests/configs |
| tests/configs/lxc_filesystem_test.json | Added/moved LXC test config under tests/configs |
| tests/configs/lxc_network_test.json | Added/moved LXC test config under tests/configs |
| tests/configs/lxc_timeout.json | Added/moved LXC test config under tests/configs |
| tests/configs/microvm_hello.json | Added/moved MicroVM test config under tests/configs |
| tests/configs/microvm_hello_linux.json | Added/moved MicroVM-on-Linux test config under tests/configs |
| tests/configs/microvm_exit_code.json | Added/moved MicroVM test config under tests/configs |
| tests/configs/microvm_exit_code_linux.json | Added/moved MicroVM-on-Linux test config under tests/configs |
| tests/configs/microvm_error.json | Added/moved MicroVM test config under tests/configs |
| tests/configs/microvm_error_linux.json | Added/moved MicroVM-on-Linux test config under tests/configs |
| tests/configs/microvm_large_output.json | Added/moved MicroVM test config under tests/configs |
| tests/configs/microvm_large_output_linux.json | Added/moved MicroVM-on-Linux test config under tests/configs |
| tests/configs/microvm_multiline.json | Added/moved MicroVM test config under tests/configs |
| tests/configs/microvm_multiline_linux.json | Added/moved MicroVM-on-Linux test config under tests/configs |
| tests/configs/microvm_stdlib.json | Added/moved MicroVM test config under tests/configs |
| tests/configs/microvm_stdlib_linux.json | Added/moved MicroVM-on-Linux test config under tests/configs |
| tests/configs/microvm_timeout.json | Added/moved MicroVM timeout test config under tests/configs |
| tests/configs/microvm_timeout_linux.json | Added/moved MicroVM-on-Linux timeout test config under tests/configs |
| tests/configs/network_both_test.json | Added/moved network test config under tests/configs |
| tests/configs/network_capabilities_test.json | Added/moved network test config under tests/configs |
| tests/configs/network_default_test.json | Added/moved network test config under tests/configs |
| tests/configs/network_firewall_test.json | Added/moved network test config under tests/configs |
| tests/configs/proxy_builtin_test.json | Added/moved proxy test config under tests/configs |
| tests/configs/pwsh_setlocation.json | Added/moved PowerShell test config under tests/configs |
| tests/configs/rejected_version_too_old.json | Added/moved version-validation negative test config under tests/configs |
| tests/configs/with_capabilities.json | Added/moved capability test config under tests/configs |
| tests/configs/windows_sandbox_echo.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/windows_sandbox_exit_code.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/windows_sandbox_powershell.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/windows_sandbox_powershell_env.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/windows_sandbox_stderr.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/windows_sandbox_timeout.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/windows_sandbox_custom_timeout.json | Added/moved Windows Sandbox test config under tests/configs |
| tests/configs/wslc_custom_registry.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_custom_registry_ghcr.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_custom_registry_quay.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_env_vars.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_exit_code.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_filesystem.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_large_output.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_network_isolated.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_python_hello.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_python_stdlib.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_readonly_mount.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_stderr.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_tar_import_docker_save.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_tar_import_rootfs.json | Added/moved WSLC test config under tests/configs |
| tests/configs/wslc_timeout.json | Added/moved WSLC test config under tests/configs |
| tests/configs/bubblewrap_basic.json | Added/moved Bubblewrap test config under tests/configs |
| tests/configs/bubblewrap_filesystem.json | Added/moved Bubblewrap test config under tests/configs |
| tests/configs/bubblewrap_network_block.json | Added/moved Bubblewrap test config under tests/configs |
| tests/configs/bubblewrap_network_firewall.json | Added/moved Bubblewrap test config under tests/configs |
| tests/configs/bubblewrap_network_proxy_allowlist.json | Added/moved Bubblewrap proxy test config under tests/configs |
| tests/configs/bubblewrap_network_proxy_blocklist.json | Added/moved Bubblewrap proxy test config under tests/configs |
| tests/configs/bubblewrap_network_proxy_builtin.json | Added/moved Bubblewrap proxy test config under tests/configs |
| tests/configs/base_container_ui_configs/01_disable_true.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/02_clip_none_write_blocked.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/03_clip_read_allowed.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/04_clip_read_write_blocked.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/05_clip_write_allowed.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/06_clip_all_both.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/07_isolation_container.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/08_isolation_desktop.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/09_desktop_control_blocked.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/10_no_ui_default_deny.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/11_system_settings_blocked.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/configs/base_container_ui_configs/12_system_settings_allowed.json | Added/moved BaseContainer UI fixture under tests/configs |
| tests/playground/package.json | Added/moved Electron playground package definition |
| tests/playground/tsconfig.main.json | Playground main-process TS config |
| tests/playground/tsconfig.renderer.json | Playground renderer TS config |
| tests/playground/build-renderer.js | Playground renderer build helper |
| tests/playground/.gitignore | Playground-specific ignore rules |
| tests/playground/src/main/main.ts | Electron main process (IPC + SDK spawning) |
| tests/playground/src/main/preload.ts | Electron preload bridge for safe renderer IPC |
| tests/playground/src/renderer/index.html | Playground UI (scenarios/policy/logs) |
| tests/playground/test-scripts/winhttp-proxy-test.ps1 | Playground test-script payload |
| src/wxc_e2e_tests/src/lib.rs | Updated helper paths to tests/configs + tests/examples |
| src/fuzz/README.md | Updated fuzz seed corpus path to tests/configs |
| scripts/setup-wslc.ps1 | Updated reference to tests\\scripts\\run_wslc_all_tests.ps1 |
| README.md | Updated repository layout section + example paths |
| CONTRIBUTING.md | Updated repository layout section + script path mention |
| docs/schema.md | Updated examples directory reference |
| docs/wsl/wsl-container-getting-started.md | Updated example/config links to tests/… |
| docs/windows-sandbox/windows-sandbox-reference.md | Updated script/config paths to tests/… |
| docs/macos-support/seatbelt-backend.md | Updated example path to tests/examples/... |
| docs/nanvix-microvm/nanvix-integration-plan.md | Updated test_configs -> tests/configs references |
| docs/hyperlight-integration-plan.md | Updated test_configs -> tests/configs references |
| docs/fuzzing.md | Updated seed corpus path to tests/configs/*.json |
| docs/bwrap-support/bubblewrap-backend.md | Updated script/config paths to tests/… |
| docs/bwrap-support/bubblewrap-backend-plan.md | Updated test_configs/test_scripts references to tests/... |
| docs/authoring-a-new-feature.md | Updated test-config path examples to tests/configs |
| docs/isolation-session/initial-bringup-plan.md | Updated config/script paths to tests/... |
| docs/isolation-session/state-aware-typescript-initial-plan.md | Updated runner script link to tests/scripts/... |
| .github/copilot-instructions.md | Updated references to moved scripts/configs/examples |
| .azure-pipelines/1ES.Build.yml | Updated path exclusions from examples/** -> tests/examples/** |
| .azure-pipelines/templates/Rust.Build.Job.yml | Updated comment references to moved scripts |
| .azure-pipelines/templates/Fuzz.Build.Job.yml | Updated seed corpus upload comment to tests/configs |
Copilot's findings
Comments suppressed due to low confidence (55)
tests/scripts/run_basicac_test.ps1:16
$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root (breaking default paths likesrc\target\...). Fromtests/scripts, you only need to go up two levels to reach the repo root.
tests/scripts/run_test_configs.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root and breaks the defaultsrc\target\...andtests\configspaths.
tests/scripts/run_wslc_all_tests.ps1:41$RepoRootwalks up three directories fromtests/scripts, so it points outside the repo andtests\configswon't be found by default.
tests/scripts/run_windows_sandbox_tests.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root and breakstests\configsdiscovery.
tests/scripts/run_pwsh_test.ps1:16$RepoRootcurrently resolves to the parent of the repo root (3xSplit-Path -Parentfromtests/scripts). This will break defaultBinDirand config discovery.
tests/scripts/run_examples.ps1:18$RepoRootwalks up three directories fromtests/scripts, which points outside the repo and breaks default config discovery.
tests/scripts/run_lpacac_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks defaulttests\configslookup.
tests/scripts/run_microvm_basic_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which points outside the repo and breaks default config and binary discovery.
tests/scripts/run_basicac_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root (breaking default paths likesrc\target\...). Fromtests/scripts, you only need to go up two levels to reach the repo root.
tests/scripts/run_test_configs.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root and breaks the defaultsrc\target\...andtests\configspaths.
tests/scripts/run_wslc_all_tests.ps1:41$RepoRootwalks up three directories fromtests/scripts, so it points outside the repo andtests\configswon't be found by default.
tests/scripts/run_windows_sandbox_tests.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root and breakstests\configsdiscovery.
tests/scripts/run_pwsh_test.ps1:16$RepoRootcurrently resolves to the parent of the repo root (3xSplit-Path -Parentfromtests/scripts). This will break defaultBinDirand config discovery.
tests/scripts/run_examples.ps1:18$RepoRootwalks up three directories fromtests/scripts, which points outside the repo and breaks default config discovery.
tests/scripts/run_lpacac_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks defaulttests\configslookup.
tests/scripts/run_microvm_basic_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which points outside the repo and breaks default config and binary discovery.
tests/scripts/run_basicac_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root (breaking default paths likesrc\target\...). Fromtests/scripts, you only need to go up two levels to reach the repo root.
tests/scripts/run_test_configs.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root and breaks the defaultsrc\target\...andtests\configspaths.
tests/scripts/run_wslc_all_tests.ps1:41$RepoRootwalks up three directories fromtests/scripts, so it points outside the repo andtests\configswon't be found by default.
tests/scripts/run_windows_sandbox_tests.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves to the parent of the repo root and breakstests\configsdiscovery.
tests/scripts/run_pwsh_test.ps1:16$RepoRootcurrently resolves to the parent of the repo root (3xSplit-Path -Parentfromtests/scripts). This will break defaultBinDirand config discovery.
tests/scripts/run_examples.ps1:18$RepoRootwalks up three directories fromtests/scripts, which points outside the repo and breaks default config discovery.
tests/scripts/run_lpacac_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks defaulttests\configslookup.
tests/scripts/run_microvm_basic_test.ps1:16$RepoRootwalks up three directories fromtests/scripts, which points outside the repo and breaks default config and binary discovery.
tests/scripts/run_microvm_tests.ps1:37$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and will break defaulttests\configspath resolution.
tests/scripts/run_isolation_session_tests.ps1:61$RepoRootwalks up three directories fromtests/scriptsand ends up outside the repo, breaking the defaulttests\configslocation.
tests/scripts/run_isolation_session_state_aware_tests.ps1:50$RepoRootwalks up three directories fromtests/scriptsand ends up outside the repo, breaking the defaulttests\configsfixture lookup.
tests/scripts/run_isolation_session_resize_smoke.ps1:51$RepoRootis computed by walking up three directories fromtests/scripts, which points outside the repo. This script expects$RepoRootto be the repo root.
tests/scripts/run_filesystem_bfs_test.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_filesystem_bfsreadonly_test.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_filesystem_bfs_spaces_test.ps1:10$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_appcontainer_proxy_tests.ps1:13$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default path resolution.
tests/scripts/run_microvm_tests.ps1:37$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and will break defaulttests\configspath resolution.
tests/scripts/run_isolation_session_tests.ps1:61$RepoRootwalks up three directories fromtests/scriptsand ends up outside the repo, breaking the defaulttests\configslocation.
tests/scripts/run_isolation_session_state_aware_tests.ps1:50$RepoRootwalks up three directories fromtests/scriptsand ends up outside the repo, breaking the defaulttests\configsfixture lookup.
tests/scripts/run_isolation_session_resize_smoke.ps1:51$RepoRootis computed by walking up three directories fromtests/scripts, which points outside the repo. This script expects$RepoRootto be the repo root.
tests/scripts/run_filesystem_bfs_test.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_filesystem_bfsreadonly_test.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_filesystem_bfs_spaces_test.ps1:10$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_appcontainer_proxy_tests.ps1:13$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default path resolution.
tests/scripts/run_microvm_tests.ps1:37$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and will break defaulttests\configspath resolution.
tests/scripts/run_isolation_session_tests.ps1:61$RepoRootwalks up three directories fromtests/scriptsand ends up outside the repo, breaking the defaulttests\configslocation.
tests/scripts/run_isolation_session_state_aware_tests.ps1:50$RepoRootwalks up three directories fromtests/scriptsand ends up outside the repo, breaking the defaulttests\configsfixture lookup.
tests/scripts/run_isolation_session_resize_smoke.ps1:51$RepoRootis computed by walking up three directories fromtests/scripts, which points outside the repo. This script expects$RepoRootto be the repo root.
tests/scripts/run_filesystem_bfs_test.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_filesystem_bfsreadonly_test.ps1:18$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_filesystem_bfs_spaces_test.ps1:10$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default config/binary discovery.
tests/scripts/run_appcontainer_proxy_tests.ps1:13$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breaks default path resolution.
tests/scripts/run_dacl_tests.ps1:27$RepoRootwalks up three directories fromtests/scripts, which resolves outside the repo and breakssrcpath resolution for running cargo.
tests/scripts/README.md:66- The deployment helper description still references
examples\even though examples were moved undertests\examples\. This is confusing for anyone using the TShell copy script.
tests/scripts/README.md:116 - The ignored-test name is rendered as
test_tests\configs(looks like a path) but the actual Rust test istest_test_configs(seesrc/wxc_e2e_tests/tests/e2e_windows.rs).
tests/scripts/README.md:66 - The deployment helper description still references
examples\even though examples were moved undertests\examples\. This is confusing for anyone using the TShell copy script.
tests/scripts/README.md:116 - The ignored-test name is rendered as
test_tests\configs(looks like a path) but the actual Rust test istest_test_configs(seesrc/wxc_e2e_tests/tests/e2e_windows.rs).
tests/scripts/README.md:66 - The deployment helper description still references
examples\even though examples were moved undertests\examples\. This is confusing for anyone using the TShell copy script.
tests/scripts/README.md:116 - The ignored-test name is rendered as
test_tests\configs(looks like a path) but the actual Rust test istest_test_configs(seesrc/wxc_e2e_tests/tests/e2e_windows.rs).
- Files reviewed: 52/233 changed files
- Comments generated: 0
MGudgin
approved these changes
May 29, 2026
Member
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
bbonaby
approved these changes
May 29, 2026
bbonaby
added a commit
that referenced
this pull request
May 30, 2026
sdk/tests/integration/package-lock.json regenerated; mxc-sdk link now resolves at 0.6.0. Skipping playground for now: its package.json has a broken file: path (file:../sdk dating back to the PR #459 reorg that moved playground under tests/). Fixing it correctly resolves the SDK link but rewrites ~1k lines of phantom transitive deps the old broken path was pinning. Leaving that for a focused PR. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bbonaby
added a commit
that referenced
this pull request
May 30, 2026
* Update docs and surface unsupported-policy errors on Windows backends
SDK platform detection:
- Replace checkWindowsBuildVersion with isIsoSessionSupported (Insider Preview build 26300.8553+).
- computeSupport on Windows now always marks supported with processcontainer default and conditionally appends windows_sandbox and isolation_session.
Docs:
- Add Platforms table to root README and sdk/README with a Minimum build column; root README now points to the SDK README as the supported integration surface.
- Update troubleshooting wording from build/UBR specifics to pre-24H2; broaden Linux to also list Bubblewrap.
Rust runner validation:
- AppContainer and BaseContainer runners now reject filesystem.deniedPaths, network.allowedHosts, and network.blockedHosts with a clear 'not yet supported on Windows' error (AppContainer still permits deniedPaths when running in DACL mode).
- Error strings live as shared pub(crate) const in script_runner.rs so both runners surface identical wording; doc-comment explains the AppContainer + ALL APPLICATION PACKAGES access model.
- Both runners log a one-line warning when network.proxy is configured: WinHTTP-only proxying, with the AppContainer-specific UAC caveat preserved.
Build pipeline:
- Add wxc-host-prep.exe to the Windows signPattern in Rust.Build.Job.yml so it ships alongside the other Windows binaries.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address review feedback: clean up table, drop iso cache, fix README example, trim shared error doc
- Platforms table: split Windows minimum-build cell across two lines using <br> for clarity.
- platform.ts: drop redundant isoSessionSupportedCache (getPlatformSupport already memoizes).
- README permissiveLearningMode example: add version/containerId/containment, replace bogus 'script' with process.commandLine, note debug-builds-only.
- script_runner.rs: trim the shared error doc comment to just state what the constants are and why they're shared.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Bump workspace+SDK to 0.6.0 and add validate_runner tests
Version bump:
- src/Cargo.toml [workspace.package].version 0.3.0 -> 0.6.0 (matches stable schema).
- sdk/package.json 0.3.0 -> 0.6.0; npm install regenerated sdk/package-lock.json.
- scripts/check-version-sync.js passes.
Tests:
- appcontainer_runner: add 5 validate_runner tests covering deniedPaths in BFS (reject) vs DACL (accept) modes, allowedHosts/blockedHosts rejection, and the all-empty-policy case.
- base_container_runner: add 4 validate_runner tests covering the same policy fields; the empty-policy case is guarded on hosts where the BaseContainer API isn't present.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sdk: add test seam for Windows build query; cover isolation_session availability gate
- Extract a WindowsBuildQuery seam in platform.ts so the IsolationSession version check (build 26300.8553+) can be exercised deterministically without depending on the host's actual build.
- Add 5 unit tests covering the gate: below threshold, exactly at threshold, newer major, registry-unavailable, and the 'processcontainer is always the default on Windows now that the SDK build gate is removed' regression guard.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* README: point @microsoft/mxc-sdk badge link at the npm package page
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* appcontainer_runner: drop 'on downlevel hosts' qualifier from proxy UAC warning
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move shared Windows policy-error strings into a dedicated module
script_runner.rs is platform-agnostic; cfg-gating Windows-only constants under it was a layering smell. Move them into a new wxc_common::windows_policy_errors module declared under the existing cfg(target_os = windows) block in lib.rs, alongside the other Windows-only modules. No per-item cfg gates needed; both runners now use crate::windows_policy_errors::*.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move shared error strings into error.rs; switch README example to PowerShell
- Drop the dedicated windows_policy_errors module; put the two pub(crate) const strings in error.rs (the obvious place readers look for error-related stuff) behind per-item cfg(target_os=windows) gates.
- README ETW-tracing example now uses PowerShell instead of Python and sets policy.ui.allowWindows=true since PowerShell needs win32k at startup.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Gate the unsupported-policy-field reject to BaseContainer-era schemas only
The 0.4.0-alpha legacy AppContainer path natively honors blockedHosts (Windows Firewall) and deniedPaths (DACL on Tier 3 hosts), so the strict reject we surface for BaseContainer (0.5.0-alpha+) must not fire on 0.4 configs. Use is_base_container_version() to scope both runners checks.
Also reword the error strings from "on Windows" to "on this Windows backend" so they accurately describe the BaseContainer-era scope.
Added two legacy-schema tests (one per runner) confirming 0.4 configs with deniedPaths/allowedHosts/blockedHosts pass through validate_runner unchanged.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: soften SDK framing in root README; drop firewall details from SDK 0.4 heads-up
- Root README: drop the "supported integration surface" claim; just note the SDK exists and link to its README.
- SDK README: replace the 0.4-specific firewall/proxy/elevation paragraph with a concise statement that host allow/block lists are not implemented on Windows; point at defaultNetworkPolicy / network.proxy as alternatives.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Reject deniedPaths and host lists unconditionally on Windows; prune obsolete test configs
The SDK README now states host allow/block lists are not implemented on Windows (period), so the runner-side schema gate that exempted 0.4.0-alpha was inconsistent with the docs. Remove the gate from both AppContainer and BaseContainer runners; restore the original on-Windows error wording.
Test configs whose entire purpose was exercising the now-rejected fields are deleted:
- tests/examples/02_filesystem_access.json (deniedPaths)
- tests/examples/03_network_restricted.json (allowedHosts)
- tests/examples/04_combined_restrictions.json (both)
- tests/configs/network_{both,capabilities,default,firewall}_test.json (allowedHosts variants)
tests/examples/11_localhost_proxy_processcontainer.json keeps its proxy assertions; the allowedHosts entry is dropped.
Drop the legacy-schema unit tests added in the previous commit; revert the request helpers to ExecutionRequest::default().
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* wxc/main: drop obsolete deniedPaths warning that contradicted the new reject path
The warning told users to enable BaseContainer (via --experimental or schema 0.5+) to make deniedPaths work, which is the exact configuration that now errors out. Removing it.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Restore firewall / deniedPaths test configs (expected-to-fail until implemented)
Per Alex: keep these as forward-looking regression coverage. They currently fail with our not-yet-supported errors; future work will make them pass.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* error.rs: drop the now-stale gate/legacy-path commentary
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Sync integration test lockfile to SDK 0.6.0
sdk/tests/integration/package-lock.json regenerated; mxc-sdk link now resolves at 0.6.0.
Skipping playground for now: its package.json has a broken file: path (file:../sdk dating back to the PR #459 reorg that moved playground under tests/). Fixing it correctly resolves the SDK link but rewrites ~1k lines of phantom transitive deps the old broken path was pinning. Leaving that for a focused PR.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* cargo fmt: reorder use statements
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address Copilot review: correct field names, drop stale Windows row, fix UI block in README example
- error.rs + sdk/README: defaultNetworkPolicy -> network.defaultPolicy; deny -> block.
- sdk/README troubleshooting: drop the pre-24H2 Windows clause now that computeSupport always reports isSupported on Windows.
- README PowerShell example: top-level ui.disable=false (the actual wire field) instead of the bogus policy.ui.allowWindows.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update based on comment
* platform tests: align iso_session gate tests with major-only check from baf0f5f
baf0f5f simplified isIsoSessionSupported to `major > 26300` (UBR not verifiable outside Insider Preview). The "exactly 26300.8553 -> included" test still asserted the old `>= 8553` semantics and failed in CI.
Updated the test set: 26300.x is now omitted (regardless of minor), 26400.x is included, plus the existing null and far-below cases.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* platform: pin isolation_session gate to 26300.>=8553 (Insider Preview band)
Per manager: drop the `major > 26300` fallback; require the specific Insider Preview build that introduced IsolationSession. Future major builds will be added explicitly when they ship support.
Test set: 26300.8552 omitted, 26300.8553 included, 26300.9999 included, 26400.x omitted (gate pinned), null omitted, plus the processcontainer-always regression guard.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* integration tests: allow wxc-host-prep.exe; simplify dry-run assertion
- EXPECTED_WINDOWS_BINARIES: add wxc-host-prep.exe so the "no unexpected binaries" check accepts the binary this PR added to the Windows signPattern. Also auto-generates a "should include wxc-host-prep.exe" sub-test.
- assertDryRunResult: drop the DryRunExpectation enum and the expectDryRunValidationPass wrapper. The previous processmodel.dll heuristic assumed BaseContainer was the only viable route on schema 0.5+, but the dispatcher always falls back to AppContainer+DACL via the default fallback.allowDaclMutation=true. Simplified to a 3-arg helper that only asserts the pass case; failures are real regressions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📖 Description
Cleaning up the repository. Move all test scripts under one subfolder.
🔗 References
🔍 Validation
Ran tests locally. Fingers crossed CI works :)
✅ Checklist
📋 Issue Type
Microsoft reviewers: PR builds don't auto-run (ADO policy). Comment
/azp runto start
MXC-PR-Build. See docs/pull-requests.md.Microsoft Reviewers: Open in CodeFlow