Add mocha tests
authorAnthony Van de Gejuchte <anthonyvdgent@gmail.com>
Sun, 27 Dec 2015 21:28:03 +0000 (22:28 +0100)
committerAnthony Van de Gejuchte <anthonyvdgent@gmail.com>
Sun, 27 Dec 2015 21:38:20 +0000 (22:38 +0100)
package.json
test/mocha.js [new file with mode: 0644]
test/mocha/string-literal.js [new file with mode: 0644]
test/run-tests.js

index 6b0d2f4..bd4fb3e 100644 (file)
@@ -38,7 +38,8 @@
     "acorn": "~0.6.0",
     "escodegen": "~1.3.3",
     "esfuzz": "~0.3.1",
-    "estraverse": "~1.5.1"
+    "estraverse": "~1.5.1",
+    "mocha": "~2.3.4"
   },
   "browserify": {
     "transform": [
diff --git a/test/mocha.js b/test/mocha.js
new file mode 100644 (file)
index 0000000..411f52c
--- /dev/null
@@ -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 (file)
index 0000000..6493363
--- /dev/null
@@ -0,0 +1,29 @@
+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);
+        }
+    });
+});
\ No newline at end of file
index 3ec04fd..b9a0f82 100755 (executable)
@@ -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();