1 |
|
2 | {EventEmitter} = require 'events'
|
3 | should = require 'should'
|
4 | mecano = if process.env.MECANO_COV then require '../lib-cov/mecano' else require '../lib/mecano'
|
5 |
|
6 | describe 'exec', ->
|
7 |
|
8 | it 'should exec', (next) ->
|
9 | mecano.exec
|
10 |
|
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 |
|
30 |
|
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 |
|
50 | mecano.exec
|
51 | cmd: "chown"
|
52 | , (err, executed, stdout, stderr) ->
|
53 | err.message.should.eql 'Invalid exec code 1'
|
54 |
|
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 |
|