2009-07-28 4 views
7

Tengo una aplicación que empaqueté en forma "binaria" usando PerlApp para su distribución. Como mis clientes quieren una instalación simple para sus sistemas Win32, esto funciona muy bien.¿Hay alguna forma de empaquetar mis pruebas unitarias con PAR o PerlApp?

Ahora un cliente ha decidido que necesita ejecutar todas las pruebas unitarias, como en una instalación estándar. Sin embargo, todavía no instalarán un Perl normal.

Por lo tanto, necesito una forma de empaquetar mis pruebas unitarias para operar en los sistemas de mi cliente.

Mi primer pensamiento fue que podía empacar prove en un solo archivo y empacar cada una de mis pruebas por separado. A continuación, envíe un archivo zip con la estructura adecuada.

Un poco de investigación demostró que Test :: Harness :: Straps invoca Perl desde la línea de comandos.

¿Existe alguna herramienta que ayude con este proceso?

Quizás podría utilizar PAR::Packer's parl herramienta para gestionar la invocación de mis scripts de prueba.

Estoy interesado en ideas sobre cómo aplicar ya sea PAR o PerlApp, así como también cualquier idea sobre cómo abordar Overrider Test :: Harness y sus amigos.

Gracias.

Actualización: No tengo mi corazón puesto en PAR o PerlApp. Esas son solo las herramientas con las que estoy familiarizado. Si tiene una idea o una solución que requiere un empaquetador diferente (como Cava Packager), me encantaría saberlo.

Actualización 2: tsee señaló una gran nueva función en PAR que me acerca. ¿Hay algún experto en TAP que pueda proporcionar algunas ideas o consejos sobre dónde buscar en la nueva distribución Test :: Harness?

Respuesta

4

Probablemente no sea una gran noticia si digo que PAR (y probablemente también perlapp) no están destinados a empaquetar todo el conjunto de pruebas y la plétora de subproductos de compilación del módulo CPAN. Están destinados a paquetes de aplicaciones independientes o bibliotecas binarias de módulos similares a JAR.

Dicho esto, puede agregar archivos arbitrarios a un archivo PAR (tanto en las bibliotecas .par como en los .exe independientes) utilizando el interruptor de pp -a. En el caso del ejecutable independiente, los contenidos se extraerán a $ ENV {PAR_TEMP}. "/ Inc" en tiempo de ejecución.

Eso te deja con el problema de reutilizar el ejecutable PAR-packaged para ejecutar el arnés de prueba (y dejar que ejecute tu ejecutable como un "perl"). Ahora, no tengo una solución preparada para eso, pero recientemente he trabajado para hacer que los ejecutables empaquetados con PAR sean reutilizables como intérpretes perl de propósito general más o menos. Dos errores antes de explicar cómo se puede usar eso:

  • Su aplicación no se llamará mágicamente "perl" y se agregará a su $ PATH.
  • La "reutilización" de la aplicación como un Perl de propósito general requiere opciones especiales y no no actualmente admite las opciones perl normales (las de perlrun). Simplemente puede ejecutar un script de perl externo de su elección.

Desafortunadamente, el último problema es lo que puede matar este enfoque para usted. El soporte para las opciones de línea de comando de Perl es algo en lo que he estado pensando, pero no lo implementaré en el corto plazo.

Aquí está la receta como se obtiene con el apoyo PAR "exe reutilizable":

  • instalar la versión más reciente de PAR de CPAN.
  • Instale la versión más reciente de desarrollador de PAR :: Packer de CPAN (0.992_02 o 03).
  • Agregue la opción "--reutilizable" a su línea de comando pp.
  • Ejecutar el ejecutable con las siguientes opciones para ejecutar un script externo "foo.pl":

    ./myapp --par-options --reuse foo.pl FOO-PL-OPCIONES-HERE

Lamentablemente, cómo enseñará a Test :: Harness que "./myapp --par-options --reuse" es un intérprete de Perl me supera.

+1

No pensé que encontraría una solución al 100%. Mis necesidades son un poco extrañas. Pero su trabajo reciente en PAR suena como un gran paso en la dirección correcta. Tengo algunas ideas aproximadas sobre la subclase o el parche de simulación Test :: Harness, y posiblemente lo demuestre. Con PAR reutilizable, puedo ser capaz de unir todo. Gracias. – daotoad

1

Cava Packager le permite empaquetar scripts de prueba con sus ejecutables empaquetados. Esto es principalmente para permitirle ejecutar pruebas contra el código empaquetado antes de la distribución. Sin embargo, la opción está allí también para distribuir las pruebas y la capacidad de prueba a sus usuarios finales.

Nota: Como mi nombre indica, estoy afiliado a Cava Packager.

Cuestiones relacionadas