Nodemon: Maneira correta de usar o nodemon com executores de teste?

Criado em 8 fev. 2015  ·  12Comentários  ·  Fonte: remy/nodemon

Ao executar testes usando mocha ou similares, se os testes falharem e, portanto, o executor sair com um código de status diferente de zero, o nodemon parece pensar que há algo quebrado com o processo e morre sem observar as alterações. Existe uma maneira de cancelar esse comportamento?

stale

Comentários muito úteis

Para qualquer um que vier depois, você pode contornar esse problema apenas anexando || true para enganar o nodemon e fazê-lo pensar que foi bem-sucedido.

nodemon --exec "your_command_stuff || true"

Todos 12 comentários

Aqui está a saída, aliás. Como você pode ver, eu uso um script definido em package.json para executar nodemon e mocha ( nodemon -x "_mocha -R min $@" ), não tenho certeza se isso faz diferença.

$ npm run test-dev

> [email protected] test-dev /Users/mstade/dev/funkis
> nodemon -x "_mocha -R min $@"

8 Feb 15:57:48 - [nodemon] v1.3.6
8 Feb 15:57:48 - [nodemon] to restart at any time, enter `rs`
8 Feb 15:57:48 - [nodemon] watching: *.*
8 Feb 15:57:48 - [nodemon] starting `_mocha -R min `


  545 passing (670ms)
  2 failing

  1) Protocol when called with an empty signatures object should throw a TypeError:
     AssertionError: function (rest) { return apply(fn, this, argc, arguments) } must throw function TypeError() { [native code] }
      at Context.<anonymous> (/Users/mstade/dev/funkis/test/Protocol.js:15:39)
      at Test.Runnable.run (/Users/mstade/dev/funkis/node_modules/mocha/lib/runnable.js:221:32)
      at Runner.runTest (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:374:10)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:452:12
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:299:14)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:309:7
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:247:23)
      at Immediate._onImmediate (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:276:5)
      at processImmediate [as _immediateCallback] (timers.js:321:17)

  2) Protocol when called with a name, and some signatures should set immutable and enumerable properties on the protocol:
     TypeError: Signatures must be an object.
      at TypeError (native)
      at new Protocol (/Users/mstade/dev/funkis/lib/Protocol.js:8:34)
      at Protocol (/Users/mstade/dev/funkis/lib/Protocol.js:5:12)
      at Context.<anonymous> (/Users/mstade/dev/funkis/test/Protocol.js:21:15)
      at Test.Runnable.run (/Users/mstade/dev/funkis/node_modules/mocha/lib/runnable.js:221:32)
      at Runner.runTest (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:374:10)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:452:12
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:299:14)
      at /Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:309:7
      at next (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:247:23)
      at Immediate._onImmediate (/Users/mstade/dev/funkis/node_modules/mocha/lib/runner.js:276:5)
      at processImmediate [as _immediateCallback] (timers.js:321:17)



util.error: Use console.error instead
[nodemon] failed to start process, possible issue with exec arguments
exception in nodemon killing node
Error: Uncaught, unspecified "error" event.
    at Error (native)
    at emit (events.js:78:13)
    at ChildProcess.<anonymous> (/Users/mstade/dev/funkis/node_modules/nodemon/lib/monitor/run.js:133:11)
    at ChildProcess.emit (events.js:101:17)
    at Process.ChildProcess._handle.onexit (child_process.js:1038:12)

----------------------------------------------------------
If appropriate, please file an error with the output from:
$ node /Users/mstade/dev/funkis/node_modules/.bin/nodemon -x _mocha -R min  --dump
At http://github.com/remy/nodemon/issues/new
----------------------------------------------------------


