Ejemplos
En esta página usted pueden encontrar inspiración de ejemplos de la vida real de pruebas ya habilitadas en Fedora CI.
did
Para cada componente tiene sentido habilitar incluso la prueba más simple como ejecutar el binario con --help
o usar una prueba de humo interna. Aquí hay un ejemplo para el componente [did] https://src.fedoraproject.org/rpms/did/pull-request/5:
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- smoke:
dir: .
run: did this year --test
required_packages:
- did
Eso es. Como se ve arriba, ejecutar un sencillo comando como prueba es muy fácil con la ayuda de la función Basic.
Python
Hay múltiples versiones del lenguaje de programación Python disponibles en Fedora y en diversos subpaquetes relacionados. Como todos ellos deben ser probados (incluyendo sus diversas combinaciones) nosotros share probamos la cobertura de ellas en el espacio de nombre tests
:
El repositorio de pruebas contiene pruebas de humo básicas para entornos virtuales junto con pruebas de ejemplo Metadata almacenado en Flexible Metadata Format:
Una vez está disponible la prueba en el repositorio de pruebas compartido es fácilmente enlazable desde las versiones Python soportadas:
Probamos también implementaciones Python adicionales:
Además nos aseguramos que herramientas esenciales para venv y virtualnv, como setuptools
, pip
o virtualenv
trabajen correctamente con todas las versiones soportadas:
Advierta que para el último conjunto de ejemplos corremos las mismas pruebas varias veces con el entorno modificado. Por ejemplo:
- smoke36:
dir: python/smoke
run: VERSION=3.6 ./venv.sh
- smoke37:
dir: python/smoke
run: VERSION=3.7 ./venv.sh
- smoke26:
dir: python/smoke
run: VERSION=2.6 METHOD=virtualenv TOX=false ./venv.sh
- smoke27:
dir: python/smoke
run: VERSION=2.7 METHOD=virtualenv ./venv.sh
- smoke34_virtualenv:
dir: python/smoke
run: VERSION=3.4 METHOD=virtualenv ./venv.sh
De este modo creamos diversos casos de prueba virtuales desde un único código de prueba lo que evita la duplicación y minimiza el mantenimiento futuro.
Shell
Hay diversos shells que implementan la especificación POSIX: bash, ksh, mksh, zsh, dash. Todos ellos comparten una cantidad significativa de cobertura de pruebas y esto hace que pierda sentido el enviar & mantener pruebas idénticas en cinco repositorios diferentes (+ sus posibles ramas). De este modo almacenamos el código de pruebas en el espacio de nombre tests
:
Estas pruebas se enlazan después desde todos los ficheros tests.yml
relevantes:
El filtro Flexible Metadata Format se usa para seleccionar las pruebas apropiadas en lugar de listar las pruebas de forma individual manualmente. Las variables de entorno PACKAGES
y SH_BIN
se usan para especificar que implementación de shell está siendo probada:
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
dest: "shell"
fmf_filter: "tier: 1, 2 & tags: classic"
environment:
PACKAGES: ksh
SH_BIN: ksh
required_packages:
- ksh
- expect # login requires expect
- which # smoke requires which
Algunas pruebas pueden ser relavantes solo para componentes seleccionados. Este se puede manejar fácilente con la condición adicional component
:
repositories:
- repo: "https://src.fedoraproject.org/tests/shell.git"
dest: "shell"
fmf_filter: "tier: 1, 2 & component: dash"
Vea la página Metadata para la lista completa de los atributos redactados hasta ahora.
SELinux
Hay diversos componentes relacionados con SELinux. Están estrechamente conectados de modo que los cambios en uno pueden causar problemas en otros. Esto es porque sus pruebas son compartidas y ejecutadas juntas:
En lugar de listar las pruebas relevantes a ser ejecutadas manuamente en cada repositorio dist git rpms repository se usa Flexible Metadata Format:
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
repositories:
- repo: "https://src.fedoraproject.org/tests/selinux.git"
dest: "selinux"
fmf_filter: "tier: 1 | component: selinux-policy"
El filtro fmf_filter
suministrado selecciona todas las pruebas relevantes para el componente selinux-policy
más todas las pruebas Tier 1 selinux:
tier: 1 | componente: selinux-policy
Se cubren los siguientes seis componentes:
Use la herramienta de línea de comandos fmf
para comprobar rápidamente que pruebas serán planificadas:
# dnf install -y fmf # fedpkg clone -a tests/selinux # cd selinux # fmf ls --filter "tier: 1 | component: checkpolicy" /selinux-policy/policy-rpm-macros /checkpolicy/sedispol /checkpolicy/checkmodule /checkpolicy/sedismod /checkpolicy/checkpolicy /checkpolicy/checkpolicy-docs /libsepol/sepol_check_context /libsemanage/verify-options-in-semanage-conf /libselinux/getsebool /policycoreutils/booleans
Vea la documentación de Formato Flexible de Metadatos para otras de como instalar install fmf.
Want to help? Learn how to contribute to Fedora Docs ›