diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-11-03 01:33:53 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-11-03 01:33:53 +0100 |
commit | d1291f67551c58168af43698a359cb5ddfd266b0 (patch) | |
tree | 55a13ed29fe1915e3f42f1b1b7038dafa2e975a7 /node_modules/sax/test/index.js | |
parent | d0a0695fb5d34996850723f7d4b1b59c3df909c2 (diff) |
node_modules
Diffstat (limited to 'node_modules/sax/test/index.js')
-rw-r--r-- | node_modules/sax/test/index.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/node_modules/sax/test/index.js b/node_modules/sax/test/index.js new file mode 100644 index 000000000..d4e1ef4f9 --- /dev/null +++ b/node_modules/sax/test/index.js @@ -0,0 +1,86 @@ +var globalsBefore = JSON.stringify(Object.keys(global)) + , util = require("util") + , assert = require("assert") + , fs = require("fs") + , path = require("path") + , sax = require("../lib/sax") + +exports.sax = sax + +// handy way to do simple unit tests +// if the options contains an xml string, it'll be written and the parser closed. +// otherwise, it's assumed that the test will write and close. +exports.test = function test (options) { + var xml = options.xml + , parser = sax.parser(options.strict, options.opt) + , expect = options.expect + , e = 0 + sax.EVENTS.forEach(function (ev) { + parser["on" + ev] = function (n) { + if (process.env.DEBUG) { + console.error({ expect: expect[e] + , actual: [ev, n] }) + } + if (e >= expect.length && (ev === "end" || ev === "ready")) return + assert.ok( e < expect.length, + "expectation #"+e+" "+util.inspect(expect[e])+"\n"+ + "Unexpected event: "+ev+" "+(n ? util.inspect(n) : "")) + var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n) + assert.equal(ev, expect[e][0], + "expectation #"+e+"\n"+ + "Didn't get expected event\n"+ + "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ + "actual: "+ev+" "+inspected+"\n") + if (ev === "error") assert.equal(n.message, expect[e][1]) + else assert.deepEqual(n, expect[e][1], + "expectation #"+e+"\n"+ + "Didn't get expected argument\n"+ + "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ + "actual: "+ev+" "+inspected+"\n") + e++ + if (ev === "error") parser.resume() + } + }) + if (xml) parser.write(xml).close() + return parser +} + +if (module === require.main) { + var running = true + , failures = 0 + + function fail (file, er) { + util.error("Failed: "+file) + util.error(er.stack || er.message) + failures ++ + } + + fs.readdir(__dirname, function (error, files) { + files = files.filter(function (file) { + return (/\.js$/.exec(file) && file !== 'index.js') + }) + var n = files.length + , i = 0 + console.log("0.." + n) + files.forEach(function (file) { + // run this test. + try { + require(path.resolve(__dirname, file)) + var globalsAfter = JSON.stringify(Object.keys(global)) + if (globalsAfter !== globalsBefore) { + var er = new Error("new globals introduced\n"+ + "expected: "+globalsBefore+"\n"+ + "actual: "+globalsAfter) + globalsBefore = globalsAfter + throw er + } + console.log("ok " + (++i) + " - " + file) + } catch (er) { + console.log("not ok "+ (++i) + " - " + file) + fail(file, er) + } + }) + if (!failures) return console.log("#all pass") + else return console.error(failures + " failure" + (failures > 1 ? "s" : "")) + }) +} |