Pruebas Genéricas

Las pruebas genéricas son tests que no comprueban solo componentes especificados (p.e. "dnf" o "kernel") pero pueden ser típicamente aplicados a todos los artefactos de un cierto tipo. Un ejemplo de tales como un test pudo ser un test que puede ser ejecutado en todos las construcciones de RPM en una actualización de Bodhi.

Fedora CI actualmente proporciona tres test genéricos. Todo ello ejecuta sobre paquetes que están siendo ampujados a Rawhide por medio de actualizaciones Bodhi.

rpmdeplint

rpmdeplint es un test genérico que intente identificar problemas en paquetes RPM dentro del contexto de su dependencia gráfica.

Hay cuatro diferentes comprobaciones que realiza el test:

check-sat

Esto comprueba si todas las dependencias en tiempo de ejecicón de los paquetes RPM dados serían satisfechos si los paquetes están puestos para el repositorio dado (como Rawhide).

check-repoclosure

Esto es similar a comprobar el test check-sat, pero check-repoclosure comprueba que todos los paquetes dentro del repositorio dado que no tenga ningún problema de dependencia en tiempo de ejecución antes de que los paquetes nuevos sean añadidos, no tendrían ningún problema de dependencia tras que los paquetes sean añadidos al repositorio.

Packages are only considered to be available for dependency resolution if they are the latest version and not obsoleted by any other package. Therefore this check can detect problems where a package under test is updating an existing package in the repository, but it no longer provides a requirement needed by some other package in the repository.

Paquetes con problemas pre-existente de cierre de repositorio son descartados.

check-conflicts

This checks for undeclared file conflicts in the given RPM packages: that is when one of the given packages contains a file which is also contained in some other package.

Esta instrucción no informará un archivo como conflicto entre dos paquetes si:

  • hay un Conflicto RPM explícito entre los dos paquetes; o

  • the file’s checksum, permissions, owner, and group are identical in both packages (RPM allows both packages to own the file in this case); or

  • the file’s color is different between the two packages (RPM will silently resolve the conflict in favor of the 64-bit file).

Sometimes files can be owned by literally thousands of different packages. In order to properly check that there are no file conflicts, rpmdeplint would need to download all other packages. This would be very slow, so only a single other package is downloaded and checked.

check-upgrade

Checks that there are no existing packages in the repositories which would upgrade or obsolete the given packages.

If this check fails, it means that the package under test will never be installed (since the package manager will always pick the newer or obsoleting package from the repositories instead) which is not desirable, assuming the package is intended as an update.

rpminspect

RPM build deviation analysis tools. rpminspect looks at the output of an RPM build (e.g., the output of a Koji build) and examines the contents of the build artifacts to report:

  • Cumplimiento de normativa

  • Cambia desde una compilación anterior para la compilación actual

    • la anterior construcción es la última construcción dentro del repo estable (en Rawhide, es simplemente la anterior construcción)

  • Corrección general y mejores prácticas

rpminspect performs more than 30 different checks on packages. To list all of them, with a nice description, please run rpminspect -v -l.

installability

Esto es un test genérico que intenta realizar las siguientes operaciones en los paquetes dados:

  • dnf install

  • dnf remove

  • dnf update

  • dnf downgrade

Todos los problemas son puestos en la bitácora e informados.