From e0783e3a247bdbd251467199badbd839b47b2e8d Mon Sep 17 00:00:00 2001 From: Enrico Fasoli Date: Wed, 29 Apr 2015 17:34:38 +0200 Subject: [PATCH] =?UTF-8?q?migliorata=20qualit=C3=A0=20codice,=20aumento?= =?UTF-8?q?=20copertura=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/shell.coffee | 23 ++++++++++++----------- test/autostart-test.coffee | 34 ++++++++++++++++++++++++++++++++++ test/shell-test.coffee | 7 ++++++- 3 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 test/autostart-test.coffee diff --git a/scripts/shell.coffee b/scripts/shell.coffee index e39ace5..e32c30c 100644 --- a/scripts/shell.coffee +++ b/scripts/shell.coffee @@ -18,20 +18,27 @@ isFromAdmin = (res) -> res.message.user.room is process.env.ADMIN_ROOM?.replace(':','#') or res.robot.adapterName is 'shell' runCmd = (cmd,res,cb) -> - if res? then res.send 'Operazione in corso: '+cmd + if res?.send? then res.send 'Operazione in corso: '+cmd if process.env.TESTING_ASJON # Fingi di eseguire l'operazione - if res? then res.send 'Operazione "completata": '+cmd - if cb? then cb null,'','' + if res?.send? then res.send 'Operazione "completata": '+cmd + if cb?.call? then cb null,'','' else cp.exec cmd, (err,stdout,stderr) -> - if res? + if res?.send? if err res.send 'Operazione fallita:\n'+stdout+stderr else res.send 'Operazione completata:\n'+stdout - if cb? then cb err,stdout,stderr + if cb?.call? then cb err,stdout,stderr module.exports = (robot) -> + + # Lancia i test all'avvio + if process.env.AUTO_RUN_TESTS and process.env.ADMIN_ROOM + dest = room: process.env.ADMIN_ROOM.replace(':','#') + dest.send = (x) -> robot.send dest, x + runCmd 'npm test', dest + if process.env.AUTO_INFORM_ON_START r = room: process.env.AUTO_INFORM_ON_START.replace(':','#') robot.send r, 'asjon avviato e operativo!' @@ -52,12 +59,6 @@ module.exports = (robot) -> if !isFromAdmin(res) then return res.send res.random nope runCmd 'npm test', res - # Run tests on boot and report to ADMIN - if process.env.AUTO_RUN_TESTS and process.env.ADMIN_ROOM - dest = room: process.env.ADMIN_ROOM.replace(':','#') - dest.send = (x) -> robot.send dest, x - runCmd 'npm test', dest - robot.on 'githubhook', (data,params) -> if data.ref is 'refs/heads/master' and process.env.AUTO_KILL_ON_UPDATE dest = name: params.name, room: params.room.replace(':','#') diff --git a/test/autostart-test.coffee b/test/autostart-test.coffee new file mode 100644 index 0000000..dfd08bc --- /dev/null +++ b/test/autostart-test.coffee @@ -0,0 +1,34 @@ +nock = require 'nock' +expect = require("chai").should() + +Asjon = require '../asjon-testing.coffee' +asjon = undefined + +describe 'shell autostart', -> + before (done) -> + # Inizializzo robot + Asjon (assa) -> + asjon = assa + after asjon.after + afterEach asjon.clear + done() + + it 'dovrebbe informare dell\'avvio se richiesto', (done) -> + asjon.receive (e,l) -> + l.join().should.equal 'asjon avviato e operativo!' + done() + process.env.AUTO_INFORM_ON_START = ':mocha' + require('../scripts/shell.coffee')(asjon.robot) + + it 'dovrebbe eseguire i test all\'avvio se richiesto', (done) -> + acc = 0 + asjon.receive (e,l) -> + if acc is 0 + l.join().should.equal 'Operazione in corso: npm test' + if acc is 1 + l.join().should.equal 'Operazione "completata": npm test' + acc++ + if acc is 2 then done() + process.env.AUTO_RUN_TESTS = 'true' + process.env.ADMIN_ROOM = ':mocha' + require('../scripts/shell.coffee')(asjon.robot) diff --git a/test/shell-test.coffee b/test/shell-test.coffee index db07b7d..95409c7 100644 --- a/test/shell-test.coffee +++ b/test/shell-test.coffee @@ -18,18 +18,19 @@ describe 'modulo shell', -> asjon.receive (e,l) -> l.join().should.match /BZBZ (.+)/i done() + process.env.ADMIN_ROOM = ':not-mocha' asjon.send 'asjon controlla gli aggiornamenti' ss = ['Operazione in corso: ', 'Operazione "completata": '] regexes = [/Operazione in corso: (.+)/i, /Operazione "completata": (.+)/i] it 'dovrebbe riconoscere la stanza autorizzata', (done) -> - process.env.ADMIN_ROOM = ':mocha' acc = 0 asjon.receive (e,l) -> l.join().should.match regexes[acc] acc++ if acc is 2 then done() + process.env.ADMIN_ROOM = ':mocha' asjon.send 'asjon controlla gli aggiornamenti' it 'dovrebbe eseguire i comandi corretti per installare gli aggiornamenti', (done) -> @@ -39,6 +40,7 @@ describe 'modulo shell', -> l.join().should.equal ss[acc]+cmd acc++ if acc is 2 then done() + process.env.ADMIN_ROOM = ':mocha' asjon.send 'asjon aggiornati' it 'dovrebbe eseguire i comandi corretti per controllare gli aggiornamenti', (done) -> @@ -48,6 +50,7 @@ describe 'modulo shell', -> l.join().should.equal ss[acc]+cmd acc++ if acc is 2 then done() + process.env.ADMIN_ROOM = ':mocha' asjon.send 'asjon controlla gli aggiornamenti' it 'dovrebbe eseguire i comandi corretti per installare le dipendenze', (done) -> @@ -57,6 +60,7 @@ describe 'modulo shell', -> l.join().should.equal ss[acc]+cmd acc++ if acc is 2 then done() + process.env.ADMIN_ROOM = ':mocha' asjon.send 'asjon installa le dipendenze' it 'dovrebbe eseguire i comandi corretti per eseguire i test', (done) -> @@ -66,6 +70,7 @@ describe 'modulo shell', -> l.join().should.equal ss[acc]+cmd acc++ if acc is 2 then done() + process.env.ADMIN_ROOM = ':mocha' asjon.send 'asjon esegui i test' it 'dovrebbe autoriavviarsi in caso di update se richiesto', (done) ->