Condividi Codice di Test
Motivazione
Per rendere il flusso di lavoro della CI affidabile ed efficiente, è cruciale mantenere la copertura dei test sempre in buono stato. Condividere il codice di test tra diversi pacchetti (anche tra più rami dello stesso pacchetto) può aiutare in modo significativo a:
-
Prevenire la duplicazione del codice di test
-
Minimizzare la manutenzione dei test
-
Rilevare le incompatibilità in anticipo
In generale, i test definiscono come funziona il software e la funzionalità di base di molti pacchetti non cambia così spesso. Ci sforziamo di mantenere la compatibilità all’indietro dove possibile. Pertanto, sembra naturale che, per tali componenti, i test che proteggono la specifica possano cambiare a un ritmo più lento rispetto ai rami di distribuzione.
Vedi l’intera discussione sulla ci-list per ulteriori dettagli sul contesto.
Attuazione
Memorizza il codice dei test nel tuo repository preferito e fai riferimento ai test dal file yaml di dist-git. Esiste anche un namespace speciale tests dedicato alla memorizzazione dei test di integrazione di Fedora CI:
Usa fedpkg per clonare rapidamente i repository dal namespace tests:
fedpkg clone tests/shell
Esempi
Ecco alcuni esempi reali in cui la condivisione del codice dei test può aumentare l’efficienza a lungo termine.
SELinux
Diversi componenti dello spazio utente di SELinux condividono la copertura dei test in un unico repository di test selinux:
Ruby
Un altro esempio è Ruby: con circa 80 pacchetti relativi a Ruby on Rails, sarebbe utile ed efficiente avere un unico punto per i test di integrazione che verifichino che il framework funzioni correttamente dopo l’aggiornamento di uno qualsiasi di questi pacchetti. Al contrario, mantenere tali test in 80 repository sarebbe un compito noioso.
Attualmente il repository condiviso tests/ruby ospita questi tre test di integrazione di Ruby:
-
systemtap-static-probes-in-ruby - esercizio dell’api systemtap di ruby
-
tls-minimal-version - ensure Ruby OpenSSL respects crypto-policies
-
run-basic-rails-application - esecuzione di una semplice applicazione rails
Shell
Ci sono diverse shell che implementano la specifica POSIX:
-
bash
-
ksh
-
mksh
-
zsh
-
dash
Tutti condividono una quantità significativa di copertura dei test e non ha senso eseguire il commit e mantenere test identici in cinque repository diversi (+ eventuali branch).
Repository dei test per le shell:
Bash plans/shell.fmf:
summary:
Run relevant tests from the shell tests repository
discover:
how: fmf
url: https://src.fedoraproject.org/tests/shell
filter: component:bash
execute:
how: tmt
environment:
PACKAGES: bash
SH_BIN: bash
Avvia
Per creare un nuovo repository nel namespace tests, usa il comando request-tests-repo di fedpkg. Ad esempio, per creare un repository di test condiviso con il nome foo, che sarà disponibile su [https://src.fedoraproject.org/tests/foo.git](https://src.fedoraproject.org/tests/foo.git)
-
Configura l’autenticazione su pagure in base alla guida del comando request-repo
fedpkg request-repo -h
-
Richiedi un nuovo repository con una descrizione sensata
fedpkg request-tests-repo foo "Descrizione del repository"
Want to help? Learn how to contribute to Fedora Docs ›