react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / htmlparser2 / test / test-helper.js
80684 viewsvar htmlparser2 = require(".."),1fs = require("fs"),2path = require("path"),3assert = require("assert"),4Parser = htmlparser2.Parser,5CollectingHandler = htmlparser2.CollectingHandler;67exports.writeToParser = function(handler, options, data){8var parser = new Parser(handler, options);9//first, try to run the test via chunks10for(var i = 0; i < data.length; i++){11parser.write(data.charAt(i));12}13parser.end();14//then parse everything15parser.parseComplete(data);16};1718//returns a tree structure19exports.getEventCollector = function(cb){20var handler = new CollectingHandler({onerror: cb, onend: onend});2122return handler;2324function onend(){25cb(null, handler.events.reduce(eventReducer, []));26}27};2829function eventReducer(events, arr){30if(arr[0] === "onerror" || arr[0] === "onend");31else if(arr[0] === "ontext" && events.length && events[events.length - 1].event === "text"){32events[events.length - 1].data[0] += arr[1];33} else {34events.push({35event: arr[0].substr(2),36data: arr.slice(1)37});38}3940return events;41}4243function getCallback(expected, done){44var repeated = false;4546return function(err, actual){47assert.ifError(err);48try {49assert.deepEqual(expected, actual, "didn't get expected output");50} catch(e){51e.expected = JSON.stringify(expected, null, 2);52e.actual = JSON.stringify(actual, null, 2);53throw e;54}5556if(repeated) done();57else repeated = true;58};59}6061exports.mochaTest = function(name, root, test){62describe(name, readDir);6364function readDir(){65var dir = path.join(root, name);6667fs68.readdirSync(dir)69.filter(RegExp.prototype.test, /^[^\._]/) //ignore all files with a leading dot or underscore70.map(function(name){71return path.join(dir, name);72})73.map(require)74.forEach(runTest);75}7677function runTest(file){78it(file.name, function(done){79test(file, getCallback(file.expected, done));80});81}82};838485