Skip to content

Repository files navigation

Kata Setup

Plantillas aisladas para practicar TDD y testing en JavaScript, TypeScript, Deno, Python, PHP, Java, Scala, Kotlin, C# y Go.

Experiencia rapida

Instala mise, Task y Docker. Cada proyecto es independiente y tiene su propio mise.toml y Taskfile.yml con las tareas de su ecosistema. Los mise.toml gestionan las versiones de las herramientas; el Taskfile.yml raiz ofrece una interfaz uniforme.

Ayuda de Task

Desde la raiz:

task help
task --list

Desde cualquier proyecto:

cd python
task help
task --list

La tarea help muestra las operaciones disponibles y sus descripciones. El flujo habitual es:

Desde la raiz, el flujo uniforme es:

task install:javascript
task test:javascript
task docker:test:javascript
task test:all
task docker:test:all

task --list-all muestra todas las tareas con nombres compuestos.

Tambien puedes entrar en cualquier proyecto y ejecutar directamente:

cd python
task install
task test
task docker:test

Los comandos directos y el troubleshooting completo estan en el README.md de cada carpeta.

Experiencia con mise

mise gestiona las versiones de todas las herramientas desde archivos mise.toml. Cada sub-proyecto declara sus herramientas y tareas en su propio mise.toml.

Instalacion

curl https://mise.run | sh

Activacion

# Bash
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc

# Zsh
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc

# Fish
echo '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish

Reiniciar la sesion del shell despues de modificar el archivo de configuracion.

Uso

Desde cualquier sub-proyecto:

cd javascript
mise install        # instala node y pnpm con las versiones correctas
mise run install    # instala dependencias del proyecto
mise run test       # ejecuta los tests

Desde la raiz, entrar en el sub-proyecto deseado:

cd python
mise install
mise run install
mise run test

Herramientas por sub-proyecto

Sub-proyecto Herramientas gestionadas por mise
javascript Node.js 26.7.0, pnpm 11.15.1
typescript Node.js 26.7.0, pnpm 11.15.1
typescript-deno Deno 2.9.0
python Python 3.14, uv 0.12.1
php PHP 8.5
java JDK 26 (Eclipse Temurin EA)
kotlin JDK 26 (Eclipse Temurin EA)
scala JDK 26 (Eclipse Temurin EA), Scala 3.8.4, sbt 1.11.7
csharp .NET SDK 10.0 (preview)
go Go 1.26

Notas

  • mise gestiona las versiones de los runtimes y herramientas de sistema. Los wrappers de los proyectos (mvnw, gradlew) siguen gestionando las versiones de los build tools (Maven, Gradle).
  • Los archivos .nvmrc, .python-version y package.json se mantienen para compatibilidad con nvm, fnm, uv y otros gestores.
  • Docker sigue siendo la validacion reproducible. mise es para desarrollo local.

Proyectos

  • javascript: Node 26, pnpm, Vitest y Vite.
  • typescript: Node 26, pnpm, TypeScript, Vitest y Vite.
  • typescript-deno: Deno 2.9, JSR y deno.lock.
  • python: Python 3.14 y uv.
  • php: PHP 8.5, Composer, PHPUnit e Infection.
  • java: JDK 26 y Maven.
  • scala: Scala 3.8.4, sbt y MUnit.
  • kotlin: Kotlin 2.4.10, Gradle y MockK.
  • csharp: .NET 10, xUnit, Shouldly y NSubstitute.
  • go: Go 1.26 y testing de la libreria estandar.

Gestores locales

  • mise (recomendado): gestiona todas las herramientas desde mise.toml.
    curl https://mise.run | sh
    eval "$(mise activate bash)"  # o zsh/fish
    cd javascript && mise install
  • Node: nvm o fnm (alternativa a mise).
  • Python: uv (alternativa a mise).
  • Java, Kotlin y Scala: SDKMAN! (alternativa a mise).
  • Go, PHP y .NET: gestor oficial o mise.
  • Deno: instalador oficial o mise.

Docker es autonomo y no depende de estos gestores del host.

Verificacion

La calidad se verifica ejecutando la tarea test:<proyecto> desde la raiz o task test dentro del proyecto. La validacion reproducible de cada proyecto se ejecuta tambien en su imagen Docker mediante docker:test:<proyecto> o task docker:test.

Una validacion completa debe terminar sin errores en task test:all y task docker:test:all. Los proyectos que incluyen comprobaciones adicionales las exponen en sus tareas locales, como lint, typecheck, vet, format:check, audit o mutation.

Politicas

  • Versiones estables actuales, sin previews.
  • Lockfiles versionados.
  • No se usa npm en los proyectos Node; se usa pnpm.
  • No se usa Pipenv; Python usa uv.
  • No se usa Docker Compose.
  • No se usa GitHub Actions.
  • No se usa FluentAssertions; C# usa Shouldly.

Herramientas y decisiones

  • mise: gestiona las versiones de runtimes y herramientas de desarrollo desde archivos mise.toml por sub-proyecto. Sustituye la necesidad de multiples gestores (nvm, pyenv, SDKMAN!, etc.) con una sola herramienta polyglot.
  • Task: unifica las operaciones habituales sin ocultar los comandos propios de cada lenguaje. Cada proyecto tiene su propio Taskfile.yml y la raiz solo los orquesta.
  • Docker: permite ejecutar cada kata en un entorno aislado y reproducible. Los Dockerfiles usan tags de version explicitos, sin digests SHA-256, segun la politica del repositorio.
  • pnpm: sustituye npm en JavaScript y TypeScript por su store y su instalacion basada en lockfile, reduciendo duplicacion y mejorando la trazabilidad de dependencias.
  • Vitest: sustituye Jest por un runner moderno integrado con el ecosistema Vite y adecuado para tests JavaScript/TypeScript.
  • Vite: proporciona la infraestructura de configuracion y transformacion que Vitest utiliza; no se introduce un servidor web innecesario en las katas.
  • Deno: ejecuta la kata TypeScript aislada con permisos explicitos y lockfile propio.
  • JSR: proporciona los modulos modernos de aserciones y testing usados por Deno.
  • uv: sustituye Pipenv para gestionar Python, entornos, versiones, dependencias y uv.lock desde una sola herramienta.
  • Composer: resuelve PHP y conserva composer.lock para instalaciones reproducibles.
  • PHPUnit: framework oficial de tests PHP; el test usa atributos compatibles con PHPUnit 12.
  • Infection: mantiene mutation testing en PHP.
  • Maven: gestiona Java y sus dependencias de test.
  • JUnit: framework de testing Java actualizado.
  • Scala: el proyecto se migro a Scala 3.
  • sbt: build tool de Scala y resolucion de sus dependencias.
  • MUnit: framework de tests Scala.
  • Kotlin: compilador y plugin JVM actualizado.
  • Gradle: wrapper actualizado para construir y ejecutar Kotlin.
  • MockK: mocking para tests Kotlin.
  • .NET: runtime y SDK actualizado a .NET 10.
  • xUnit.net: framework de tests C#.
  • Shouldly: sustituto de FluentAssertions para evitar una dependencia con licencia comercial para uso comercial.
  • NSubstitute: mocking en C#.
  • Go: runtime y toolchain Go actualizado; los tests usan el paquete estandar testing.

About

A setup for code katas

Resources

Stars

8 stars

Watchers

7 watching

Forks

Used by

Contributors

Languages