From b3ee11a1b6a80f1643e655089226acbaa21cc633 Mon Sep 17 00:00:00 2001 From: Austin Wright Date: Sun, 12 Jul 2020 22:29:45 -0700 Subject: [PATCH] Convert Vows assertions to Node.js assertion library --- lib/dom-parser.js | 2 + test/3rd-cases/mock.js | 2 +- test/assert.js | 114 ------------------- test/assert.vows.js | 148 ------------------------- test/dom/attr.vows.js | 20 ++-- test/dom/clone.vows.js | 30 ++--- test/dom/element.vows.js | 76 ++++++------- test/dom/fragment.vows.js | 4 +- test/dom/ns-test.vows.js | 12 +- test/dom/serializer.vows.js | 6 +- test/error/error.vows.js | 37 +++---- test/error/xml-error.vows.js | 26 ++--- test/html/normalize.vows.js | 57 +++++----- test/parse/file-test.vows.js | 6 +- test/parse/locator.vows.js | 12 +- test/parse/namespace.vows.js | 32 +++--- test/parse/node.vows.js | 72 ++++++------ test/parse/parse-element.vows.js | 34 +++--- test/parse/simple.vows.js | 6 +- test/parse/test-define.js | 2 +- test/parse/test-doc-whitespace.vows.js | 14 +-- test/parse/unclosedcomment.vows.js | 4 +- test/xss-test.vows.js | 4 +- 23 files changed, 231 insertions(+), 489 deletions(-) delete mode 100644 test/assert.js delete mode 100644 test/assert.vows.js diff --git a/lib/dom-parser.js b/lib/dom-parser.js index 92937fdcc..9f5525bec 100644 --- a/lib/dom-parser.js +++ b/lib/dom-parser.js @@ -1,3 +1,5 @@ +"use strict"; + function DOMParser(options){ this.options = options ||{locator:{}}; } diff --git a/test/3rd-cases/mock.js b/test/3rd-cases/mock.js index 42013e70a..ed980a045 100644 --- a/test/3rd-cases/mock.js +++ b/test/3rd-cases/mock.js @@ -1 +1 @@ -exports.test = 1; \ No newline at end of file +exports.test = 1; diff --git a/test/assert.js b/test/assert.js deleted file mode 100644 index d689a57ae..000000000 --- a/test/assert.js +++ /dev/null @@ -1,114 +0,0 @@ -var node_assert = require('assert') - -function isAssertionError (error) { - return error.name.startsWith('AssertionError') -} - -/** - * Picks the location of the assertion from the stacktrace if available. - * - * @param {Error} error - */ -function locateAssertion (error) { - return error && error.stack && - error.stack.split('\n').find( - l => l.includes(__dirname) && !l.includes(__filename) - ) - || '[No stacktrace available]' -} - -/** - * The existing vows testsuite makes heavy use of `console.assert(actual+'' == expected, ...)`. - * With the assumption that the equivalent call to an assertion method that can fail a test, - * is `assert(expected == actual, ...)` (the non strict assert using loose equality) - * this function is provided to solve: - * - * - `...` often contains a repetition of `actual` to have it in the test message - * - we want to make sure `assert.isTrue` is checked to cater for any weird type coercion - * - we would "prefer" using `assert.isEqual` for better failure message and test maintainability - * - easy switch to this method by - * - * by just making both assertions :) - * It prefixes each assertion with `(strict ===)` or `(strict ===)`, so it's clear which one fails - * - * @param {*} actual The the value returned by the code under test - * @param {*} expected The expected value - * @param {...*} messages values to use as assertion message, no need to repeat expected or actual - * @returns {undefined} if both assertion pass - * @throws {AssertionError} if one of the assertion fails - * - * @see https://nodejs.org/docs/latest-v10.x/api/assert.html#assert_class_assert_assertionerror - * @see https://nodejs.org/docs/latest-v10.x/api/assert.html#assert_strict_mode - * @see https://github.com/vowsjs/vows#assertistrueactual-message - * @see https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html - */ -function assert (actual, expected, ...messages) { - // in case console.assert gets converted without changing == to ,: fail - // it makes no sense to call this method with only one boolean argument - if (typeof actual === 'boolean' && arguments.length === 1) throw new Error('convert equal to ,') - let caught - // the assertion with the better error message comes first so we can benefit - try { - node_assert.strict.equal(actual, expected) - } catch (error) { - if (!isAssertionError(error)) throw error - caught = error - } - // the original assertion comes second, it has to always be executed - node_assert(actual == expected, ['(loose ==)', ...messages, actual, locateAssertion(caught)].join(' ')) - if (caught) { - const msg = ['(strict ===) ', ...messages, caught.message, locateAssertion(caught)] - if ((this.strictThrows || assert.strictThrows)()) { - caught.message = msg.join(' ') - throw caught - } - (this.log || assert.log)(...msg) - } -} - -assert.log = console.warn -assert.strictThrows = () => process.env.XMLDOM_ASSERT_STRICT || false - -/** - * This is a consistent way of skipping an assertion since it currently fails: - * Change `assert(exp, act, ...)` to `assert.skip(exp, act, ...)` - * - * - it prints something to the output when the assertion fails (like `console.assert`) - * - it fails if no assertion fails (no more need to skip it, if it's no longer needed, remove it) - * - it fails if the reason for skipping is not provided - * - * @param {*} expected The expected value - * @param {*} actual The the value returned by the code under test - * @param {...*} messages values to use as assertion message, no need to repeat expected or actual - * @returns {undefined} if the assertion fails - * @throws {AssertionError} if no assertion fails - */ -function skip (actual, expected, ...messages) { - try { - assert.apply(this, arguments) - } catch (error) { - if (!isAssertionError(error)) { - throw error - } - (this.log || assert.log)( - 'Skipped assertion fails as expected:\n ', - error.message, - 'in', - locateAssertion(error) - ) - return - } - const error = new Error(`Skipped assertion is not failing: '''${messages.join(' ')}'''\n `) - error.message += locateAssertion(error) - throw error -} - -assert.skip = skip - -// provide access to used node assertions to avoid cumbersome duplicate imports -// and avoid forgetting to import .strict methods -assert.fail = node_assert.strict.fail -assert.equal = node_assert.strict.equal -assert.isTrue = node_assert.isTrue - -module.exports = assert diff --git a/test/assert.vows.js b/test/assert.vows.js deleted file mode 100644 index e84060bad..000000000 --- a/test/assert.vows.js +++ /dev/null @@ -1,148 +0,0 @@ -"use strict"; - -const vows = require('vows') -const assert = require('assert').strict -const a = require('./assert') - -const values = [ - undefined, null, - true, false, - NaN, 0, 1, Infinity, -Infinity, - '', '0', '1', 'true', 'false', '[object Object]', '() => {}', - [], {}, - () => {} -] -const describe = (...arguments) => arguments - .map(a => { - const type = typeof a - let str = JSON.stringify(a) - if (str === undefined) { - str = String(a) - } - return `${type} ${str}` - }).join(', ') - -const suite = vows.describe('assert') -values.forEach(actual => { - values.forEach(expected => { - // `NaN === NaN` and `NaN == NaN` are false so skip NaN as expected - if (typeof expected === 'number' && isNaN(expected)) return - - if (expected == actual) {// actual and expected are loose equal - - if (expected !== actual) {// actual and expected are loose equal but not strict equal - suite.addBatch({ - [`assert(${describe(actual, expected)}) {strictThrows: false} logs`]: () => { - const logs = [] - const t = { - strictThrows: () => false, - log: (...args) => { - logs.push(args.join(' ')) - // console.warn(...args) - } - } - a.call(t, actual, expected, 'msg1', 'msg2') - assert.equal(logs.length, 1, 'expected 1 log entry but was ' + logs.length) - const missing = ['(strict ===)', 'msg1', 'msg2', `${__filename}:`] - .filter(em => !logs[0].includes(em)) - assert( - missing.length === 0, - `Expected all of [${describe(...missing)}] in '''${logs[0]}'''.` - ) - }, - [`assert(${describe(actual, expected)}) {strictThrows: true} throws`]: () => { - const t = { - strictThrows: () => true, - } - // assert.throws doesn't work here since the check is not triggered for AssertionError - let caught - try { - a.call(t, actual, expected, 'msg1', 'msg2') - } catch (error) { - caught = error - } - assert( - caught && caught.name.startsWith('AssertionError'), - 'expected an AssertionError to be thrown' - ) - const missing = ['(strict ===)', 'msg1', 'msg2', `${__filename}:`] - .filter(em => !caught.message.includes(em)) - assert( - missing.length === 0, - `Expected all of [${describe(...missing)}] in '''${caught.message}'''.` - ) - }, - [`assert.skip(${describe(actual, expected)}) logs`]: () => { - const logs = [] - const t = { - strictThrows: () => true, - log: (...args) => { - logs.push(args.join(' ')) - // console.warn(...args) - } - } - a.skip.call(t, actual, expected, 'msg1', 'msg2') - assert.equal(logs.length, 1, 'expected 1 log entry but was ' + logs.length) - const missing = ['Skipped', '(strict ===)', 'msg1', 'msg2', `${__filename}:`] - .filter(em => !logs[0].includes(em)) - assert( - missing.length === 0, - `Expected all of [${describe(...missing)}] in '''${logs[0]}'''.` - ) - }, - }) - } else {// actual and expected are loose and strict equal - suite.addBatch({ - [`assert.skip(${describe(actual, expected)}) throws since no asssertion fails`]: () => { - // assert.throws doesn't work here since the check is not triggered for AssertionError - let caught - try { - a.skip(actual, expected, 'msg1', 'msg2') - } catch (error) { - caught = error - } - assert(caught, 'expected an nError to be thrown') - const missing = ['Skipped', 'not failing', 'msg1', 'msg2', `${__filename}:`] - .filter(em => !caught.message.includes(em)) - assert( - missing.length === 0, - `Expected all of [${describe(...missing)}] in '''${caught.message}'''.` - ) - } - }) - } - } else { // actual and expected are NOT loose equal - suite.addBatch({ - [`assert(${describe(actual, expected)}) loose fails`]: () => { - assert.throws( - () => a(actual, expected, 'msg1', 'msg2'), - e => { - const check = /AssertionError/.test(e.name) && - ['(loose ==)', 'msg1', 'msg2'].every(em => e.message.includes(em)) - return check || console.error(e) - } - ) - }, - [`assert.skip(${describe(actual, expected)}) logs`]: () => { - const logs = [] - const t = { - log: (...args) => { - logs.push(args.join(' ')) - // console.warn(...args) - } - } - a.skip.call(t, actual, expected, 'msg1', 'msg2') - assert.equal(logs.length, 1, 'expected 1 log entry but was ' + logs.length) - const missing = ['Skipped', '(loose ==)', 'msg1', 'msg2', `${__filename}:`] - .filter(em => !logs[0].includes(em)) - assert( - missing.length === 0, - `Expected all of [${describe(...missing)}] in '''${logs[0]}'''.` - ) - }, - }) - } - }) -}) - -suite.export(module) diff --git a/test/dom/attr.vows.js b/test/dom/attr.vows.js index 9f4949c00..0a8ecfae5 100644 --- a/test/dom/attr.vows.js +++ b/test/dom/attr.vows.js @@ -2,24 +2,24 @@ var wows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') +const assert = require('assert'); // Create a Test Suite wows.describe('XML attrs').addBatch({ "set attribute":function(){ var root = new DOMParser().parseFromString("",'text/xml').documentElement; root.setAttribute('a','1'); - assert(root.attributes[0].localName, 'a'); + assert.strictEqual(root.attributes[0].localName, 'a'); root.setAttribute('b',2); root.setAttribute('a',1); root.setAttribute('a',1); root.setAttribute('a',1); - assert(root.attributes.length, 2); + assert.strictEqual(root.attributes.length, 2); try { var c = root.ownerDocument.createElement('c'); c.setAttributeNode(root.attributes.item(0)); } catch (e) { - assert(e.code, 10); + assert.strictEqual(e.code, 10); return; } assert.fail('expected error but none was thrown'); @@ -30,15 +30,15 @@ wows.describe('XML attrs').addBatch({ child.setAttributeNS('a','a:a','1'); child.setAttributeNS('b','b:b','2'); child.setAttributeNS('b','b:a','1'); - assert(child.attributes.length, 3, 'after adding 3', child); + assert.strictEqual(child.attributes.length, 3, 'after adding 3', child); child.setAttribute('a',1); child.setAttributeNS('b','b:b','2'); - assert(child.attributes.length, 4, 'after adding 4 and one with namespace'); + assert.strictEqual(child.attributes.length, 4, 'after adding 4 and one with namespace'); try { var c = root.ownerDocument.createElement('c'); c.setAttributeNodeNS(root.attributes.item(0)); } catch (e) { - assert(e.code, 10, 'wrong error code'); + assert.strictEqual(e.code, 10, 'wrong error code'); return; } assert.fail('expected error but none was thrown'); @@ -46,14 +46,14 @@ wows.describe('XML attrs').addBatch({ "override attribute":function(){ var root = new DOMParser().parseFromString("",'text/xml').documentElement; root.setAttributeNS('a','a:a','1'); - assert(root.attributes.length, 4); + assert.strictEqual(root.attributes.length, 4); //not standart // root.firstChild.setAttributeNode(root.attributes[0]); -// assert(root.attributes.length, 0); +// assert.strictEqual(root.attributes.length, 0); }, "attribute namespace":function(){ var root = new DOMParser().parseFromString("",'text/xml').documentElement; - assert(root.getAttributeNS("a", "b"), "e"); + assert.strictEqual(root.getAttributeNS("a", "b"), "e"); }, "override ns attribute":function(){ diff --git a/test/dom/clone.vows.js b/test/dom/clone.vows.js index 82d796c44..5b75a5ba1 100644 --- a/test/dom/clone.vows.js +++ b/test/dom/clone.vows.js @@ -3,24 +3,24 @@ var wows = require('vows'); var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') +const assert = require('assert'); // Create a Test Suite wows.describe('XML Namespace Parse').addBatch({ - 'clone': function () { - var doc1 = new DOMParser().parseFromString("text1text2",'text/xml') + 'clone': function () { + var doc1 = new DOMParser().parseFromString("text1text2",'text/xml'); var doc1s = new XMLSerializer().serializeToString(doc1); - var n =doc1.cloneNode(true) - assert(n, doc1s) - }, - 'import': function () { - var doc1 = new DOMParser().parseFromString("") - var doc2 = new DOMParser().parseFromString("text1text2",'text/xml') + var n =doc1.cloneNode(true); + assert(n, doc1s); + }, + 'import': function () { + var doc1 = new DOMParser().parseFromString(""); + var doc2 = new DOMParser().parseFromString("text1text2",'text/xml'); - var doc3 = new DOMParser().parseFromString("text1text2") - var n =doc1.importNode(doc2.documentElement, true) - doc1.documentElement.appendChild(n) - assert(doc1, doc3+'') - assert.isTrue(doc2 != doc3+'') - } + var doc3 = new DOMParser().parseFromString("text1text2"); + var n =doc1.importNode(doc2.documentElement, true); + doc1.documentElement.appendChild(n); + assert.equal(doc1, doc3+''); + assert(doc2 != doc3+''); + }, }).export(module); // Run it diff --git a/test/dom/element.vows.js b/test/dom/element.vows.js index 5256864d2..5f4af3d0b 100644 --- a/test/dom/element.vows.js +++ b/test/dom/element.vows.js @@ -2,15 +2,15 @@ var wows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -var assert = require('../assert') +var assert = require('assert'); var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; // Create a Test Suite wows.describe('XML Namespace Parse').addBatch({ // See: http://jsfiddle.net/bigeasy/ShcXP/1/ "Document_getElementsByTagName":function () { var doc = new DOMParser().parseFromString(''); - assert(doc.getElementsByTagName('*').length, 2, 'on doc'); - assert(doc.documentElement.getElementsByTagName('*').length, 1, 'on doc.documentElement'); + assert.strictEqual(doc.getElementsByTagName('*').length, 2, 'on doc'); + assert.strictEqual(doc.documentElement.getElementsByTagName('*').length, 1, 'on doc.documentElement'); }, 'getElementsByTagName': function () { @@ -20,16 +20,16 @@ wows.describe('XML Namespace Parse').addBatch({ '' + '','text/xml'); var childs = doc.documentElement.getElementsByTagName('child'); - assert(childs.item(0).getAttribute('attr'), "1",childs.item(0)+''); - assert(childs.item(1).getAttribute('attr'), "2",childs.item(1)+''); - assert(childs.item(2).getAttribute('attr'), "3",childs.item(2)+''); - assert(childs.length, 3, 'documentElement children length'); + assert.strictEqual(childs.item(0).getAttribute('attr'), "1", childs.item(0)+''); + assert.strictEqual(childs.item(1).getAttribute('attr'), "2", childs.item(1)+''); + assert.strictEqual(childs.item(2).getAttribute('attr'), "3", childs.item(2)+''); + assert.strictEqual(childs.length, 3, 'documentElement children length'); var childs = doc.getElementsByTagName('child'); - assert(childs.item(0).getAttribute('attr'), "1",childs.item(0)+''); - assert(childs.item(1).getAttribute('attr'), "2",childs.item(1)+''); - assert(childs.item(2).getAttribute('attr'), "3",childs.item(2)+''); - assert(childs.length, 3, 'doc children length'); + assert.strictEqual(childs.item(0).getAttribute('attr'), "1", childs.item(0)+''); + assert.strictEqual(childs.item(1).getAttribute('attr'), "2", childs.item(1)+''); + assert.strictEqual(childs.item(2).getAttribute('attr'), "3", childs.item(2)+''); + assert.strictEqual(childs.length, 3, 'doc children length'); @@ -39,16 +39,16 @@ wows.describe('XML Namespace Parse').addBatch({ for(var i=0,buf = [];ifoo'); var entries = feed.documentElement.getElementsByTagName('entry'); - assert.equal(entries.length , 1,'assert entry nodelist length ==1'); - assert(entries[0].nodeName, 'entry'); - assert(feed.documentElement.childNodes.item(0).nodeName, 'entry'); + assert.strictEqual(entries.length, 1, 'assert entry nodelist length === 1'); + assert.strictEqual(entries[0].nodeName, 'entry'); + assert.strictEqual(feed.documentElement.childNodes.item(0).nodeName, 'entry'); }, 'getElementsByTagNameNS': function () { var doc = new DOMParser().parseFromString('' + @@ -58,32 +58,32 @@ wows.describe('XML Namespace Parse').addBatch({ var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'*'); var i=0 - assert(childs.length, 6); + assert.strictEqual(childs.length, 6); var childs = doc.getElementsByTagNameNS("http://test.com",'*'); - assert(childs.length, 7); + assert.strictEqual(childs.length, 7); var childs = doc.documentElement.getElementsByTagNameNS("http://test.com",'test'); - assert(childs.length, 3); + assert.strictEqual(childs.length, 3); var childs = doc.getElementsByTagNameNS("http://test.com",'test'); - assert(childs.length, 3); + assert.strictEqual(childs.length, 3); var childs = doc.getElementsByTagNameNS("*", "test"); - assert(childs.length, 4); + assert.strictEqual(childs.length, 4); var childs = doc.documentElement.getElementsByTagNameNS("*", "test"); - assert(childs.length, 4); + assert.strictEqual(childs.length, 4); }, 'getElementById': function () { var doc = new DOMParser().parseFromString('' + '' + '','text/xml'); - assert.isTrue(doc.getElementById('root') != null, 'root') - assert(doc.getElementById('a1').getAttribute('title'), "1", "first"); - assert(doc.getElementById('a2').getAttribute('title'), "2", "second"); - assert(doc.getElementById('a2').getAttribute('title2'), "", "empty"); + assert.notEqual(doc.getElementById('root'), null, 'root'); + assert.strictEqual(doc.getElementById('a1').getAttribute('title'), "1", "first"); + assert.strictEqual(doc.getElementById('a2').getAttribute('title'), "2", "second"); + assert.strictEqual(doc.getElementById('a2').getAttribute('title2'), "", "empty"); }, "append exist child":function(){ var doc = new DOMParser().parseFromString('' + @@ -102,10 +102,10 @@ wows.describe('XML Namespace Parse').addBatch({ var str2=new XMLSerializer().serializeToString(doc2); var str3=new XMLSerializer().serializeToString(doc3); var str4=new XMLSerializer().serializeToString(doc4); - assert(str1, str2, 'str1 == str2') - assert(str2, str3, 'str2 == str3'); - assert.isTrue(str3 != str4, 'str4 != str3:' + str3); - assert(str3.length, str4.length, 'str3 and str4 have same length'); + assert.strictEqual(str1, str2, 'str1 === str2'); + assert.strictEqual(str2, str3, 'str2 === str3'); + assert.notStrictEqual(str3, str4, 'str4 !== str3:' + str3); + assert.strictEqual(str3.length, str4.length, 'str3 and str4 have same length'); }, "append exist other child":function(){ @@ -117,31 +117,31 @@ wows.describe('XML Namespace Parse').addBatch({ var str1=new XMLSerializer().serializeToString(doc); var doc2 = doc1.cloneNode(true); - assert(doc2.documentElement.lastChild.childNodes.length, 0, 'initially 0'); + assert.strictEqual(doc2.documentElement.lastChild.childNodes.length, 0, 'initially 0'); doc2.documentElement.appendChild(doc2.documentElement.firstChild.firstChild); var str2=new XMLSerializer().serializeToString(doc2); - assert(doc2.documentElement.lastChild.childNodes.length, 1, '1 after adding'); - assert.isTrue(str1 != str2, 'str1 != str2'); - assert.isTrue(str1.length != str2.length, 'str1/length != str2.length'); + assert.strictEqual(doc2.documentElement.lastChild.childNodes.length, 1, '1 after adding'); + assert.notStrictEqual(str1, str2, 'str1 !== str2'); + assert.notStrictEqual(str1.length, str2.length, 'str1/length !== str2.length'); var doc3 = new DOMParser().parseFromString(str2,'text/xml'); doc3.documentElement.firstChild.appendChild(doc3.documentElement.lastChild); var str3 = new XMLSerializer().serializeToString(doc3); - assert(str1, str3, 'final assertion'); + assert.strictEqual(str1, str3, 'final assertion'); }, "set textContent":function() { var doc = new DOMParser().parseFromString(''); var a = doc.documentElement.firstChild; var b = a.nextSibling; a.textContent = 'hello'; - assert(doc.documentElement.toString(), 'hello'); + assert.strictEqual(doc.documentElement.toString(), 'hello'); b.textContent = 'there'; - assert(doc.documentElement.toString(), 'hellothere'); + assert.strictEqual(doc.documentElement.toString(), 'hellothere'); b.textContent = ''; - assert(doc.documentElement.toString(), 'hello'); + assert.strictEqual(doc.documentElement.toString(), 'hello'); doc.documentElement.textContent = 'bye'; - assert(doc.documentElement.toString(), 'bye'); + assert.strictEqual(doc.documentElement.toString(), 'bye'); }, "nested append failed":function(){ }, diff --git a/test/dom/fragment.vows.js b/test/dom/fragment.vows.js index 0b5404737..48375daab 100644 --- a/test/dom/fragment.vows.js +++ b/test/dom/fragment.vows.js @@ -2,7 +2,7 @@ var wows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') +const assert = require('assert'); wows.describe('DOM DocumentFragment').addBatch({ // see: http://jsfiddle.net/9Wmh2/1/ @@ -12,6 +12,6 @@ wows.describe('DOM DocumentFragment').addBatch({ document.getElementById("p").insertBefore(fragment, null); fragment.appendChild(document.createTextNode("a")); document.getElementById("p").insertBefore(fragment, null); - assert(document.toString(), '

a

'); + assert.strictEqual(document.toString(), '

a

'); }, }).export(module); diff --git a/test/dom/ns-test.vows.js b/test/dom/ns-test.vows.js index a58c52375..7aa9ba4db 100644 --- a/test/dom/ns-test.vows.js +++ b/test/dom/ns-test.vows.js @@ -1,7 +1,7 @@ "use strict"; var wows = require('vows'); -var assert = require('../assert'); +var assert = require('assert'); var DOMParser = require('../../lib/dom-parser').DOMParser; @@ -12,8 +12,8 @@ wows.describe('XML Namespace Parse').addBatch({ xmlns:{'c':'http://www.xidea.org/lite/core','':'http://www.w3.org/1999/xhtml'} }).parseFromString('', "text/xml"); var el = doc.getElementsByTagName('c:var')[0]; - assert(el.namespaceURI, 'http://www.xidea.org/lite/core') - assert(doc, '') + assert.strictEqual(el.namespaceURI, 'http://www.xidea.org/lite/core'); + assert.equal(doc, ''); }, //ignore default prefix xml attribute "test":function(){ @@ -31,15 +31,15 @@ wows.describe('XML Namespace Parse').addBatch({ te.setAttributeNS(n1, "bar", "valx"); var te = doc.createElementNS(n1, "test"); te.setAttributeNS(n1, "bar", "valx"); - assert.equal(String(te),'', `1. i ${_i}, ${el}`); + assert.strictEqual(String(te), '', `1. i ${_i}, ${el}`); el.appendChild(te); var tx = doc.createElementNS(n2, "test"); tx.setAttributeNS(n2, "bar", "valx"); - assert.equal(String(tx),'', `2. i ${_i}, ${el}`); + assert.strictEqual(String(tx), '', `2. i ${_i}, ${el}`); el.appendChild(tx); } var sr = String(doc); - assert(sr, ''); + assert.strictEqual(sr, ''); } }).export(module); diff --git a/test/dom/serializer.vows.js b/test/dom/serializer.vows.js index e077fff75..a03d81e20 100644 --- a/test/dom/serializer.vows.js +++ b/test/dom/serializer.vows.js @@ -2,16 +2,16 @@ var wows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') +const assert = require('assert'); wows.describe('XML Serializer').addBatch({ 'text node containing "]]>"': function() { var doc = new DOMParser().parseFromString('', 'text/xml'); doc.documentElement.appendChild(doc.createTextNode('hello ]]> there')); - assert(doc.documentElement.firstChild.toString(), 'hello ]]> there'); + assert.strictEqual(doc.documentElement.firstChild.toString(), 'hello ]]> there'); }, '', 'text/html'); - assert(doc.documentElement.firstChild.toString(), ''); + assert.strictEqual(doc.documentElement.firstChild.toString(), ''); }, }).export(module); diff --git a/test/error/error.vows.js b/test/error/error.vows.js index 9dc469524..2ee05cd11 100644 --- a/test/error/error.vows.js +++ b/test/error/error.vows.js @@ -1,6 +1,8 @@ +"use strict"; + var wows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -const assert = require('../assert') +const assert = require('assert'); var xml = '\n\ @@ -34,8 +36,8 @@ wows.describe('errorHandle').addBatch({ errorHandler:function(key,msg){error[key] = msg} }); var doc = parser.parseFromString('<1 1="2"/>', 'text/xml'); - assert.isTrue(typeof error.warning === 'string', 'error.warning: '+String(error.warning)); - assert.isTrue(typeof error.error === 'string', 'error.error: '+String(error.error)); + assert(typeof error.warning === 'string', 'error.warning: '+String(error.warning)); + assert(typeof error.error === 'string', 'error.error: '+String(error.error)); }, 'only one function with one argument builds list': function() { var error = [] @@ -44,8 +46,8 @@ wows.describe('errorHandle').addBatch({ }); var doc = parser.parseFromString('<1 1="2"/>', 'text/xml'); error.map(function(e){error[/^\[xmldom (\w+)\]/.exec(e)[1]]=e}) - assert.isTrue(typeof error.warning === 'string', 'error.warning:'+error.warning); - assert.isTrue(typeof error.error === 'string', 'error.error:'+error.error); + assert(typeof error.warning === 'string', 'error.warning:'+error.warning); + assert(typeof error.error === 'string', 'error.error:'+error.error); }, 'compare one function with only one key': function() { var error = [] @@ -58,15 +60,15 @@ wows.describe('errorHandle').addBatch({ var errorHandler = {[k]:[]}; errorHandler[k] = function(msg){errorMap[k].push(msg)} new DOMParser({errorHandler:errorHandler}).parseFromString(faulty, 'text/xml'); - assert.isTrue(errorHandler[k].length > 0, 'expected entries for '+k); + assert(errorHandler[k].length > 0, 'expected entries for '+k); }); var error2 = []; for(var n in errorMap){ error2 = error2.concat(errorMap[n]) - assert(error.length, errorMap[n].length) + assert.strictEqual(error.length, errorMap[n].length); } - assert(error2.sort().join(','), error.sort().join(','), 'expected same messages') + assert.deepStrictEqual(error2.sort(), error.sort(), 'expected same messages'); }, 'error function throwing is not caught': function() { var error = [] @@ -80,16 +82,13 @@ wows.describe('errorHandle').addBatch({ } }); var doc1 = parser.parseFromString('<;test', 'text/html'); - try{ - var doc2 = parser.parseFromString('', 'text/html'); - }catch(e){ - if (e.message !== 'from throwing errroHandler.error') throw e - } - assert.isTrue( - error.length > 0 && error.every(e => /\n@#\[line\:\d+,col\:\d+\]/.test(e)), - 'line,col must record:'+JSON.stringify(error) - ) - assert(doc1, '
<;test'); - assert(doc2, undefined); + assert.equal(doc1, '
<;test'); + assert.throws(function(){ + var doc2 = parser.parseFromString('', 'text/html'); + }, /from throwing err..Handler\.error/); + assert( + error.length > 0 && error.every(e => /\n@#\[line\:\d+,col\:\d+\]/.test(e)), + 'line,col must record:'+JSON.stringify(error) + ); } }).export(module); diff --git a/test/error/xml-error.vows.js b/test/error/xml-error.vows.js index 31f95a41f..451967fc8 100644 --- a/test/error/xml-error.vows.js +++ b/test/error/xml-error.vows.js @@ -2,7 +2,7 @@ var vows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -var assert = require('../assert'); +var assert = require('assert'); vows.describe('errorHandle').addBatch({ @@ -14,7 +14,7 @@ vows.describe('errorHandle').addBatch({ } }); var dom = p.parseFromString('', 'text/xml'); - assert(errors.length, 2) + assert.strictEqual(errors.length, 2); }, 'unclosed document': function() { var errors = []; @@ -24,7 +24,7 @@ vows.describe('errorHandle').addBatch({ } }); var dom = p.parseFromString('', 'text/xml'); - assert(errors.length, 2) + assert.strictEqual(errors.length, 2); }, 'unclosed hmtl tags': function() { var errors = []; @@ -34,7 +34,7 @@ vows.describe('errorHandle').addBatch({ } }); var dom = p.parseFromString('', 'text/html'); - assert(errors.length, 0,"unclosed html tag not need report!!") + assert.strictEqual(errors.length, 0, "unclosed html tag not need report!!"); }, "invalid xml node":function(){ var errors = []; @@ -43,17 +43,17 @@ vows.describe('errorHandle').addBatch({ errors.push(key, msg) } }); - assert.equal( + assert.strictEqual( p.parseFromString('
'); var root = dom.documentElement; - assert(root.firstChild.nodeValue, ' comment&>< '); + assert.strictEqual(root.firstChild.nodeValue, ' comment&>< '); }, 'cdata comment': function(){ var dom = new DOMParser().parseFromString('start ]]> end'); var root = dom.documentElement; - assert(root.firstChild.nodeValue, 'start '); - assert(root.firstChild.nextSibling.nodeValue, ''); - assert(root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue, ' comment '); - assert(root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue, 'end'); + assert.strictEqual(root.firstChild.nodeValue, 'start '); + assert.strictEqual(root.firstChild.nextSibling.nodeValue, ''); + assert.strictEqual(root.firstChild.nextSibling.nextSibling.nextSibling.nodeValue, ' comment '); + assert.strictEqual(root.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.nodeValue, 'end'); }, 'append node': function () { var dom = new DOMParser().parseFromString(''); var child = dom.createElement("child"); - assert(child, dom.documentElement.appendChild(child)); - assert(child, dom.documentElement.firstChild); + assert.strictEqual(child, dom.documentElement.appendChild(child)); + assert.strictEqual(child, dom.documentElement.firstChild); var fragment = new dom.createDocumentFragment(); - assert(child, fragment.appendChild(child)); + assert.strictEqual(child, fragment.appendChild(child)); }, 'insert node': function () { var dom = new DOMParser().parseFromString(''); var node = dom.createElement("sibling"); var child = dom.documentElement.firstChild; child.parentNode.insertBefore(node, child); - assert(node, child.previousSibling); - assert(node.nextSibling, child); - assert(node.parentNode, child.parentNode); + assert.strictEqual(node, child.previousSibling); + assert.strictEqual(node.nextSibling, child); + assert.strictEqual(node.parentNode, child.parentNode); }, 'insert fragment': function () { var dom = new DOMParser().parseFromString(''); var fragment = dom.createDocumentFragment(); - assert(fragment.nodeType, 11); + assert.strictEqual(fragment.nodeType, 11); var first = fragment.appendChild(dom.createElement("first")); var last = fragment.appendChild(dom.createElement("last")); - assert(fragment.firstChild, first); - assert(fragment.lastChild, last); - assert(last.previousSibling, first); - assert(first.nextSibling, last); + assert.strictEqual(fragment.firstChild, first); + assert.strictEqual(fragment.lastChild, last); + assert.strictEqual(last.previousSibling, first); + assert.strictEqual(first.nextSibling, last); var child = dom.documentElement.firstChild; child.parentNode.insertBefore(fragment, child); - assert(last.previousSibling, first); - assert(first.nextSibling, last); - assert(child.parentNode.firstChild, first); - assert(last, child.previousSibling); - assert(last.nextSibling, child); - assert(first.parentNode, child.parentNode); - assert(last.parentNode, child.parentNode); + assert.strictEqual(last.previousSibling, first); + assert.strictEqual(first.nextSibling, last); + assert.strictEqual(child.parentNode.firstChild, first); + assert.strictEqual(last, child.previousSibling); + assert.strictEqual(last.nextSibling, child); + assert.strictEqual(first.parentNode, child.parentNode); + assert.strictEqual(last.parentNode, child.parentNode); } }).addBatch({ "instruction":function(){ var source = '&'; var doc = new DOMParser().parseFromString(source,"text/xml"); var source2 = new XMLSerializer().serializeToString(doc); - assert(source2, source); + assert.strictEqual(source2, source); }, 'public id && sysid':function(){ var error = [] @@ -98,7 +98,7 @@ wows.describe('XML Node Parse').addBatch({ } }); var doc = parser.parseFromString('', 'text/html'); - assert(doc+'', '') + assert.strictEqual(doc+'', '') } }).export(module); // Run it diff --git a/test/parse/parse-element.vows.js b/test/parse/parse-element.vows.js index 157ddfbda..93b2718c0 100644 --- a/test/parse/parse-element.vows.js +++ b/test/parse/parse-element.vows.js @@ -1,7 +1,7 @@ "use strict"; var wows = require('vows'); -var assert = require('../assert'); +var assert = require('assert'); var DOMParser = require('../../lib/dom-parser').DOMParser; var XMLSerializer = require('../../lib/dom-parser').XMLSerializer; var parser = new DOMParser(); @@ -9,28 +9,28 @@ var parser = new DOMParser(); wows.describe('XML Node Parse').addBatch({ 'noAttribute': function () { const expected = '' - assert(new DOMParser().parseFromString('','text/xml')+'', expected); - assert(new DOMParser().parseFromString('','text/xml')+'', expected); - assert(new DOMParser().parseFromString('','text/xml')+'', expected); - assert(new DOMParser().parseFromString(expected,'text/xml')+'', expected); + assert.strictEqual(new DOMParser().parseFromString('','text/xml')+'', expected); + assert.strictEqual(new DOMParser().parseFromString('','text/xml')+'', expected); + assert.strictEqual(new DOMParser().parseFromString('','text/xml')+'', expected); + assert.strictEqual(new DOMParser().parseFromString(expected,'text/xml')+'', expected); }, 'simpleAttribute': function () { const expected = '' const expectedEmptyB = '' - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - assert(new DOMParser().parseFromString('','text/xml'), ''); - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); - assert(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected); + assert.equal(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert.equal(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert.equal(new DOMParser().parseFromString('','text/xml'), ''); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected); + assert.equal(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); + assert.equal(new DOMParser().parseFromString('','text/xml'), expectedEmptyB); }, 'nsAttribute': function () { const expected = ''; - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expected); - assert(new DOMParser().parseFromString('','text/xml'), expected.replace('3', '3/')); - assert(new DOMParser().parseFromString('','text/xml'), expected); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected.replace('3', '3/')); + assert.equal(new DOMParser().parseFromString('','text/xml'), expected); } }).export(module); diff --git a/test/parse/simple.vows.js b/test/parse/simple.vows.js index 548dd1df9..23b05416a 100644 --- a/test/parse/simple.vows.js +++ b/test/parse/simple.vows.js @@ -2,7 +2,7 @@ var wows = require('vows'); var DOMParser = require('../../lib/dom-parser').DOMParser; -var assert = require('../assert') +var assert = require('assert'); wows.describe('parse').addBatch({ 'simple': function() { @@ -18,7 +18,7 @@ wows.describe('parse').addBatch({ 'test':function(){ var parser = new DOMParser(); var dom = parser.parseFromString('