Esempi

In questa pagina puoi trovare spunti tratti da esempi concreti di test già abilitati in Fedora CI.

Python

In Fedora sono disponibili diverse versioni del linguaggio di programmazione Python e numerosi sottpacchetti correlati. Poiché tutte dovrebbero essere testate (incluse le loro varie combinazioni), ne verifichiamo la copertura dei test nello spazio dei nomi tests:

Il repository di test contiene un test di base per virtualenv insieme a un test di esempio Metadati memorizzati nel formato Formato flessibile dei metadati:

Una volta che il test è disponibile nel repository di test condiviso, può essere facilmente collegato dalle versioni di Python supportate:

Testiamo anche implementazioni Python aggiuntive:

Plus we ensure that essential tools for venv and virtualenv, such as setuptools, pip or virtualenv itself correctly work with all supported versions:

Si noti che per l’ultimo set di esempi eseguiamo lo stesso test più volte con un ambiente modificato. Ad esempio:

  - name: tests_python
    how: shell
    url: https://src.fedoraproject.org/tests/python.git
    tests:
    - name: smoke36
      path: /smoke
      test:  VERSION=3.6 INSTALL_OR_SKIP=true ./venv.sh
    - name: smoke39
      path: /smoke
      test:  VERSION=3.9 INSTALL_OR_SKIP=true ./venv.sh
    - name: smoke310
      path: /smoke
      test:  VERSION=3.10 INSTALL_OR_SKIP=true ./venv.sh

In questo modo creiamo diversi casi di test virtuali a partire da un singolo codice di test, evitando duplicazioni e riducendo al minimo la manutenzione futura.

SELinux

Esistono diversi componenti correlati a SELinux. Sono strettamente interconnessi, quindi una modifica in uno di essi può causare problemi negli altri. Per questo motivo, i relativi test sono condivisi ed eseguiti congiuntamente:

Instead of listing relevant tests to be executed manually in each dist-git package repository Flexible Metadata Format is used, e.g. in libsepol:

summary: selinux tests - Tier 1 | libsepol
discover:
    how: fmf
    url: https://src.fedoraproject.org/tests/selinux
    filter: "tier: 1 | component: libsepol"
execute:
    how: tmt

The filter selects all tests relevant for the libsepol component plus all Tier 1 selinux tests.

Vengono trattate le seguenti sei componenti:

Utilizza lo strumento da riga di comando fmf per verificare rapidamente quali test verranno pianificati:

# dnf install -y fmf
# fedpkg clone -a tests/selinux
# cd selinux
# fmf ls --filter "tier: 1 | component: libsepol"
/checkpolicy/checkmodule
/checkpolicy/checkpolicy
/checkpolicy/checkpolicy-docs
/kernel/selinux-testsuite
/libselinux/matchpathcon-in-chroot-env
/libselinux/realpath_not_final-function
/libselinux/selabel-functions
/libselinux/selabel_lookup-and-local-changes
/libselinux/selinux_boolean_sub-function
/libselinux/selinux_restorecon-functions
/libselinux/selinux_sestatus-functions
/libselinux/selinux_set_callback
/libselinux/setenforce
/libselinux/validatetrans
...

Consulta la documentazione del formato di metadati flessibile per altre opzioni su come installare fmf: install fmf.