| |
| // NOTES: |
| // - the errors actually still need to be reviewed to check that they |
| // are fully correct interpretations of the IDLs |
| |
| var wp = process.env.JSCOV ? require("../lib-cov/webidl2") : require("../lib/webidl2") |
| , expect = require("expect.js") |
| , pth = require("path") |
| , fs = require("fs") |
| ; |
| describe("Parses all of the invalid IDLs to check that they blow up correctly", function () { |
| var dir = pth.join(__dirname, "invalid/idl") |
| , skip = {} |
| , idls = fs.readdirSync(dir) |
| .filter(function (it) { return (/\.w?idl$/).test(it) && !skip[it]; }) |
| .map(function (it) { return pth.join(dir, it); }) |
| , errors = idls.map(function (it) { return pth.join(__dirname, "invalid", "json", pth.basename(it).replace(/\.w?idl/, ".json")); }) |
| ; |
| |
| for (var i = 0, n = idls.length; i < n; i++) { |
| var idl = idls[i], error = JSON.parse(fs.readFileSync(errors[i], "utf8")); |
| var func = (function (idl, err) { |
| return function () { |
| var error; |
| try { |
| var ast = wp.parse(fs.readFileSync(idl, "utf8")); |
| console.log(JSON.stringify(ast, null, 4)); |
| } |
| catch (e) { |
| error = e; |
| } |
| finally { |
| expect(error).to.be.ok(); |
| expect(error.message).to.equal(err.message); |
| expect(error.line).to.equal(err.line); |
| } |
| |
| }; |
| }(idl, error)); |
| it("should produce the right error for " + idl, func); |
| } |
| }); |