UNPKG

2.05 kBtext/coffeescriptView Raw
1
2{EventEmitter} = require 'events'
3should = require 'should'
4mecano = if process.env.MECANO_COV then require '../lib-cov/mecano' else require '../lib/mecano'
5
6describe 'exec', ->
7
8 it 'should exec', (next) ->
9 mecano.exec
10 # cmd: 'text=yes; echo $text'
11 toto: true
12 cmd: 'echo "yes"'
13 , (err, executed, stdout, stderr) ->
14 executed.should.equal 1
15 stdout.should.eql 'yes\n'
16 next()
17
18 it 'should use ssh', (next) ->
19 mecano.exec
20 host: 'localhost'
21 cmd: 'text=yes; echo $text'
22 , (err, executed, stdout, stderr) ->
23 stdout.should.eql 'yes\n'
24 next()
25
26 it 'should stream stdout', (next) ->
27 @timeout 10000000
28 writer_done = callback_done = null
29 # Since version node 0.8, the `writer.end` function
30 # is called after `mecano.exec` callback
31 evemit = new EventEmitter
32 evemit.writable = true
33 evemit.write = (data) ->
34 data.should.include 'myself'
35 evemit.end = ->
36 writer_done = true
37 done()
38 done = ->
39 next() if writer_done and callback_done
40 mecano.exec
41 cmd: "cat #{__filename}"
42 stdout: evemit
43 , (err, executed, stdout, stderr) ->
44 should.not.exist stdout
45 callback_done = true
46 done()
47
48 it 'should validate exit code', (next) ->
49 # code undefined
50 mecano.exec
51 cmd: "chown"
52 , (err, executed, stdout, stderr) ->
53 err.message.should.eql 'Invalid exec code 1'
54 # code defined in array
55 mecano.exec
56 cmd: "chown"
57 code: [0, 1]
58 , (err, executed, stdout, stderr) ->
59 should.not.exist err
60 next()
61
62 it 'should honore conditions', (next) ->
63 mecano.exec
64 cmd: 'text=yes; echo $text'
65 if_exists: __dirname
66 , (err, executed, stdout, stderr) ->
67 executed.should.eql 1
68 stdout.should.eql 'yes\n'
69 mecano.exec
70 cmd: 'text=yes; echo $text'
71 if_exists: "__dirname/toto"
72 , (err, executed, stdout, stderr) ->
73 executed.should.eql 0
74 should.not.exist stdout
75 next()
76
77