UNPKG

3.52 kBtext/coffeescriptView Raw
1fs = require 'fs'
2should = require 'should'
3esprima = require 'esprima'
4wrench = require 'wrench'
5_ = require 'underscore'
6jscov = require '../lib/coverage'
7
8describe "rewriteSource", ->
9
10 wrench.readdirSyncRecursive('spec/scaffold').forEach (filename) ->
11
12 return if fs.lstatSync('spec/scaffold/' + filename).isDirectory()
13
14 code = fs.readFileSync('spec/scaffold/' + filename, 'utf8')
15 newCode = jscov.rewriteSource(code, filename)
16 actualParse = esprima.parse(newCode)
17
18 expect = fs.readFileSync('spec/expect/' + filename, 'utf8')
19 expectedParse = esprima.parse(expect)
20
21 it "should parse #{filename} the same way as jscoverage", ->
22 _.isEqual(actualParse, expectedParse).should.be.true
23
24
25 it "should throw an exception if the source is not valid", ->
26 f = ->
27 jscov.rewriteSource("console.log 'test'")
28 f.should.throw()
29
30
31
32describe "rewriteFolder", ->
33
34 it "should rewrite entire folders recursively", (done) ->
35
36 wrench.rmdirSyncRecursive('spec/scaffold-out', true)
37
38 jscov.rewriteFolder 'spec/scaffold', 'spec/scaffold-out', (err) ->
39 should.not.exist err
40 fileCounter = 0
41
42 wrench.readdirSyncRecursive('spec/scaffold-out').forEach (filename) ->
43 fullpath = 'spec/scaffold-out/' + filename
44 return if fs.lstatSync(fullpath).isDirectory()
45 fileCounter++
46 fs.readFileSync(fullpath, 'utf8').split('\n')[0].should.eql '/* automatically generated by jscov - do not edit */'
47
48 fileCounter.should.eql 6
49 done()
50
51
52 it "should rewrite both javascript and coffee-script, but nothing else", (done) ->
53
54 wrench.rmdirSyncRecursive('spec/coffee-out', true)
55
56 jscov.rewriteFolder 'spec/coffee', 'spec/coffee-out', (err) ->
57 should.not.exist err
58 fileCounter = 0
59
60 wrench.readdirSyncRecursive('spec/coffee-out').forEach (filename) ->
61 fileCounter++
62 fs.readFileSync('spec/coffee-out/' + filename, 'utf8').split('\n')[0].should.eql '/* automatically generated by jscov - do not edit */'
63 filename.should.match /\.js$/
64
65 fileCounter.should.eql 2
66 done()
67
68
69 it "should not create a directory if it encounters an error when processing coffee-script", (done) ->
70
71 jscov.rewriteFolder 'spec/invalids/cs', 'spec/invalids-out', (err) ->
72 should.exist err
73 fs.lstat 'spec/invalids-out', (err) ->
74 err.code.should.eql 'ENOENT'
75 done()
76
77
78 it "should not create a directory if it encounters an error when processing javascript", (done) ->
79
80 jscov.rewriteFolder 'spec/invalids/js', 'spec/invalids-out', (err) ->
81 should.exist err
82 fs.lstat 'spec/invalids-out', (err) ->
83 err.code.should.eql 'ENOENT'
84 done()
85
86
87 it "should overwrite the target directory and remove/replace all files in it", (done) ->
88
89 wrench.mkdirSyncRecursive('spec/existing/subdir')
90 fs.writeFileSync('spec/existing/foo.js', 'content', 'utf8')
91 fs.writeFileSync('spec/existing/for.js', 'content', 'utf8')
92 fs.writeFileSync('spec/existing/subdir/bar.js', 'content', 'utf8')
93
94 jscov.rewriteFolder 'spec/scaffold', 'spec/existing', (err) ->
95 should.not.exist err
96 fileCounter = 0
97
98 wrench.readdirSyncRecursive('spec/existing').forEach (filename) ->
99 fullpath = 'spec/existing/' + filename
100 return if fs.lstatSync(fullpath).isDirectory()
101 fileCounter++
102 fs.readFileSync(fullpath, 'utf8').split('\n')[0].should.eql '/* automatically generated by jscov - do not edit */'
103
104 fileCounter.should.eql 6
105 done()