--- name: gradle_unit_test kind: function lang: bash domain: infra version: "1.0.0" purity: impure signature: "gradle_unit_test(project_dir: string, module: string, --variant : string) -> int" description: "Corre unit tests JVM de un modulo Android (no requiere emulador)." tags: ["android", "gradle", "kotlin", "test", "junit"] uses_functions: ["gradle_run_bash_infra"] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] tested: false tests: [] test_file_path: "" file_path: "bash/functions/infra/gradle_unit_test.sh" params: - name: project_dir desc: "Raiz del proyecto Android con settings.gradle[.kts]." - name: module desc: "Modulo Gradle. Default: app" - name: "--variant " desc: "Build variant (Debug|Release). Default Debug" output: "Stdout con resultados JUnit. Linea final 'REPORT: '. Exit code = test runner exit (0 OK, 1 fallos)." notes: | JVM only — Compose Composables que necesitan device se testean con gradle_instrumented_test. Para tests Compose en JVM usar Roborazzi (gradle_screenshot_test). La funcion hace source de gradle_run.sh desde el mismo directorio (bash/functions/infra/). La dependencia gradle_run_bash_infra debe existir junto a este archivo. --- ## Ejemplo ```bash source bash/functions/infra/gradle_unit_test.sh # Tests del modulo app con variante Debug (por defecto) gradle_unit_test /home/lucas/projects/myapp # Tests del modulo :core con variante Release gradle_unit_test /home/lucas/projects/myapp core --variant Release # Verificar que paso if gradle_unit_test /home/lucas/projects/myapp; then echo "Todos los tests pasaron" else echo "Hay tests fallidos — revisar el report HTML" fi ``` ## Notas JVM only — Compose Composables que necesitan device se testean con `gradle_instrumented_test`. Para tests Compose en JVM usar Roborazzi (`gradle_screenshot_test`). El task ejecutado es `:$module:test${variant}UnitTest` (ej. `:app:testDebugUnitTest`). El report HTML se imprime al final como `REPORT: ` para facilitar parseo por agentes o scripts upstream.