Skip to content

Inicialización del repositorio

Pacha Cervantes edited this page Jul 4, 2022 · 10 revisions

Prerrequisitos

El propósito es usar git para coordinar el trabajo, así como pruebas automáticas que revisen que los problemas tienen entradas válidas y que las soluciones de prueba saquen los puntos esperados.

La descripción del formato de estos archivos y la organización de las carpetas está en este documento. Te recomendamos leerlo después de leer la wiki.

También, no olvides leer la sección de convenciones.

Inicialización de un nuevo repositorio

  1. Crea un nuevo repositorio de git.
  2. Inicializa un submódulo de git en tu repositorio conteniendo este repositorio (omegaUp-deploy) bajo una carpeta llamada utils.
  git submodule add https://github.com/omegaup/omegaUp-deploy.git utils
  1. Copia la carpeta de .github del repositorio de ejemplo (particularmente los contenidos de .github/workflows), y crea los siguientes secretos en tu repositorio:
  1. Crea un archivo problems.json en la raíz del proyecto con una lista de problemas vacía. Este es el punto de entrada de los scripts. Puedes ver un ejemplo del formato en el repositorio de ejemplo..
  2. Agrega un archivo .lint.config.json en la raíz del proyecto. Si tu proyecto utiliza Python, probablemente te interese también un .pylintrc.

Si todo está funcionando correctamente, debería haber corrido el flujo de build-test-deploy sin realizar nada, ya que la lista de problemas está vacía.

Ahora puedes avanzar a la siguiente sección, para crear un nuevo problema.

Cómo correr los tests localmente

Cambiar el directorio a la raíz del proyecto.

Si no lo has hecho aún, la primera vez necesitas bajar el submódulo de utilidades para omegaUp:

git submodule init && git submodule update

Asegúrate de tener instalado lo siguiente:

Después, aún desde la raíz del proyecto, corre

./utils/lint fix --all
./utils/runtests.py --all --overwrite-outs
  • --all especifica que quieres correr los tests de todos los problemas. Si no lo usas, se corren solamente tests de los problemas que se han modificado.
  • --overwrite-outs especifica que ignore los archivos .out si ya existen: cuando los problemas ya tienen casos y solución oficial esto ayuda a que si cambiaron los casos o las soluciones, las salidas siempre sean acordes con la solución oficial.