Skip to content

Commit

Permalink
Tidy-up tests
Browse files Browse the repository at this point in the history
Separates actual tests from helper modules and adds automatic test
discovery.
  • Loading branch information
BYK committed Jan 18, 2014
1 parent 3cd2b28 commit 5049577
Show file tree
Hide file tree
Showing 35 changed files with 105 additions and 123 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@
"node": "*"
},
"scripts": {
"test": "node tests/all.js"
"test": "node test"
}
}
File renamed without changes.
4 changes: 4 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"use strict";

if (module === require.main)
require('test').run(require('./tests'));
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
18 changes: 8 additions & 10 deletions tests/anonymous_functions.js → test/tests/anonymous_functions.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
"use strict";

var
fs = require('fs'),
jsxgettext = require('../lib/jsxgettext'),
utils = require('./utils'),
path = require('path');
var fs = require('fs');
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');
var utils = require('../utils');

exports['test anonymous functions and method calls'] = function (assert, cb) {
// method calls usually result in CallExpressions that does have an empty
// .callee which, combined with an empty "keyword" argument, results them
// being treated as a gettext call variant.
var inputFilename = path.join(__dirname, 'inputs', 'anonymous_functions.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'anonymous_functions.js');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/anonymous_functions.js': source},
result = jsxgettext.generate(sources, 'inputs/anonymous_functions.js', opts);
var result = jsxgettext.generate({'inputs/anonymous_functions.js': source}, {});
assert.equal(typeof result, 'string', 'result is a string');
assert.ok(result.length > 0, 'result is not empty');

var outputFilename = path.join(__dirname, 'outputs', 'anonymous_functions.pot');
var outputFilename = path.join(__dirname, '..', 'outputs', 'anonymous_functions.pot');
utils.compareResultWithFile(result, outputFilename, assert, cb);
});
};
Expand Down
14 changes: 6 additions & 8 deletions tests/test_comment.js → test/tests/comments.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
"use strict";

var
fs = require('fs'),
jsxgettext = require('../lib/jsxgettext'),
path = require('path');
var fs = require('fs');
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');

// Tests parsing files with comments

exports['test comments'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'test.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'test.js');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/test.js': source},
result = jsxgettext.generate(sources, 'inputs/test.js', opts);
var result = jsxgettext.generate({'inputs/test.js': source}, {});
assert.equal(typeof result, 'string', 'result is a string');
assert.ok(result.length > 0, 'result is not empty');
cb();
Expand Down
6 changes: 2 additions & 4 deletions tests/creation_date.js → test/tests/creation_date.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
"use strict";

var
jsxgettext = require('../lib/jsxgettext'),
gettextParser = require('gettext-parser');
var jsxgettext = require('../../lib/jsxgettext');
var gettextParser = require('gettext-parser');

exports['test creation date'] = function (assert, cb) {
var opts = {},
Expand All @@ -18,5 +17,4 @@ exports['test creation date'] = function (assert, cb) {
cb();
};


if (module === require.main) require('test').run(exports);
7 changes: 4 additions & 3 deletions tests/ejs.js → test/tests/ejs.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
"use strict";

var fs = require('fs');
var jsxgettext = require('../lib/jsxgettext');
var ejs = require('../lib/parsers/ejs').ejs;
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');
var ejs = require('../../lib/parsers/ejs').ejs;

exports['test ejs'] = function (assert, cb) {
// check that include syntax doesn't break extraction
var inputFilename = path.join(__dirname, 'inputs', 'include.ejs');
var inputFilename = path.join(__dirname, '..', 'inputs', 'include.ejs');
fs.readFile(inputFilename, "utf8", function (err, source) {
var result = jsxgettext.generate.apply(jsxgettext, ejs(
{'inputs/include.ejs': source}, {})
Expand Down
32 changes: 13 additions & 19 deletions tests/expressions.js → test/tests/expressions.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,41 @@
"use strict";

var
fs = require('fs'),
jsxgettext = require('../lib/jsxgettext'),
utils = require('./utils'),
path = require('path');
var fs = require('fs');
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');
var utils = require('../utils');

exports['test different expression contexts for gettext'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'expressions.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'expressions.js');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/expressions.js': source},
result = jsxgettext.generate(sources, 'inputs/expressions.js', opts);
var result = jsxgettext.generate({'inputs/expressions.js': source}, {});
assert.equal(typeof result, 'string', 'result is a string');
assert.ok(result.length > 0, 'result is not empty');

var outputFilename = path.join(__dirname, 'outputs', 'expressions.pot');
var outputFilename = path.join(__dirname, '..', 'outputs', 'expressions.pot');

utils.compareResultWithFile(result, outputFilename, assert, cb);
});
};

exports['test issue #25'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'pizza.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'pizza.js');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/pizza.js': source},
result = jsxgettext.generate(sources, 'inputs/pizza.js', opts);
var result = jsxgettext.generate({'inputs/pizza.js': source}, {});
assert.equal(typeof result, 'string', 'result is a string');
assert.ok(result.length > 0, 'result is not empty');
cb();
});
};

