forked from timoxley/stitchup
/
test.spec.coffee
117 lines (96 loc) · 4.42 KB
/
test.spec.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
exec = require('child_process').exec
fs = require 'fs'
assert = require 'assert'
describe "stitchup", ->
beforeEach (done) ->
require('child_process').exec 'mkdir -p ./test/tmp', (error, stdout, stderr) ->
console.log error.message if error?
done()
afterEach (done) ->
require('child_process').exec 'rm -Rf ./test/tmp', (error, stdout, stderr) ->
console.log error.message if error?
done()
it 'displays usage', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee', (error, stdout, stderr) ->
assert.ok(error)
assert.ok(/Usage:/.test(stderr))
done()
it 'displays missing', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee', (error, stdout, stderr) ->
assert.ok(error)
assert.ok(/Not enough non-option arguments: got 0, need at least 1/.test(stderr))
done()
it 'compiles commonjs coffeescript modules', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/a.js ./test/fixtures/a', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
bundle = require('./tmp/a.js')
assert.ok(bundle)
assert.equal(bundle.require('a'), 'whoo')
done()
it 'compiles with no -s', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/a.js ./test/fixtures/a', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
bundle = require('./tmp/a.js')
assert.ok(bundle)
assert.equal(bundle.require('a'), 'whoo')
done()
it 'compiles multiple sources with no -s', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/ab.js ./test/fixtures/a ./test/fixtures/b', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
bundle = require('./tmp/ab.js')
assert.ok(bundle)
assert.ok(bundle.require('a'), 'whoo')
assert.ok(bundle.require('b'), 'whaarr')
done()
it 'compresses output', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/a.1.js ./test/fixtures/a', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
require('child_process').exec 'wc -l ./test/tmp/a.1.js', (error, stdout, stderr) ->
assert.ok(/0 .\/test\/tmp\/a\.1\.js/.test(stdout))
done()
it 'doesn\'t compress output in development mode', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/a.2.js -m DEVELOPMENT ./test/fixtures/a', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
require('child_process').exec 'wc -l ./test/tmp/a.2.js', (error, stdout, stderr) ->
assert.ok(/\.\/test\/tmp\/a\.2\.js/.test(stdout))
assert.ok(!(/0 \.\/test\/tmp\/a\.2\.js/.test(stdout)))
done()
it 'compiles nested coffeescript commonjs modules', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/b.js ./test/fixtures/b', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
bundle = require('./tmp/b.js')
assert.ok(bundle)
assert.throws(
->
bundle.require('a')
,/module 'a' not found/)
assert.equal(bundle.require('b'), 'whaarr')
assert.equal(bundle.require('nesting/nesting'), 'whooo')
done()
it 'compiles commonjs javascript modules', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/c.js ./test/fixtures/c', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
bundle = require('./tmp/c.js')
assert.ok(bundle)
assert.equal(bundle.require('c'), 'wheee')
done()
it 'doesn\'t expose anything from libs with no exports', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/d.js ./test/fixtures/d', (error, stdout, stderr) ->
assert.ok(!error)
assert.ok(!stderr)
bundle = require('./tmp/d.js')
d = bundle.require('d')
assert.deepEqual(d, {})
done()
it 'displays an error if you try to compile an non-existant invalid file', (done) ->
require('child_process').exec 'coffee ./src/stitchup.coffee -o ./test/tmp/d.js ./test/fixtures/invalid', (error, stdout, stderr) ->
assert.ok(error)
assert.ok(/AssertionError: Invalid source file given\./.test(stderr))
done()