Skip to content

Commit d85fd40

Browse files
authored
Add testing (#12)
* Add inital mocha testing * Update linter rules for mocha * Add test to check for expected number of differences
1 parent 3771f19 commit d85fd40

File tree

16 files changed

+88
-4
lines changed

16 files changed

+88
-4
lines changed

.eslintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"globals": {},
2020
"env":{
2121
"node": true,
22-
"es6": true
22+
"es6": true,
23+
"mocha": true
2324
}
2425
}

lib/css-ast-diff.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const parse = require('css').parse;
66
const sort = require('./sorters/ast');
77
const stringify = require('css').stringify;
88
const fs = require('fs');
9-
const colors = require('colors');
9+
10+
require('es6-object-assign').polyfill();
1011

1112
module.exports = function cssAstDiff(diff, src, callback, options) {
1213
try {

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
"name": "css-ast-diff",
33
"version": "1.0.6",
44
"description": "Diffs CSS files by parsing into AST, sorting, and finding functional differences",
5-
"main": "index.js",
65
"scripts": {
7-
"test": "echo \"Error: no test specified\" && exit 1"
6+
"test": "mocha --harmony"
87
},
98
"repository": {
109
"type": "git",
@@ -39,6 +38,7 @@
3938
"css": "^2.2.1",
4039
"debug": "^2.2.0",
4140
"diff": "^2.2.1",
41+
"es6-object-assign": "^1.0.3",
4242
"fs": "0.0.2",
4343
"node-diff": "^0.2.0",
4444
"nodegit": "^0.11.8",
@@ -47,5 +47,9 @@
4747
"svn": "^0.2.0",
4848
"svn-interface": "^0.5.0",
4949
"util": "^0.10.3"
50+
},
51+
"devDependencies": {
52+
"chai": "^3.5.0",
53+
"mocha": "^3.2.0"
5054
}
5155
}

test/cases.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
'use strict';
2+
3+
const path = require('path');
4+
const async = require('async');
5+
const fs = require('fs');
6+
7+
const chai = require('chai');
8+
const expect = chai.expect;
9+
10+
const cases = fs.readdirSync(path.join(__dirname, 'cases'));
11+
const files = {
12+
src: 'src.css',
13+
diff: 'diff.css',
14+
stats: 'stats.json'
15+
};
16+
17+
const cssAstDiff = require('../lib/api');
18+
const options = {
19+
type: 'hunks'
20+
};
21+
22+
cases.forEach(function(name) {
23+
describe('cases/' + name, function() {
24+
var data = {};
25+
26+
before(function(done) {
27+
this.timeout(5000);
28+
runDiff(name, data, done);
29+
});
30+
31+
// TODO: create more useful tests
32+
33+
it('detects the expected number of changes', function(done) {
34+
expect(data.changes).to.have.length(data.stats.changes);
35+
done();
36+
});
37+
});
38+
});
39+
40+
function runDiff(name, data, callback) {
41+
var dir = path.join(__dirname, 'cases', name);
42+
var src = path.join(dir, files.src);
43+
var diff = path.join(dir, files.diff);
44+
var stats = path.join(dir, files.stats);
45+
46+
async.parallel([
47+
function readStats(callback) {
48+
fs.readFile(stats, 'utf8', function(err, results) {
49+
data.stats = JSON.parse(results);
50+
callback();
51+
});
52+
},
53+
function createDiff(callback) {
54+
cssAstDiff.compareFiles(src, diff, function(err, results) {
55+
if (err) {
56+
throw err;
57+
}
58+
data.changes = results;
59+
callback();
60+
}, options);
61+
}
62+
],
63+
callback
64+
);
65+
}
File renamed without changes.
File renamed without changes.

test/cases/bootstrap/stats.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"ignore": true,
3+
"changes": 47
4+
}
File renamed without changes.
File renamed without changes.

test/cases/duplicates/stats.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"changes": 2
3+
}

0 commit comments

Comments
 (0)