exports['test concatenated strings (issue #10)'] = function (assert, cb) {
var inputFilename = path.join(__dirname, 'inputs', 'concat.js');
var outputFilename = path.join(__dirname, 'outputs', 'concat.pot');
var inputFilename = path.join(__dirname, '..', 'inputs', 'concat.js');
var outputFilename = path.join(__dirname, '..', 'outputs', 'concat.pot');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/concat.js': source},
result = jsxgettext.generate(sources, opts);
var result = jsxgettext.generate({'inputs/concat.js': source}, {});
assert.equal(typeof result, 'string', 'result is a string');
assert.ok(result.length > 0, 'result is not empty');

Expand Down
7 changes: 4 additions & 3 deletions tests/handlebars.js → test/tests/handlebars.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
"use strict";

var fs = require('fs');
var jsxgettext = require('../lib/jsxgettext');
var handlebars = require('../lib/parsers/handlebars').handlebars;
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');
var handlebars = require('../../lib/parsers/handlebars').handlebars;

exports['test handlebars'] = function (assert, cb) {
var inputFilename = path.join(__dirname, 'inputs', 'example.handlebars');
var inputFilename = path.join(__dirname, '..', 'inputs', 'example.handlebars');
fs.readFile(inputFilename, "utf8", function (err, source) {
var result = jsxgettext.generate.apply(jsxgettext, handlebars(
{'inputs/example.handlebars': source}, {})
Expand Down
16 changes: 16 additions & 0 deletions test/tests/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"use strict";

var fs = require('fs');
var path = require('path');

var self = path.basename(__filename);

fs.readdirSync(__dirname).forEach(function (item) {
if (item === self || path.extname(item) !== '.js' && !fs.statSync(item).isDirectory())
return;

exports['test ' + path.basename(item, '.js')] = require(path.join(__dirname, item));
});

if (module === require.main)
require('test').run(exports);
9 changes: 5 additions & 4 deletions tests/jade.js → test/tests/jade.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
"use strict";

var fs = require('fs');
var jsxgettext = require('../lib/jsxgettext');
var jade = require('../lib/parsers/jade').jade;
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');
var jade = require('../../lib/parsers/jade').jade;

exports['test parsing'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'second_attribute.jade');
var inputFilename = path.join(__dirname, '..', 'inputs', 'second_attribute.jade');
fs.readFile(inputFilename, "utf8", function (err, source) {

var opts = {keyword: '_'},
Expand All @@ -27,7 +28,7 @@ exports['test parsing'] = function (assert, cb) {

exports['test regexp escaping'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'second_attribute.jade');
var inputFilename = path.join(__dirname, '..', 'inputs', 'second_attribute.jade');
fs.readFile(inputFilename, "utf8", function (err, source) {
// if keyword is not escaped, this will throw an exception
var opts = {keyword: 'foo)bar'},
Expand Down
49 changes: 25 additions & 24 deletions tests/join_existing.js → test/tests/join_existing.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,53 @@
"use strict";

var
fs = require('fs'),
jsxgettext = require('../lib/jsxgettext'),
utils = require('./utils'),
path = require('path');
var fs = require('fs');
var path = require('path');

// Tests the --join-existing feature
var jsxgettext = require('../../lib/jsxgettext');
var utils = require('../utils');

/*
* We use xgettext on files under inputs and save it's output
* under outputs. These tests run jsxgettext against the
* same inputs and test for identical output.
*/
// Tests the --join-existing feature

var sourceFirstPass;

var test2 = function (assert, cb) {
// We'll extract strings from inputs/second.js
// This should match outputs/messages.js
var inputFilename = path.join(__dirname, 'inputs', 'second.js');
// This should match outputs/messages.pot
var inputFilename = path.join(__dirname, '..', 'inputs', 'second.js');
fs.readFile(inputFilename, 'utf8', function (err, source) {
var opts = {"join-existing": true},
sources = {'inputs/first.js': sourceFirstPass,
'inputs/second.js': source},
result = jsxgettext.generate(sources, 'inputs/second.js', opts);
var result = jsxgettext.generate({
'inputs/first.js': sourceFirstPass,
'inputs/second.js': source
}, {
output: 'messages.pot',
"join-existing": true
});

assert.equal(typeof result, 'string', 'Result should be a string');
assert.ok(result.length > 0, 'Result should not be empty');
var outputFilename = path.join(__dirname, 'outputs', 'messages_secondpass.pot');
var outputFilename = path.join(__dirname, '..', 'outputs', 'messages_secondpass.pot');

utils.compareResultWithFile(result, outputFilename, assert, function () {
fs.unlink('messages.pot', cb); // cleanup
});
});
};

exports['we gettext from first file'] = function (assert, cb) {
/*
* We use xgettext on files under inputs and save it's output
* under outputs. These tests run jsxgettext against the
* same inputs and test for identical output.
*/
exports['test gettext from first file'] = function (assert, cb) {
// We'll extract strings from inputs/first.js
// This should match outputs/messages_firstpass.js
var inputFilename = path.join(__dirname, 'inputs', 'first.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'first.js');
fs.readFile(inputFilename, 'utf8', function (err, source) {
var opts = {},
sources = {'inputs/first.js': source},
result = jsxgettext.generate(sources, 'inputs/first.js', opts);
var result = jsxgettext.generate({'inputs/first.js': source}, {});

assert.equal(typeof result, 'string', 'Result should be a string');
assert.ok(result.length > 0, 'Result should not be empty');
var outputFilename = path.join(__dirname, 'outputs', 'messages_firstpass.pot');
var outputFilename = path.join(__dirname, '..', 'outputs', 'messages_firstpass.pot');

utils.compareResultWithFile(result, outputFilename, assert, function () {
sourceFirstPass = source;
Expand Down
18 changes: 7 additions & 11 deletions tests/leading_hash.js → test/tests/leading_hash.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
"use strict";

var
fs = require('fs'),
jsxgettext = require('../lib/jsxgettext'),
path = require('path');
var fs = require('fs');
var path = require('path');

// Tests parsing files with leading hashes
var jsxgettext = require('../../lib/jsxgettext');

exports['leading hash'] = function (assert, cb) {
// Tests parsing files with leading hashes
exports['test with leading hash'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'hash.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'hash.js');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/first.js': source},
result = jsxgettext.generate(sources, 'inputs/hash.js', opts);
var result = jsxgettext.generate({'inputs/first.js': source}, {});
assert.equal(typeof result, 'string', 'result is a string');
assert.ok(result.length > 0, 'result is not empty');
cb();
});
};


if (module === require.main) require('test').run(exports);
15 changes: 6 additions & 9 deletions tests/po_quotes.js → test/tests/po_quotes.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
"use strict";

var
fs = require('fs'),
jsxgettext = require('../lib/jsxgettext'),
path = require('path');
var fs = require('fs');
var path = require('path');

// Tests parsing files with comments
var jsxgettext = require('../../lib/jsxgettext');

// Tests parsing files with comments
exports['test quotes and newlines when folding msgid'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'po_quotes.js');
var inputFilename = path.join(__dirname, '..', 'inputs', 'po_quotes.js');
fs.readFile(inputFilename, "utf8", function (err, source) {
var opts = {},
sources = {'inputs/po_quotes.js': source},
result = jsxgettext.generate(sources, 'inputs/po_quotes.js', opts);
var result = jsxgettext.generate({'inputs/po_quotes.js': source}, {});

// short line is escaped properly
assert.ok(result.indexOf('\nmsgid "Hello \\"World\\"\\n"\n') >= 0, 'short line');
Expand Down
7 changes: 4 additions & 3 deletions tests/second_attribute.js → test/tests/second_attribute.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
"use strict";

var fs = require('fs');
var jsxgettext = require('../lib/jsxgettext');
var ejs = require('../lib/parsers/ejs').ejs;
var path = require('path');

var jsxgettext = require('../../lib/jsxgettext');
var ejs = require('../../lib/parsers/ejs').ejs;

exports['test second attribute'] = function (assert, cb) {
// check that files with leading hash parse
var inputFilename = path.join(__dirname, 'inputs', 'second_attribute.ejs');
var inputFilename = path.join(__dirname, '..', 'inputs', 'second_attribute.ejs');
fs.readFile(inputFilename, "utf8", function (err, source) {
var result = jsxgettext.generate.apply(jsxgettext, ejs(
{'inputs/second_attribute.ejs': source}, {})
Expand Down
File renamed without changes.
Loading

0 comments on commit 5049577

Please sign in to comment.