2011-12-01 15 views
5

Estoy escribiendo un conjunto de pruebas unitarias (cada vez más grande) usando Coffeescript y node.js. Construyo los archivos utilizando el café "vigilancia" opción (-w)¿Cómo puedo hacer pruebas continuas de construcción/unidad en Coffeescript?

coffee -w -b -c -o web/ src/ 

Mi problema es que la ejecución de las pruebas de unidad tarda 20 segundos (estoy suponiendo para la compilación de Js).

Si es posible, me gustaría ejecutar automáticamente las pruebas unitarias en un archivo (.js compilado), lo que eliminaría la larga espera de los resultados.

Mi Cakefile actual:

fs   = require 'fs' 
{print}  = require 'sys' 
{spawn, exec} = require 'child_process' 

build = (watch, callback) -> 
    if typeof watch is 'function' 
    callback = watch 
    watch = false 
    options = ['-c', '-b', '-o', 'web', 'src'] 
    options.unshift '-w' if watch 

    coffee = spawn 'coffee', options 
    coffee.stdout.on 'data', (data) -> print data.toString() 
    coffee.stderr.on 'data', (data) -> print data.toString() 
    coffee.on 'exit', (status) -> callback?() if status is 0 

task 'test', 'Run the test suite', -> 
    build -> 
    require.paths.unshift __dirname + "/lib" 
    {reporters} = require 'nodeunit' 
    process.chdir __dirname 
    reporters.default.run ['test'] 
+1

Whoa-20 segundos? Nunca he tenido un proyecto de CoffeeScript que tarde tanto en compilarse. O incluso 2 segundos, para el caso. ¿Podría intentar compilar cada uno de sus archivos '.coffee' y ver cuáles (si los hay) están tardando más de 1s en compilarse? A continuación, publique un informe en [rastreador de problemas] (https://github.com/jashkenas/coffee-script/issues). –

+0

Probablemente no sea la compilación, ¿tal vez sea sobre la cabeza de node.js? Estoy cargando 8 o así lo requiere. La prueba en sí parece ejecutarse en aproximadamente ~ 300 ms. –

+1

¿Quiere decir que está cargando aproximadamente 8 'requisitos' en las pruebas? ¿Podrías probar el tiempo de cada uno de ellos para ver cuál está tomando más de unos pocos milisegundos? –

Respuesta

1

Tome un vistazo a la Cakefile para mi proyecto Connect-activos: https://github.com/adunkman/connect-assets/blob/master/Cakefile

que es un poco más complejo que sstephenson de (que supongo que su ejemplo se deriva de) , pero muestra cómo puede ver un directorio de archivos para ver los cambios y responder a esos cambios volviendo a ejecutar las pruebas.

+0

Después de resolver un problema node.js (moviéndome de 0.4.12-> 0.6.4), estoy obteniendo algunos errores al ejecutar CakeFile: 'execvp(): No existe tal archivo o directorio \t (node) warning : posible detección de fuga de EventEmitter. 11 oyentes agregados. Use emitter.setMaxListeners() para aumentar el límite. \t Rastreo: \t en WatchitEmitter. (events.js: 133: 17) \t en /Users/chambery/node_modules/watchit/lib/watchit.js:35:13 \t en Object.oncomplete (/ users/chambery/node_modules/WatchIT/lib/WatchIT .js: 141: 21) \t ERROR FATAL: v8 :: HandleScope :: Close() El alcance local ya se ha cerrado' ¿Es este un problema de versión? –

+0

Hmm. Si puede crear un caso de prueba para replicar esto, publíquelo como un informe de error en el [watchit issue tracker] (https://github.com/TrevorBurnham/watchit/issues). –

+0

Tu Cakefile es el truco. Todavía no puedo hacer que ejecute la prueba por completo, pero el ERROR FATAL se debe a un error del enlazador (?) Causó la actualización por nodo: http://groups.google.com/group/nodejs/browse_thread/thread/ 877ff6e7434826dd –

Cuestiones relacionadas