2009-07-28 12 views
7

Ho un'app che impacchetta nel modulo "binario" usando PerlApp per la distribuzione. Poiché i miei clienti vogliono una semplice installazione per i loro sistemi Win32, questo funziona molto bene.C'è un modo per pacchettizzare i miei test unitari con PAR o PerlApp?

Ora un cliente ha deciso che è necessario eseguire tutti i test di unità, come in un'installazione standard. Tuttavia, non installeranno ancora un Perl normale.

Quindi, mi trovo ad avere bisogno di un modo per impacchettare i miei test unitari per il funzionamento sui sistemi del mio cliente.

Il mio primo pensiero è stato che potevo mettere in valigia prove in un file e imballare separatamente ciascuno dei miei test. Quindi spedisci un file zip con la struttura appropriata.

Un po 'di ricerca ha dimostrato che Test :: Harness :: Straps richiama perl dalla riga di comando.

Esiste uno strumento esistente che aiuta questo processo?

Forse potrei usare lo strumento per gestire l'invocazione dei miei script di test.

Sono interessato a pensieri su come applicare sia PAR o PerlApp, sia qualsiasi idea su come affrontare Overriding Test :: Harness e amici.

Grazie.

Aggiornamento: Non ho il mio cuore impostato su PAR o PerlApp. Questi sono solo gli strumenti con cui ho familiarità. Se hai un'idea o una soluzione che richiede un packager diverso (come Cava Packager), mi piacerebbe sentirne parlare.

Aggiornamento 2: tsee ha sottolineato una nuova grande funzionalità in PAR che mi avvicina. Ci sono esperti di TAP là fuori che possono fornire alcune idee o indicazioni su dove cercare la nuova distribuzione di Test :: Harness?

risposta

4

Probabilmente non sto rompendo grandi novità se vi dico che PAR (e probabilmente anche perlapp) non sono pensati per confezionare l'intera suite di test e la pletora di sottoprodotti della generazione di moduli CPAN. Sono intesi per il pacchetto di applicazioni stand-alone o librerie di moduli JAR binari.

Detto questo, è possibile aggiungere file arbitrari in un archivio PAR (sia alle librerie .par sia agli .exe autonomi) utilizzando l'opzione pp -a. Nel caso dell'eseguibile stand-alone, il contenuto verrà estratto in $ ENV {PAR_TEMP}. "/ Inc" in fase di esecuzione.

Questo ti lascia il problema di riutilizzare l'eseguibile in package PAR per eseguire il test harness (e lasciare che esegua il tuo eseguibile come un "perl"). Ora, non ho una soluzione pronta per questo, ma di recente ho lavorato per rendere riutilizzabili gli eseguibili in pacchetti PAR come interpreti perl più o meno generalisti. Due trucchi prima di spiegare come è possibile utilizzare:

  • L'applicazione non verrà chiamata magicamente "perl" e si aggiungerà al proprio $ PATH.
  • Il "riutilizzo" dell'applicazione perl generico richiede opzioni speciali e fa non attualmente supporta le normali opzioni perl (quelle in perlrun). Può semplicemente eseguire uno script perl esterno di tua scelta.

Sfortunatamente, l'ultimo problema è ciò che può uccidere questo approccio per voi. Il supporto per le opzioni della riga di comando perl è qualcosa a cui stavo pensando, ma che non implementerò presto.

Ecco la ricetta come si ottiene pari con il supporto "riutilizzabile exe":

  • Installare la nuova versione del PAR da CPAN.
  • Installare la versione di sviluppatore più recente di PAR :: Packer da CPAN (0.992_02 o 03).
  • Aggiungere l'opzione "--reusable" alla riga di comando pp.
  • Eseguire l'eseguibile con le seguenti opzioni per eseguire uno script esterno "foo.pl":

    ./myapp --par-opzioni --reuse foo.pl foo-PL-opzioni-here

Sfortunatamente, come insegnerai a Test :: Harness che "./myapp --par-options --reuse" è un interprete perl è oltre me.

+1

Non pensavo che avrei trovato una soluzione al 100%. I miei bisogni sono un po 'troppo strani. Ma il tuo recente lavoro su PAR sembra un grande passo nella giusta direzione. Ho alcune idee approssimative sulla sottoclasse o sulla patch di scimmia Test :: Harness, e forse lo dimostrerò. Con PAR riutilizzabile, potrei riuscire a portare tutto insieme. Grazie. – daotoad

1

Cava Packager consente di creare pacchetti di script di test con i file eseguibili preconfigurati. Questo è principalmente per consentire di eseguire test sul codice pacchettizzato prima della distribuzione. Tuttavia, l'opzione è disponibile anche per distribuire test e funzionalità di test ai tuoi utenti finali.

Nota: come indicato dal mio nome, sono affiliato a Cava Packager.