Skip to content

Move tests, examples, playground under a single tests folder#459

Merged
kanismohammed merged 1 commit into
mainfrom
user/stscha/move_tests
May 29, 2026
Merged

Move tests, examples, playground under a single tests folder#459
kanismohammed merged 1 commit into
mainfrom
user/stscha/move_tests

Conversation

@shschaefer

@shschaefer shschaefer commented May 29, 2026

Copy link
Copy Markdown
Collaborator

📖 Description

Cleaning up the repository. Move all test scripts under one subfolder.

🔗 References

🔍 Validation

Ran tests locally. Fingers crossed CI works :)

✅ Checklist

📋 Issue Type

  • Bug fix
  • Feature
  • Task

Microsoft reviewers: PR builds don't auto-run (ADO policy). Comment /azp run
to start MXC-PR-Build. See docs/pull-requests.md.

Microsoft Reviewers: Open in CodeFlow

Copilot AI review requested due to automatic review settings May 29, 2026 18:14
@shschaefer
shschaefer requested review from a team and kanismohammed May 29, 2026 18:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, and tests/scripts, updating docs and helper code to reference the new paths.
  • Added/relocated additional test runner scripts (PowerShell + shell) and a new tests/playground Electron-based playground for interactive sandbox testing.
  • Updated CI/pipeline and documentation references from legacy test_configs/, test_scripts/, and examples/ paths to the new tests/ 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

  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root (breaking default paths like src\target\...). From tests/scripts, you only need to go up two levels to reach the repo root.
    tests/scripts/run_test_configs.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root and breaks the default src\target\... and tests\configs paths.
    tests/scripts/run_wslc_all_tests.ps1:41
  • $RepoRoot walks up three directories from tests/scripts, so it points outside the repo and tests\configs won't be found by default.
    tests/scripts/run_windows_sandbox_tests.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root and breaks tests\configs discovery.
    tests/scripts/run_pwsh_test.ps1:16
  • $RepoRoot currently resolves to the parent of the repo root (3x Split-Path -Parent from tests/scripts). This will break default BinDir and config discovery.
    tests/scripts/run_examples.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which points outside the repo and breaks default config discovery.
    tests/scripts/run_lpacac_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default tests\configs lookup.
    tests/scripts/run_microvm_basic_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which points outside the repo and breaks default config and binary discovery.
    tests/scripts/run_basicac_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root (breaking default paths like src\target\...). From tests/scripts, you only need to go up two levels to reach the repo root.
    tests/scripts/run_test_configs.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root and breaks the default src\target\... and tests\configs paths.
    tests/scripts/run_wslc_all_tests.ps1:41
  • $RepoRoot walks up three directories from tests/scripts, so it points outside the repo and tests\configs won't be found by default.
    tests/scripts/run_windows_sandbox_tests.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root and breaks tests\configs discovery.
    tests/scripts/run_pwsh_test.ps1:16
  • $RepoRoot currently resolves to the parent of the repo root (3x Split-Path -Parent from tests/scripts). This will break default BinDir and config discovery.
    tests/scripts/run_examples.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which points outside the repo and breaks default config discovery.
    tests/scripts/run_lpacac_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default tests\configs lookup.
    tests/scripts/run_microvm_basic_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which points outside the repo and breaks default config and binary discovery.
    tests/scripts/run_basicac_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root (breaking default paths like src\target\...). From tests/scripts, you only need to go up two levels to reach the repo root.
    tests/scripts/run_test_configs.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root and breaks the default src\target\... and tests\configs paths.
    tests/scripts/run_wslc_all_tests.ps1:41
  • $RepoRoot walks up three directories from tests/scripts, so it points outside the repo and tests\configs won't be found by default.
    tests/scripts/run_windows_sandbox_tests.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves to the parent of the repo root and breaks tests\configs discovery.
    tests/scripts/run_pwsh_test.ps1:16
  • $RepoRoot currently resolves to the parent of the repo root (3x Split-Path -Parent from tests/scripts). This will break default BinDir and config discovery.
    tests/scripts/run_examples.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which points outside the repo and breaks default config discovery.
    tests/scripts/run_lpacac_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default tests\configs lookup.
    tests/scripts/run_microvm_basic_test.ps1:16
  • $RepoRoot walks up three directories from tests/scripts, which points outside the repo and breaks default config and binary discovery.
    tests/scripts/run_microvm_tests.ps1:37
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and will break default tests\configs path resolution.
    tests/scripts/run_isolation_session_tests.ps1:61
  • $RepoRoot walks up three directories from tests/scripts and ends up outside the repo, breaking the default tests\configs location.
    tests/scripts/run_isolation_session_state_aware_tests.ps1:50
  • $RepoRoot walks up three directories from tests/scripts and ends up outside the repo, breaking the default tests\configs fixture lookup.
    tests/scripts/run_isolation_session_resize_smoke.ps1:51
  • $RepoRoot is computed by walking up three directories from tests/scripts, which points outside the repo. This script expects $RepoRoot to be the repo root.
    tests/scripts/run_filesystem_bfs_test.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_filesystem_bfsreadonly_test.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_filesystem_bfs_spaces_test.ps1:10
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_appcontainer_proxy_tests.ps1:13
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default path resolution.
    tests/scripts/run_microvm_tests.ps1:37
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and will break default tests\configs path resolution.
    tests/scripts/run_isolation_session_tests.ps1:61
  • $RepoRoot walks up three directories from tests/scripts and ends up outside the repo, breaking the default tests\configs location.
    tests/scripts/run_isolation_session_state_aware_tests.ps1:50
  • $RepoRoot walks up three directories from tests/scripts and ends up outside the repo, breaking the default tests\configs fixture lookup.
    tests/scripts/run_isolation_session_resize_smoke.ps1:51
  • $RepoRoot is computed by walking up three directories from tests/scripts, which points outside the repo. This script expects $RepoRoot to be the repo root.
    tests/scripts/run_filesystem_bfs_test.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_filesystem_bfsreadonly_test.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_filesystem_bfs_spaces_test.ps1:10
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_appcontainer_proxy_tests.ps1:13
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default path resolution.
    tests/scripts/run_microvm_tests.ps1:37
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and will break default tests\configs path resolution.
    tests/scripts/run_isolation_session_tests.ps1:61
  • $RepoRoot walks up three directories from tests/scripts and ends up outside the repo, breaking the default tests\configs location.
    tests/scripts/run_isolation_session_state_aware_tests.ps1:50
  • $RepoRoot walks up three directories from tests/scripts and ends up outside the repo, breaking the default tests\configs fixture lookup.
    tests/scripts/run_isolation_session_resize_smoke.ps1:51
  • $RepoRoot is computed by walking up three directories from tests/scripts, which points outside the repo. This script expects $RepoRoot to be the repo root.
    tests/scripts/run_filesystem_bfs_test.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_filesystem_bfsreadonly_test.ps1:18
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_filesystem_bfs_spaces_test.ps1:10
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default config/binary discovery.
    tests/scripts/run_appcontainer_proxy_tests.ps1:13
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks default path resolution.
    tests/scripts/run_dacl_tests.ps1:27
  • $RepoRoot walks up three directories from tests/scripts, which resolves outside the repo and breaks src path resolution for running cargo.
    tests/scripts/README.md:66
  • The deployment helper description still references examples\ even though examples were moved under tests\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 is test_test_configs (see src/wxc_e2e_tests/tests/e2e_windows.rs).
    tests/scripts/README.md:66
  • The deployment helper description still references examples\ even though examples were moved under tests\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 is test_test_configs (see src/wxc_e2e_tests/tests/e2e_windows.rs).
    tests/scripts/README.md:66
  • The deployment helper description still references examples\ even though examples were moved under tests\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 is test_test_configs (see src/wxc_e2e_tests/tests/e2e_windows.rs).
  • Files reviewed: 52/233 changed files
  • Comments generated: 0

@shschaefer
shschaefer requested a review from bbonaby May 29, 2026 18:27
@MGudgin

MGudgin commented May 29, 2026

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@kanismohammed
kanismohammed merged commit 124b212 into main May 29, 2026
21 checks passed
@kanismohammed
kanismohammed deleted the user/stscha/move_tests branch May 29, 2026 21:18
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants