catlogjs
Version:
Static site generator, translate human readable text format(such as markdown) into html, with a lot of other functions
189 lines (146 loc) • 5.95 kB
JavaScript
var grunt = require('grunt');
var fs = require('fs');
function readFile(file) {
'use strict';
var contents = grunt.file.read(file);
if (process.platform === 'win32') {
contents = contents.replace(/\r\n/g, '\n');
}
return contents;
}
function assertFileEquality(test, pathToActual, pathToExpected, message) {
var actual = readFile(pathToActual);
var expected = readFile(pathToExpected);
test.equal(expected, actual, message);
}
exports.coffee = {
compileBare: function(test) {
'use strict';
test.expect(4);
assertFileEquality(test,
'tmp/bare/coffee.js',
'test/expected/bare/coffee.js',
'Should compile coffeescript to unwrapped javascript');
assertFileEquality(test,
'tmp/bare/litcoffee.js',
'test/expected/bare/litcoffee.js',
'Should compile literate coffeescript to unwrapped javascript');
assertFileEquality(test,
'tmp/bare/litcoffeemd.js',
'test/expected/bare/litcoffee.js',
'Should compile literate coffeescript to unwrapped javascript');
assertFileEquality(test,
'tmp/bare/concat.js',
'test/expected/bare/concat.js',
'Should compile coffeescript files without wrappers and concatenate them into a single javascript file');
test.done();
},
compileDefault: function(test) {
'use strict';
test.expect(4);
assertFileEquality(test,
'tmp/default/coffee.js',
'test/expected/default/coffee.js',
'Should compile coffeescript to javascript');
assertFileEquality(test,
'tmp/default/litcoffee.js',
'test/expected/default/litcoffee.js',
'Should compile literate coffeescript to wrapped javascript');
assertFileEquality(test,
'tmp/default/litcoffeemd.js',
'test/expected/default/litcoffee.js',
'Should compile literate coffeescript to wrapped javascript');
assertFileEquality(test,
'tmp/default/concat.js',
'test/expected/default/concat.js',
'Should compile coffeescript files with wrappers and concatenate them into a single javascript file');
test.done();
},
compileJoined: function(test) {
'use strict';
test.expect(4);
assertFileEquality(test,
'tmp/join/coffee.js',
'test/expected/default/coffee.js',
'Compilation of one file with join enabled should match normal compilation');
assertFileEquality(test,
'tmp/join/join.js',
'test/expected/join/join.js',
'Should concatenate coffeescript files prior to compilation into a single javascript file');
assertFileEquality(test,
'tmp/join/bareCoffee.js',
'test/expected/bare/coffee.js',
'Bare compilation of one file with join enabled should match bare compilation');
assertFileEquality(test,
'tmp/join/bareJoin.js',
'test/expected/join/bareJoin.js',
'Bare compilation of multiple join files should be equivalent to concatenated compilation');
test.done();
},
compileMaps: function(test) {
'use strict';
test.expect(10);
assertFileEquality(test,
'tmp/maps/coffee.js',
'test/expected/maps/coffee.js',
'Compilation of single file with source maps should generate javascript');
assertFileEquality(test,
'tmp/maps/coffee.js.map',
'test/expected/maps/coffee.js.map',
'Compilation of single file with source maps should generate map');
assertFileEquality(test,
'tmp/maps/coffeeJoin.js',
'test/expected/maps/coffeeJoin.js',
'Compilation of multiple files with source maps should generate javascript');
assertFileEquality(test,
'tmp/maps/coffeeJoin.js.map',
'test/expected/maps/coffeeJoin.js.map',
'Compilation of multiple files with source maps should generate map');
assertFileEquality(test,
'tmp/maps/coffeeJoin.src.coffee',
'test/expected/maps/coffeeJoin.src.coffee',
'Compilation of multiple files with source maps should output concatenated source');
assertFileEquality(test,
'tmp/maps/coffeeBare.js',
'test/expected/maps/coffeeBare.js',
'Bare compilation of single file with source maps should generate javascript');
assertFileEquality(test,
'tmp/maps/coffeeBare.js.map',
'test/expected/maps/coffeeBare.js.map',
'Bare compilation of single file with source maps should generate map');
assertFileEquality(test,
'tmp/maps/coffeeBareJoin.js',
'test/expected/maps/coffeeBareJoin.js',
'Bare compilation of multiple files with source maps should generate javascript');
assertFileEquality(test,
'tmp/maps/coffeeBareJoin.js.map',
'test/expected/maps/coffeeBareJoin.js.map',
'Bare compilation of multiple files with source maps should generate map');
assertFileEquality(test,
'tmp/maps/coffeeBareJoin.src.coffee',
'test/expected/maps/coffeeBareJoin.src.coffee',
'Bare compilation of multiple files with source maps should output concatenated source');
test.done();
},
compileEachMap: function(test) {
'use strict';
test.expect(4);
assertFileEquality(test,
'tmp/eachMap/coffee1.js',
'test/expected/eachMap/coffee1.js',
'Separate compilation of coffee and litcoffee files with source maps should generate javascript');
assertFileEquality(test,
'tmp/eachMap/litcoffee.js',
'test/expected/eachMap/litcoffee.js',
'Separate compilation of coffee and litcoffee files with source maps should generate javascript');
assertFileEquality(test,
'tmp/eachMap/coffee1.js.map',
'test/expected/eachMap/coffee1.js.map',
'Separate compilation of coffee and litcoffee files with source maps should generate map');
assertFileEquality(test,
'tmp/eachMap/litcoffee.js.map',
'test/expected/eachMap/litcoffee.js.map',
'Separate compilation of coffee and litcoffee files with source maps should generate map');
test.done();
}
};