---
name: e2e_run_cpp_windows
lang: bash
domain: infra
description: "Cross-compila una app C++ del registry para Windows con mingw-w64, deploy al Desktop\\apps de Windows (matando instancia previa con taskkill.exe), lanza el .exe nativamente desde WSL y devuelve stdout + exit code. Pensado para tests headless tipo altsnap_jitter_test."
tags: [windows, e2e, cross-compile, test, mingw]
purity: impure
kind: function
signature: "e2e_run_cpp_windows(target string, --no-build, --no-deploy) int"
params:
  - name: target
    desc: "Nombre del target CMake del registry (ej. altsnap_jitter_test)"
  - name: --no-build
    desc: "Saltar cross-compile (usa el .exe ya construido en cpp/build/windows/)"
  - name: --no-deploy
    desc: "Saltar copia a Desktop\\apps (asume que ya esta deployed)"
output: "Exit code del .exe (0 = pass, no-cero = fail). stdout/stderr del .exe se imprimen tal cual."
uses_functions:
  - build_cpp_windows_bash_infra
uses_types: []
returns: ""
returns_optional: false
error_type: "exit_code_bash_core"
imports: []
example: |
  source bash/functions/infra/e2e_run_cpp_windows.sh
  e2e_run_cpp_windows altsnap_jitter_test
  # cross-compila, taskkill previo, copia a /mnt/c/Users/lucas/Desktop/apps/altsnap_jitter_test/
  # ejecuta y devuelve exit code
tested: false
file_path: "bash/functions/infra/e2e_run_cpp_windows.sh"
---

Lanzador para tests e2e de apps C++ en Windows desde WSL. Workflow:

1. **Cross-compile** via `build_cpp_windows_bash_infra` (skipable con `--no-build`).
2. **Localiza** `${target}.exe` bajo `cpp/build/windows/apps/<target>/` o el arbol completo de build.
3. **Mata instancia previa** con `taskkill.exe /IM <target>.exe /F` (evita `Permission denied` al copiar el exe).
4. **Deploy** a `/mnt/c/Users/lucas/Desktop/apps/<target>/` con sidecars (`assets/`, `runtime/`, `enrichers/`, `*.dll`).
5. **Run** nativamente desde WSL (`./target.exe` con cwd en deploy_dir, asi `local_files/` se crea ahi).
6. **Exit code** del .exe propaga al return de la funcion.

Variables de entorno:
- `FN_REGISTRY_ROOT` — raiz del registry (auto-detectado).
- `BUILD_WIN` — directorio de build cross (default `cpp/build/windows`).
- `WIN_DESKTOP_APPS` — root de deploy en Windows (default `/mnt/c/Users/lucas/Desktop/apps`).

Requiere WSL2 con interop a Windows (cmd.exe, taskkill.exe en PATH) y mingw-w64.
