From dcc7991eb73ef440f0f5311fe9254d6a29f8bc9b Mon Sep 17 00:00:00 2001 From: Godmar Back Date: Thu, 13 Dec 2012 15:09:23 -0500 Subject: [PATCH] Support running tests under html5 parser - add html5 as optional dependency to package.json - add '-p' flag (-p html5) to test runner - export setDefaultParser/getDefaultParser to browser/index.js --- lib/jsdom/browser/index.js | 13 ++++++++++++- package.json | 3 ++- test/runner | 8 ++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/jsdom/browser/index.js b/lib/jsdom/browser/index.js index 8f2069c706..b17a7874eb 100644 --- a/lib/jsdom/browser/index.js +++ b/lib/jsdom/browser/index.js @@ -340,7 +340,7 @@ exports.createWindow = function(dom, options) { * With cache: ~80ms */ var defaultParser = null; -function getDefaultParser() { +var getDefaultParser = exports.getDefaultParser = function () { if (defaultParser === null) { try { defaultParser = require('htmlparser'); @@ -357,6 +357,17 @@ function getDefaultParser() { return defaultParser; } +/** + * Export getter/setter of default parser to facilitate testing + * with different HTML parsers. + */ +exports.setDefaultParser = function (parser) { + if (typeof parser == 'object') { + defaultParser = parser; + } else if (typeof parser == 'string') + defaultParser = require(parser); +} + /** * Augments the given DOM by adding browser-specific properties and methods (BOM). * Returns the augmented DOM. diff --git a/package.json b/package.json index 765ad34e2a..7daba4dc19 100644 --- a/package.json +++ b/package.json @@ -191,7 +191,8 @@ "contextify" : "0.1.x" }, "optionalDependencies": { - "contextify" : "0.1.x" + "contextify" : "0.1.x", + "html5" : ">=0.3.8" }, "devDependencies" : { "nodeunit" : ">=0.5.x", diff --git a/test/runner b/test/runner index cb9447341c..059a9e08b6 100755 --- a/test/runner +++ b/test/runner @@ -20,6 +20,8 @@ var optimist = require('optimist') .describe('t', 'choose the test cases to run. ie: -t jquery') .alias('d', 'debug') .describe('d', 'run in node\'s interactive debugger mode') + .alias('p', 'parser') + .describe('p', 'the HTML parser to use (e.g. html5); default is htmlparser') .alias('v', 'verbose') .describe('v', 'show all tests that are being run'); @@ -134,6 +136,12 @@ files.map(function (p) { } }); +if (argv.parser) { + var browser = require("../lib/jsdom/browser/index"); + console.log("Using parser " + argv.parser); + browser.setDefaultParser(argv.parser); +} + nodeunit.runModules(modulesToRun, { moduleStart: function (name) { currentModule = name.replace('.js', '');