npm ERR! Darwin 14.1.0
npm ERR! argv "/usr/local/opt/nvm/versions/io.js/v1.0.4/bin/iojs" "/usr/local/opt/nvm/versions/io.js/v1.0.4/bin/npm" "run" "test-dev"
npm ERR! node v1.0.4
npm ERR! npm  v2.3.0
npm ERR! code ELIFECYCLE
npm ERR! [email protected] test-dev: `nodemon -x "_mocha -R min $@"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] test-dev script 'nodemon -x "_mocha -R min $@"'.
npm ERR! This is most likely a problem with the funkis package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     nodemon -x "_mocha -R min $@"
npm ERR! You can get their info via:
npm ERR!     npm owner ls funkis
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/mstade/dev/funkis/npm-debug.log

Sim, isto _deve_ funcionar. Eu faço algo semelhante em outros projetos. Tenho a sensação de que tem a ver com $@ . Qual você espera que seja o valor disso?

Eu o uso às vezes para determinar quais testes são executados e para passar parâmetros adicionais para o Mocha, caso seja necessário. Mas isso funciona bem, só falha sempre que há exceções no meu código, seja porque eu mesmo as jogo ou por causa de booboos. Eu já usei mocha -w mas ele era notoriamente ruim em lidar com exceções e também não captou mudanças em outras partes do projeto, o que o nodemon faz muito bem.

Vou ver se consigo encontrar um caso de reprodução menor nos próximos dias. Eu gostaria de dizer que também poderei ver sobre uma solução e um PR, mas temo que provavelmente não terei tempo para isso, então prefiro não fazer promessas exageradas.

@mstade Acho que é uma regressão com 1.3.x. Me fez voltar para 1.2.x.

Eu encontro o mesmo problema quando faço o teste de execução de $ npm

[nodemon] failed to start process, possible issue with exec arguments     
events.js:146                                                                        
    throw err;                                                                     
    ^                                                                             

Error: Uncaught, unspecified "error" event. (2)    
   at emit (events.js:144:17)        
   at ChildProcess.<anonymous> (/usr/lib/node_modules/nodemon/lib/monitor/run.js:124:11)      
   at emitTwo (events.js:87:13)        
   at ChildProcess.emit (events.js:172:7)     
   at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)  

Meu script package.json

"scripts": {
    "server": "nodemon ./server.js localhost 5000",  
    "test": "PORT=8000 nodemon --ext js --watch ./ --exec 'mocha ./test' --delay 1"  
 },

Para qualquer um que vier depois, você pode contornar esse problema apenas anexando || true para enganar o nodemon e fazê-lo pensar que foi bem-sucedido.

nodemon --exec "your_command_stuff || true"

Parece que esta é uma duplicata de # 627, onde relatam que isso acontece especificamente quando o processo sai com o código de erro 2. ENOENT: No such file or directory

@jayphelps muito obrigado.

meu script de teste se parece com isso, espero que ajude alguém!

"test": "nodemon --watch . --exec 'mocha ./test/index.js || true'"

Este problema foi marcado automaticamente como inativo e obsoleto porque não teve nenhuma atividade recente. Ele será fechado automaticamente se nenhuma outra atividade ocorrer. Se você acha que isso está errado, ou o problema ainda persiste, apenas coloque uma resposta nos comentários e
Obrigado por contribuir <3

Tente usar isto

nodemon --exec mocha -R min

não use aspas simples ou duplas

"test": "NODE_ENV=test nodemon --exec mocha --exit -R spec"

E se você executar:

npm test dir/file.js

dir/file.js será anexado ao script de teste, portanto, você pode testar arquivos individuais.

Salvar o arquivo duas vezes rapidamente executará os testes duas vezes também, o que pode ser indesejável.

Isso funcionou para mim:
"start": "nodemon ./bin/www --exec mocha ./test.js -R min"

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Bastorx picture Bastorx  ·  5Comentários

Makoehle picture Makoehle  ·  3Comentários

Exeteres picture Exeteres  ·  4Comentários

ehmicky picture ehmicky  ·  4Comentários

jagged3dge picture jagged3dge  ·  4Comentários