aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRichard van Velzen <rvanvelzen1@gmail.com>2016-01-14 08:54:40 +0100
committerRichard van Velzen <rvanvelzen1@gmail.com>2016-01-14 08:54:40 +0100
commitac8db977b95b447cba577b41285cb0fa9e65ebdd (patch)
tree76592b4c0effcc7cc2ef9aa3195e9ca557951a4a /test
parentfe4e9f9d97dcc6594a8fc49e04630aa619ff1866 (diff)
parent88b77ddaa9d6b3d55e537dc21030ac58ddfcb86e (diff)
downloadtracifyjs-ac8db977b95b447cba577b41285cb0fa9e65ebdd.tar.gz
tracifyjs-ac8db977b95b447cba577b41285cb0fa9e65ebdd.zip
Merge pull request #905 from avdg/unit-tests
Add unit tests
Diffstat (limited to 'test')
-rw-r--r--test/mocha.js29
-rw-r--r--test/mocha/string-literal.js34
-rwxr-xr-xtest/run-tests.js3
3 files changed, 66 insertions, 0 deletions
diff --git a/test/mocha.js b/test/mocha.js
new file mode 100644
index 00000000..411f52c5
--- /dev/null
+++ b/test/mocha.js
@@ -0,0 +1,29 @@
+var Mocha = require('mocha'),
+ fs = require('fs'),
+ path = require('path');
+
+// Instantiate a Mocha instance.
+var mocha = new Mocha({});
+
+var testDir = __dirname + '/mocha/';
+
+// Add each .js file to the mocha instance
+fs.readdirSync(testDir).filter(function(file){
+ // Only keep the .js files
+ return file.substr(-3) === '.js';
+
+}).forEach(function(file){
+ mocha.addFile(
+ path.join(testDir, file)
+ );
+});
+
+module.exports = function() {
+ mocha.run(function(failures) {
+ if (failures !== 0) {
+ process.on('exit', function () {
+ process.exit(failures);
+ });
+ }
+ });
+}; \ No newline at end of file
diff --git a/test/mocha/string-literal.js b/test/mocha/string-literal.js
new file mode 100644
index 00000000..84aaad7e
--- /dev/null
+++ b/test/mocha/string-literal.js
@@ -0,0 +1,34 @@
+var UglifyJS = require('../../');
+var assert = require("assert");
+
+describe("String literals", function() {
+ it("Should throw syntax error if a string literal contains a newline", function() {
+ var inputs = [
+ "'\n'",
+ "'\r'",
+ '"\r\n"',
+ "'\u2028'",
+ '"\u2029"'
+ ];
+
+ var test = function(input) {
+ return function() {
+ var ast = UglifyJS.parse(input);
+ };
+ };
+
+ var error = function(e) {
+ return e instanceof UglifyJS.JS_Parse_Error &&
+ e.message === "Unterminated string constant";
+ };
+
+ for (var input in inputs) {
+ assert.throws(test(inputs[input]), error);
+ }
+ });
+
+ it("Should not throw syntax error if a string has a line continuation", function() {
+ var output = UglifyJS.parse('var a = "a\\\nb";').print_to_string();
+ assert.equal(output, 'var a="ab";');
+ });
+}); \ No newline at end of file
diff --git a/test/run-tests.js b/test/run-tests.js
index 3ec04fda..b9a0f825 100755
--- a/test/run-tests.js
+++ b/test/run-tests.js
@@ -16,6 +16,9 @@ if (failures) {
process.exit(1);
}
+var mocha_tests = require("./mocha.js");
+mocha_tests();
+
var run_sourcemaps_tests = require('./sourcemaps');
run_sourcemaps_tests();