Quello che @hadley significa è che nei pacchetti binari, tests/
non è presente; è solo nel pacchetto sorgente. La convenzione prevede che qualsiasi cosa in inst/
venga copiata nella directory di livello superiore del pacchetto al momento dell'installazione, pertanto inst/tests/
sarà disponibile come /tests
nella struttura della directory del pacchetto binario e installata.
Vedere il mio pacchetto permute come esempio. Ho utilizzato il test di @ hadley come pacchetto didattico come esperienza di apprendimento e per i miei test sui pacchetti. Il pacchetto è CRAN. Prendi il tarball sorgente e nota che ha sia tests/
e inst/tests/
, quindi prendi il file binario di Windows e nota che ha solo tests/
e che è una copia di quello da inst/tests
nelle fonti.
Strettamente, solo tests/
viene eseguito da R CMD check
ecc così durante lo sviluppo e come controlli nei pacchetti di produzione è necessario il codice in tests/
per verificare che il pacchetto esegua ciò che afferma o altri test di unità. Ovviamente è possibile avere il codice che esegue gli script R in /inst/tests/
che effettivamente eseguono i test, e. Ciò ha anche l'effetto collaterale di rendere disponibile il codice di prova per gli utenti del pacchetto.
Il modo in cui vedo le cose è che è necessario almeno tests/
, se è necessario il numero inst/tests
dipenderà da come si desidera sviluppare il pacchetto e da quale codice di test dell'unità/pacchetti si sta utilizzando. Lo inst/tests/
è qualcosa che @hadley sostiene, ma è ben lungi dall'essere uno standard su gran parte di CRAN.
fonte
2012-02-27 23:11:33
Oh, capisco - pensavo che i test/stavo vedendo erano in realtà i test/dallo sviluppatore. Non avevo capito che era inst/tests /. Grazie. –
Bene, prendiamo il quarto paragrafo con un po 'di sale. Questo torna davvero a ciò che Martin Maechler ha inventato, inizialmente per alcuni pacchetti Rmetrics. 'inst/tests' era stato usato * anni * prima del test che era stato scritto. –
@DirkEddelbuettel Grazie per la lezione di storia; non sapeva che questo era dovuto a Martin. Tuttavia, resta ancora in piedi; questo è lontano dallo standard, anche se sia Martin * che * Hadley lo usano ;-) –