Nodemon: Comment utiliser correctement nodemon avec les exécuteurs de test ?

Créé le 8 févr. 2015  ·  12Commentaires  ·  Source: remy/nodemon

Lors de l'exécution de tests à l'aide de moka ou autres, si les tests échouent et que le programme d'exécution se termine avec un code d'état différent de zéro, nodemon semble penser qu'il y a quelque chose de cassé avec le processus et meurt sans surveiller les changements. Existe-t-il un moyen de désactiver ce comportement ?

stale

Commentaire le plus utile

Pour toute personne entrant plus tard, vous pouvez contourner ce problème en ajoutant simplement || true pour faire croire à nodemon qu'il a réussi.

nodemon --exec "your_command_stuff || true"

Tous les 12 commentaires

Voici la sortie, d'ailleurs. Comme vous pouvez le voir, j'utilise un script défini dans package.json pour exécuter nodemon et mocha ( nodemon -x "_mocha -R min $@" ,) je ne sais pas si cela fait une différence.

$ 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

Ouais, ça _devrait_ fonctionner. Je fais quelque chose de similaire sur d'autres projets. J'ai un _sentiment_ qui a à voir avec le $@ . Quelle valeur en attends-tu ?

Je l'utilise parfois pour déterminer les tests à exécuter et pour transmettre des paramètres supplémentaires à Mocha si j'en ai besoin. Mais cela fonctionne bien, cela n'échoue que chaque fois qu'il y a des exceptions dans mon code, soit parce que je les lance moi-même, soit à cause de bobos. J'ai déjà utilisé mocha -w mais il était notoirement mauvais pour gérer les exceptions et n'a pas non plus pris en compte les modifications ailleurs dans le projet, ce que nodemon fait à merveille.

Je vais voir si je peux proposer un cas de repro plus petit dans les prochains jours. J'aimerais dire que je pourrais aussi voir un correctif et un PR, mais je crains de ne pas avoir le temps pour cela, alors je préfère ne pas trop faire de promesses.

@mstade Je pense qu'il s'agit d'une régression avec 1.3.x. M'a fait revenir à 1.2.x.

Je rencontre le même problème lorsque je fais un test d'exécution 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)  

Mon script package.json

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

Pour toute personne entrant plus tard, vous pouvez contourner ce problème en ajoutant simplement || true pour faire croire à nodemon qu'il a réussi.

nodemon --exec "your_command_stuff || true"

Il semble que ce soit un doublon de #627 où ils signalent que cela se produit spécifiquement lorsque les processus se terminent avec le code d'erreur 2. ENOENT: No such file or directory

@jayphelps merci beaucoup.

mon script de test ressemble à ceci, j'espère qu'il aidera quelqu'un !

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

Ce problème a été automatiquement marqué comme inactif et périmé car il n'a eu aucune activité récente. Il sera automatiquement fermé si aucune autre activité ne se produit. Si vous pensez que c'est faux ou que le problème persiste, répondez simplement dans les commentaires et @remy fera (essayer !) de faire le suivi.
Merci d'avoir contribué <3

Essayez d'utiliser ceci

nodemon --exec mocha -R min

n'utilisez pas de guillemets simples ou doubles

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

Et si vous exécutez :

npm test dir/file.js

dir/file.js sera ajouté au script de test, vous pouvez donc tester des fichiers individuels.

Enregistrer votre fichier deux fois rapidement exécutera également les tests deux fois, ce qui peut être indésirable.

Cela a fonctionné pour moi:
"start": "nodemon ./bin/www --exec mocha ./test.js -R min"

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

jonerer picture jonerer  ·  4Commentaires

piton13 picture piton13  ·  3Commentaires

maotora picture maotora  ·  4Commentaires

binarykitchen picture binarykitchen  ·  5Commentaires

Exeteres picture Exeteres  ·  4Commentaires