-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbinary-test.js
More file actions
81 lines (76 loc) · 2.53 KB
/
binary-test.js
File metadata and controls
81 lines (76 loc) · 2.53 KB
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
var vows = require('vows'),
assert = require('assert'),
exec = require('child_process').exec,
fs = require('fs');
var isWindows = process.platform == 'win32',
lineBreak = isWindows ? /\r\n/g : /\n/g;
var binaryContext = function(options, context) {
context.topic = function() {
// We add __DIRECT__=1 to switch binary into 'non-piped' mode
if (isWindows)
exec("set __DIRECT__=1 & node .\\bin\\cleancss " + options, this.callback);
else
exec("__DIRECT__=1 ./bin/cleancss " + options, this.callback);
};
return context;
};
var pipedContext = function(css, options, context) {
if (isWindows)
return {};
context.topic = function() {
exec("echo \"" + css + "\" | ./bin/cleancss " + options, this.callback);
};
return context;
};
exports.commandsSuite = vows.describe('binary commands').addBatch({
'no options': binaryContext('', {
'should output help': function(stdout) {
assert.equal(/usage:/.test(stdout), true);
}
}),
'help': binaryContext('-h', {
'should output help': function(error, stdout, stderr) {
assert.equal(/usage:/.test(stdout), true);
}
}),
'version': binaryContext('-v', {
'should output help': function(error, stdout) {
var version = JSON.parse(fs.readFileSync('./package.json')).version;
assert.equal(stdout, version + "\n");
}
}),
'stdin': pipedContext("a{color: #f00}", '', {
'should output data': function(error, stdout) {
assert.equal(stdout, "a{color:red}");
}
}),
'no empty by default': pipedContext('a{}', '', {
'should preserve content': function(error, stdout) {
assert.equal(stdout, "a{}");
}
}),
'empty': pipedContext('a{}', '-e', {
'should preserve content': function(error, stdout) {
assert.equal(stdout, "");
}
}),
'from source': binaryContext('./test/data/reset.css', {
'should minimize': function(error, stdout) {
var minimized = fs.readFileSync('./test/data/reset-min.css', 'utf-8').replace(lineBreak, '');
assert.equal(stdout, minimized);
}
}),
'to file': binaryContext('-o reset-min.css ./test/data/reset.css', {
'should give no output': function(error, stdout) {
assert.equal(stdout, '');
},
'should minimize': function(stdout) {
var minimized = fs.readFileSync('./test/data/reset-min.css', 'utf-8').replace(lineBreak, '');
var target = fs.readFileSync('./reset-min.css', 'utf-8').replace(lineBreak, '');
assert.equal(minimized, target);
},
teardown: function() {
exec('rm reset-min.css');
}
})
});