Como puedo añadir test STI simple para un paquete
Prueba una instrucción única
Tarea
Esto es un paquete algúnpquete, el cual contiene un binario: /usr/bin/algúnbinario
La manera más simple y obvia para probar este binario es ejecutarlo: algúnbinario --help y compruebe el estado de salida del resultado.
¿Como añadir este test para el paquete?
Roles de Test Estándar framework proporciona solución para la tarea. Está completamente soportado en Fedora Rawhide.
Solución
Crea un archivo tests/tests.yml
dentro del dist-git del paquete:
. ├── 0001-algo.patch ├── algún-paquete.spec ├── fuente └── pruebas └── tests.yml
tests.yml es un playbook ansible, donde describe prueba de entoro y pasos para ejecutar sus pruebas.
Hay muchas opciones y ejemplos disponibles, pero enfoque en la tarea a mano: queremos ejecutar tan solo una instrucción.
Para este caso el contenido del archivo aparecería como sigue:
- hospedaje: localhost
roles:
- rol: standard-test-basic (1)
etiquetas:
- clásico
pruebas:
- simple:
dir: .
ejecute: "algo binario --help" (2)
1 | esto es un rol de prueba estándar, tenga cuidado del entorno de prueba, bitácora, resultados archivados, etc |
2 | esto es su instrucción de prueba, esto sale con código que define la extracción de la prueba |
Envíe su cambio como una petición de pull para ver los resultados del test en el interfaz Pagure, o lo ponga directamente a dist-git y obtenga resultados de pruebas nuevas cada vez que construya el paquete en Koji.
Pruebas serán ejecutadas en un modo sin-bloqueo hasta que configure la puerta de acceso. |
Pruebas en un (sub)paquete
Tarea
Hay un paquete algún-paquete
, y hay una suite de pruebas de integración para ello empaquetado en un paquete alguna-prueba
separada, la cual proporciona el binario de run_some_tes
en la ruta del sistema.
Su logro es disparar este binario como una prueba para un paquete principal.
Solución
Lo mismo que arriba, necesita crear un archivo de configuración tests.yml
con el contenido siguiente:
---
- hosts: localhost
roles:
- rol: prueba-estándar-básica
etiquetas:
- clasico
paquetes_requeridos:
- alguna-prueba (1)
tests:
- integration_tests: (2)
dir: .
ejecutar: ejecutar_alguna_pruebas (3)
1 | paquete adicional el cual necesita ser instalado en el entorno de pruebas |
2 | cualquier cadena, será utilizada como identificador para artefactos y resultados de pruebas |
3 | instrucción de ejecución de prueba |
Pruebas en repositorio externo
Tarea
Ahora miraremos en configuración ligeramente más complicada.
Suponga hay un paquete algúnpaquete
el cual vamos a probar. Hay una suite de pruebas de integración para esto, el cual está (tristemente) aún no empaquetado y localizado en un repositorio git separado https://dondesea/algunaprueba.git
. La suite de pruebas tiene una dependencia en alguna herramienta empaquetada alguna-hherramientas
. Y en el repositorio de pruebas hay un guion ejecuta_alguna_prueba
el cual dispara la ejecución de pruebas.
El objetivo es para disparador de la ejecución de la suite de pruebas para un paquete.
Solución
Necesitamos crear un archivo tests.yml
de configuración con el siguiente contenido:
---
- hosts: localhost
roles:
- rol: standard-test-basic (1)
etiquetas:
- clasico
required_packages:
- alguna herramienta (2)
repositorios:
- repo: "https://dondesea/algunaprueba.git" (3)
dest: "alguna-prueba" (4)
tests:
- integration_tests: (5)
dir: "algunaspruebas" (6)
run: "run_some_tests --all" (7)
1 | el mismo rol de la prueba como usual |
2 | paquete adicional el cual necesita ser instalado en el entorno de pruebas |
3 | ruta para repositorio git remoto |
4 | ruta local donde el repositorio será comprobado |
5 | cualquier cadena, será utilizada como identificador para artefactos y resultados de pruebas |
6 | la misma carpeta que en <4> , contiene el repositorio externo fuera de lo comprobado |
7 | instrucción de ejecución de prueba |
Preguntas
¿Que si quiero ejecutar no uno sino una secuencia de instrucciones?
Ponga un guion de bash en la carpeta tests/scripts/ y lo ejecuta desde el playbook.
. ├── 0001-algo.patch ├── algún-paquete.spec ├── sources └── tests ├── scripts │ └── run_tests.sh (1) └── tests.yml
1 | su escenario de pruebas personales |
Configura prueba de dist-git para ejecutar este guion:
- hosts: localhost
roles:
- role: standard-test-basic (1)
tags:
- classic
tests:
- simple:
dir: scripts (2)
run: ./run_tests.sh (3)
1 | mismo rol estándar |
2 | intercambia a subcarpeta (ruta es relativo para carpeta tests/ ) |
3 | esto es el test de guion, su código de salida es el resultado del test |
¿Qué está debajo de la cobertura?
Para probar construcción:
-
comprobar repo dist-git
-
toma última imagen qcow de Fedora Rawhide
-
instala últimos paquetes desde la compilación koji sobre ello
-
ejecuta reproductor ansible definido en tests.yml
¿Como verifico mi configuración?
Es posible ejecutar y depurar localmente funciones de prueba estándar. Pero recomendamos intensivamente utilizar el flujo de trabajo de solicitud de extracción de él. simplemente cree una solicitud de extracción y espere para CI para reactivarlo.
Disparamos casi el mismo IC de maquinaria para pruebas PR como es utilizado para las nuevas construcciones.
Y tan pronto como resultado de la prueba está ya. aparecerá sobre la petición del tirador de la página en Fedora Pagure
Para reiniciar la prueba añada un comentario para PR en Pagure, con el contenido siguiente: [citest]
Want to help? Learn how to contribute to Fedora Docs ›