Skip to content

Commit 5d4c4c6

Browse files
committed
chore(all): refactor unit tests
1 parent f2b779b commit 5d4c4c6

File tree

12 files changed

+314
-579
lines changed

12 files changed

+314
-579
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ node_modules
22
build
33
components
44
coverage
5+
.nyc_output

composer.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ var minify = require('./lib/minify');
44

55
module.exports = function(uglify, logger) {
66
return function(opts) {
7-
return through.obj(minify(uglify, logger)(opts));
7+
var minifier = minify(uglify, logger)(opts);
8+
return through.obj(function(file, encoding, callback) {
9+
try {
10+
var newFile = minifier(file);
11+
callback(null, newFile);
12+
} catch (err) {
13+
callback(err);
14+
}
15+
});
816
};
917
};

lib/minify.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ module.exports = function(uglify, log) {
2020
}
2121

2222
return function(opts) {
23-
return function(file, encoding, callback) {
23+
return function(file) {
2424
var options = setup(opts || {});
2525
var hasSourceMaps = Boolean(file.sourceMap);
2626

2727
if (file.isNull()) {
28-
return callback(null, file);
28+
return file;
2929
}
3030

3131
if (file.isStream()) {
32-
return callback(createError(file, 'Streaming not supported', null));
32+
throw createError(file, 'Streaming not supported', null);
3333
}
3434

3535
if (hasSourceMaps) {
@@ -50,9 +50,11 @@ module.exports = function(uglify, log) {
5050

5151
var mangled = uglify.minify(fileMap, options);
5252

53-
if (mangled.error) {
54-
return callback(
55-
createError(file, 'unable to minify JavaScript', mangled.error)
53+
if (!mangled || mangled.error) {
54+
throw createError(
55+
file,
56+
'unable to minify JavaScript',
57+
mangled && mangled.error
5658
);
5759
}
5860

@@ -69,7 +71,7 @@ module.exports = function(uglify, log) {
6971
applySourceMap(file, sourceMap);
7072
}
7173

72-
callback(null, file);
74+
return file;
7375
};
7476
};
7577
};

package.json

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,12 @@
2121
"eslint-plugin-no-use-extend-native": "^0.3.12",
2222
"eslint-plugin-prettier": "^2.0.1",
2323
"eslint-plugin-unicorn": "^2.1.0",
24-
"gulp-concat": "^2.0.0",
25-
"gulp-sourcemaps": "^2.6.0",
2624
"intelli-espower-loader": "^1.0.1",
27-
"istanbul": "^0.4.0",
28-
"mississippi": "^1.2.0",
2925
"mocha": "^3.0.1",
26+
"nyc": "^10.3.2",
3027
"power-assert": "^1.4.1",
3128
"prettier": "^1.1.0",
32-
"semver": "^5.3.0",
29+
"source-list-map": "^1.1.2",
3330
"tape": "^4.0.0",
3431
"testdouble": "^2.1.2",
3532
"vinyl": "^2.0.0"
@@ -74,7 +71,7 @@
7471
],
7572
"scripts": {
7673
"lint": "eslint *.js lib test",
77-
"test": "mocha --require intelli-espower-loader",
74+
"test": "nyc --reporter=lcov --reporter=text mocha --require intelli-espower-loader",
7875
"coverage": "cat ./coverage/lcov.info | coveralls"
7976
},
8077
"greenkeeper": {

test/create-error.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22
var mocha = require('mocha');
3-
var assert = require('power-assert');
3+
var assert = require('assert');
44
var Vinyl = require('vinyl');
55
var createError = require('../lib/create-error');
66
var GulpUglifyError = require('../lib/gulp-uglify-error');

test/err.js

Lines changed: 78 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,50 @@
11
'use strict';
22
var mocha = require('mocha');
3-
var assert = require('power-assert');
3+
var assert = require('assert');
44
var Vinyl = require('vinyl');
5-
var mississippi = require('mississippi');
5+
var td = require('testdouble');
66
var GulpUglifyError = require('../lib/gulp-uglify-error');
7-
var gulpUglify = require('../');
8-
9-
var pipe = mississippi.pipe;
10-
var to = mississippi.to;
11-
var from = mississippi.from;
7+
var minify = require('../lib/minify');
128

139
var describe = mocha.describe;
1410
var it = mocha.it;
1511

16-
describe('stream errors', function() {
17-
it('should report files in error', function(done) {
12+
describe('errors', function() {
13+
it('should report files in error', function() {
1814
var testFile = new Vinyl({
1915
cwd: '/home/terin/broken-promises/',
2016
base: '/home/terin/broken-promises/test',
2117
path: '/home/terin/broken-promises/test/test1.js',
2218
contents: new Buffer('function errorFunction(error)\n{')
2319
});
20+
var uglify = td.object(['minify']);
21+
var logger = td.object(['warn']);
22+
var expOptions = {
23+
output: {}
24+
};
25+
var err = new Error();
26+
err.line = 28889;
27+
28+
td
29+
.when(
30+
uglify.minify(
31+
{
32+
'test1.js': 'function errorFunction(error)\n{'
33+
},
34+
expOptions
35+
)
36+
)
37+
.thenReturn({
38+
error: err
39+
});
2440

25-
pipe(
26-
[
27-
from.obj([testFile]),
28-
gulpUglify(),
29-
to.obj(function(chunk, enc, next) {
30-
assert(false, 'we shouldn\t have gotten here');
31-
next();
32-
})
33-
],
41+
var subject = minify(uglify, logger)({});
42+
43+
assert.throws(
44+
function() {
45+
subject(testFile);
46+
},
3447
function(err) {
35-
assert.ok(err instanceof Error, 'argument should be of type Error');
3648
assert.ok(
3749
err instanceof GulpUglifyError,
3850
'argument should be of type GulpUglifyError'
@@ -43,37 +55,61 @@ describe('stream errors', function() {
4355
testFile.path,
4456
'error reports correct file name'
4557
);
46-
assert.equal(err.cause.line, 2, 'error reports correct line number');
58+
assert.equal(
59+
err.cause.line,
60+
28889,
61+
'error reports correct line number'
62+
);
4763
assert.ok(err.stack, 'error has a stack');
4864
assert.ok(!err.showStack, 'error is configured to not print the stack');
49-
done();
65+
assert.ok(err instanceof Error, 'argument should be of type Error');
66+
67+
return true;
5068
}
5169
);
70+
71+
td.verify(logger.warn(), {times: 0, ignoreExtraArgs: true});
5272
});
5373

54-
it("shouldn't blow up when given output options", function(done) {
74+
it("shouldn't blow up when given output options", function() {
5575
var testFile = new Vinyl({
5676
cwd: '/home/terin/broken-promises/',
5777
base: '/home/terin/broken-promises/test',
58-
path: '/home/terin/broken-promises/test/test2.js',
59-
contents: new Buffer(
60-
'"use strict"; (function(console, first, second) { console.log(first + second) }(5, 10))'
78+
path: '/home/terin/broken-promises/test/test1.js',
79+
contents: new Buffer('{}')
80+
});
81+
var uglify = td.object(['minify']);
82+
var logger = td.object(['warn']);
83+
var expOptions = {
84+
output: {
85+
exportAll: true
86+
}
87+
};
88+
var err = new Error('`exportAll` is not a supported option');
89+
90+
td
91+
.when(
92+
uglify.minify(
93+
{
94+
'test1.js': '{}'
95+
},
96+
expOptions
97+
)
6198
)
99+
.thenReturn({
100+
error: err
101+
});
102+
103+
var subject = minify(uglify, logger)({
104+
output: {
105+
exportAll: true
106+
}
62107
});
63108

64-
pipe(
65-
[
66-
from.obj([testFile]),
67-
gulpUglify({
68-
output: {
69-
exportAll: true
70-
}
71-
}),
72-
to.obj(function(chunk, enc, next) {
73-
assert(false, 'we shouldn\t have gotten here');
74-
next();
75-
})
76-
],
109+
assert.throws(
110+
function() {
111+
subject(testFile);
112+
},
77113
function(err) {
78114
assert.ok(err instanceof Error, 'argument should be of type Error');
79115
assert.ok(
@@ -91,8 +127,11 @@ describe('stream errors', function() {
91127
'error reports correct file name'
92128
);
93129
assert.ok(!err.showStack, 'error is configured to not print the stack');
94-
done();
130+
131+
return true;
95132
}
96133
);
134+
135+
td.verify(logger.warn(), {times: 0, ignoreExtraArgs: true});
97136
});
98137
});

test/injectable.js

Lines changed: 0 additions & 71 deletions
This file was deleted.

0 commit comments

Comments
 (0)