CB-12621: reverted elementtree dep to 0.1.6

This commit is contained in:
Steve Gill
2017-04-02 17:11:17 -05:00
parent 8a2e96d995
commit 4a0f69a3f0
53 changed files with 12331 additions and 1955 deletions
+25
View File
@@ -0,0 +1,25 @@
// set this really low so that I don't have to put 64 MB of xml in here.
var sax = require("../lib/sax")
var bl = sax.MAX_BUFFER_LENGTH
sax.MAX_BUFFER_LENGTH = 5;
require(__dirname).test({
expect : [
["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 15\nChar: "],
["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 30\nChar: "],
["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 45\nChar: "],
["opentag", {
"name": "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ",
"attributes": {}
}],
["text", "yo"],
["closetag", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"]
]
}).write("<abcdefghijklmn")
.write("opqrstuvwxyzABC")
.write("DEFGHIJKLMNOPQR")
.write("STUVWXYZ>")
.write("yo")
.write("</abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>")
.close();
sax.MAX_BUFFER_LENGTH = bl
+11
View File
@@ -0,0 +1,11 @@
require(__dirname).test({
expect : [
["opentag", {"name": "R","attributes": {}}],
["opencdata", undefined],
["cdata", " this is character data  "],
["closecdata", undefined],
["closetag", "R"]
]
}).write("<r><![CDATA[ this is ").write("character data  ").write("]]></r>").close();
+15
View File
@@ -0,0 +1,15 @@
require(__dirname).test({
expect : [
["opentag", {"name": "R","attributes": {}}],
["opencdata", undefined],
["cdata", " this is "],
["closecdata", undefined],
["closetag", "R"]
]
})
.write("<r><![CDATA[ this is ]")
.write("]>")
.write("</r>")
.close();
+28
View File
@@ -0,0 +1,28 @@
var p = require(__dirname).test({
expect : [
["opentag", {"name": "R","attributes": {}}],
["opencdata", undefined],
["cdata", "[[[[[[[[]]]]]]]]"],
["closecdata", undefined],
["closetag", "R"]
]
})
var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
for (var i = 0; i < x.length ; i ++) {
p.write(x.charAt(i))
}
p.close();
var p2 = require(__dirname).test({
expect : [
["opentag", {"name": "R","attributes": {}}],
["opencdata", undefined],
["cdata", "[[[[[[[[]]]]]]]]"],
["closecdata", undefined],
["closetag", "R"]
]
})
var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>"
p2.write(x).close();
+15
View File
@@ -0,0 +1,15 @@
require(__dirname).test({
expect : [
["opentag", {"name": "R","attributes": {}}],
["opencdata", undefined],
["cdata", " this is "],
["closecdata", undefined],
["opencdata", undefined],
["cdata", "character data  "],
["closecdata", undefined],
["closetag", "R"]
]
}).write("<r><![CDATA[ this is ]]>").write("<![CDA").write("T").write("A[")
.write("character data  ").write("]]></r>").close();
+10
View File
@@ -0,0 +1,10 @@
require(__dirname).test({
xml : "<r><![CDATA[ this is character data  ]]></r>",
expect : [
["opentag", {"name": "R","attributes": {}}],
["opencdata", undefined],
["cdata", " this is character data  "],
["closecdata", undefined],
["closetag", "R"]
]
});
+86
View File
@@ -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" : ""))
})
}
+43
View File
@@ -0,0 +1,43 @@
require(__dirname).test
( { xml :
"<compileClassesResponse>"+
"<result>"+
"<bodyCrc>653724009</bodyCrc>"+
"<column>-1</column>"+
"<id>01pG0000002KoSUIA0</id>"+
"<line>-1</line>"+
"<name>CalendarController</name>"+
"<success>true</success>"+
"</result>"+
"</compileClassesResponse>"
, expect :
[ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ]
, [ "opentag", { name : "RESULT", attributes: {} } ]
, [ "opentag", { name: "BODYCRC", attributes: {} } ]
, [ "text", "653724009" ]
, [ "closetag", "BODYCRC" ]
, [ "opentag", { name: "COLUMN", attributes: {} } ]
, [ "text", "-1" ]
, [ "closetag", "COLUMN" ]
, [ "opentag", { name: "ID", attributes: {} } ]
, [ "text", "01pG0000002KoSUIA0" ]
, [ "closetag", "ID" ]
, [ "opentag", {name: "LINE", attributes: {} } ]
, [ "text", "-1" ]
, [ "closetag", "LINE" ]
, [ "opentag", {name: "NAME", attributes: {} } ]
, [ "text", "CalendarController" ]
, [ "closetag", "NAME" ]
, [ "opentag", {name: "SUCCESS", attributes: {} } ]
, [ "text", "true" ]
, [ "closetag", "SUCCESS" ]
, [ "closetag", "RESULT" ]
, [ "closetag", "COMPILECLASSESRESPONSE" ]
]
, strict : false
, opt : {}
}
)
+24
View File
@@ -0,0 +1,24 @@
// https://github.com/isaacs/sax-js/issues/33
require(__dirname).test
( { xml : "<xml>\n"+
"<!-- \n"+
" comment with a single dash- in it\n"+
"-->\n"+
"<data/>\n"+
"</xml>"
, expect :
[ [ "opentag", { name: "xml", attributes: {} } ]
, [ "text", "\n" ]
, [ "comment", " \n comment with a single dash- in it\n" ]
, [ "text", "\n" ]
, [ "opentag", { name: "data", attributes: {} } ]
, [ "closetag", "data" ]
, [ "text", "\n" ]
, [ "closetag", "xml" ]
]
, strict : true
, opt : {}
}
)
+15
View File
@@ -0,0 +1,15 @@
// https://github.com/isaacs/sax-js/issues/35
require(__dirname).test
( { xml : "<xml>&#Xd;&#X0d;\n"+
"</xml>"
, expect :
[ [ "opentag", { name: "xml", attributes: {} } ]
, [ "text", "\r\r\n" ]
, [ "closetag", "xml" ]
]
, strict : true
, opt : {}
}
)
+13
View File
@@ -0,0 +1,13 @@
// https://github.com/isaacs/sax-js/issues/47
require(__dirname).test
( { xml : '<a href="query.svc?x=1&y=2&z=3"/>'
, expect : [
[ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ],
[ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ],
[ "closetag", "a" ]
]
, strict : true
, opt : {}
}
)
+31
View File
@@ -0,0 +1,31 @@
// https://github.com/isaacs/sax-js/issues/49
require(__dirname).test
( { xml : "<xml><script>hello world</script></xml>"
, expect :
[ [ "opentag", { name: "xml", attributes: {} } ]
, [ "opentag", { name: "script", attributes: {} } ]
, [ "text", "hello world" ]
, [ "closetag", "script" ]
, [ "closetag", "xml" ]
]
, strict : false
, opt : { lowercasetags: true, noscript: true }
}
)
require(__dirname).test
( { xml : "<xml><script><![CDATA[hello world]]></script></xml>"
, expect :
[ [ "opentag", { name: "xml", attributes: {} } ]
, [ "opentag", { name: "script", attributes: {} } ]
, [ "opencdata", undefined ]
, [ "cdata", "hello world" ]
, [ "closecdata", undefined ]
, [ "closetag", "script" ]
, [ "closetag", "xml" ]
]
, strict : false
, opt : { lowercasetags: true, noscript: true }
}
)
+28
View File
@@ -0,0 +1,28 @@
var sax = require("../lib/sax"),
assert = require("assert")
function testPosition(chunks, expectedEvents) {
var parser = sax.parser();
expectedEvents.forEach(function(expectation) {
parser['on' + expectation[0]] = function() {
for (var prop in expectation[1]) {
assert.equal(parser[prop], expectation[1][prop]);
}
}
});
chunks.forEach(function(chunk) {
parser.write(chunk);
});
};
testPosition(['<div>abcdefgh</div>'],
[ ['opentag', { position: 5, startTagPosition: 1 }]
, ['text', { position: 19, startTagPosition: 14 }]
, ['closetag', { position: 19, startTagPosition: 14 }]
]);
testPosition(['<div>abcde','fgh</div>'],
[ ['opentag', { position: 5, startTagPosition: 1 }]
, ['text', { position: 19, startTagPosition: 14 }]
, ['closetag', { position: 19, startTagPosition: 14 }]
]);
+12
View File
@@ -0,0 +1,12 @@
require(__dirname).test({
xml : "<html><head><script>if (1 < 0) { console.log('elo there'); }</script></head></html>",
expect : [
["opentag", {"name": "HTML","attributes": {}}],
["opentag", {"name": "HEAD","attributes": {}}],
["opentag", {"name": "SCRIPT","attributes": {}}],
["script", "if (1 < 0) { console.log('elo there'); }"],
["closetag", "SCRIPT"],
["closetag", "HEAD"],
["closetag", "HTML"]
]
});
+40
View File
@@ -0,0 +1,40 @@
require(__dirname).test({
xml :
"<root>"+
"<child>" +
"<haha />" +
"</child>" +
"<monkey>" +
"=(|)" +
"</monkey>" +
"</root>",
expect : [
["opentag", {
"name": "root",
"attributes": {}
}],
["opentag", {
"name": "child",
"attributes": {}
}],
["opentag", {
"name": "haha",
"attributes": {}
}],
["closetag", "haha"],
["closetag", "child"],
["opentag", {
"name": "monkey",
"attributes": {}
}],
["text", "=(|)"],
["closetag", "monkey"],
["closetag", "root"],
["end"],
["ready"]
],
strict : true,
opt : {}
});
+40
View File
@@ -0,0 +1,40 @@
require(__dirname).test({
xml :
"<root>"+
"<child>" +
"<haha />" +
"</child>" +
"<monkey>" +
"=(|)" +
"</monkey>" +
"</root>",
expect : [
["opentag", {
"name": "ROOT",
"attributes": {}
}],
["opentag", {
"name": "CHILD",
"attributes": {}
}],
["opentag", {
"name": "HAHA",
"attributes": {}
}],
["closetag", "HAHA"],
["closetag", "CHILD"],
["opentag", {
"name": "MONKEY",
"attributes": {}
}],
["text", "=(|)"],
["closetag", "MONKEY"],
["closetag", "ROOT"],
["end"],
["ready"]
],
strict : false,
opt : {}
});
+25
View File
@@ -0,0 +1,25 @@
require(__dirname).test({
xml :
"<root> "+
"<haha /> "+
"<haha/> "+
"<monkey> "+
"=(|) "+
"</monkey>"+
"</root> ",
expect : [
["opentag", {name:"ROOT", attributes:{}}],
["opentag", {name:"HAHA", attributes:{}}],
["closetag", "HAHA"],
["opentag", {name:"HAHA", attributes:{}}],
["closetag", "HAHA"],
// ["opentag", {name:"HAHA", attributes:{}}],
// ["closetag", "HAHA"],
["opentag", {name:"MONKEY", attributes:{}}],
["text", "=(|)"],
["closetag", "MONKEY"],
["closetag", "ROOT"]
],
opt : { trim : true }
});
+17
View File
@@ -0,0 +1,17 @@
// stray ending tags should just be ignored in non-strict mode.
// https://github.com/isaacs/sax-js/issues/32
require(__dirname).test
( { xml :
"<a><b></c></b></a>"
, expect :
[ [ "opentag", { name: "A", attributes: {} } ]
, [ "opentag", { name: "B", attributes: {} } ]
, [ "text", "</c>" ]
, [ "closetag", "B" ]
, [ "closetag", "A" ]
]
, strict : false
, opt : {}
}
)
+17
View File
@@ -0,0 +1,17 @@
require(__dirname).test({
xml : "<span>Welcome,</span> to monkey land",
expect : [
["opentag", {
"name": "SPAN",
"attributes": {}
}],
["text", "Welcome,"],
["closetag", "SPAN"],
["text", " to monkey land"],
["end"],
["ready"]
],
strict : false,
opt : {}
});
+17
View File
@@ -0,0 +1,17 @@
// unquoted attributes should be ok in non-strict mode
// https://github.com/isaacs/sax-js/issues/31
require(__dirname).test
( { xml :
"<span class=test hello=world></span>"
, expect :
[ [ "attribute", { name: "class", value: "test" } ]
, [ "attribute", { name: "hello", value: "world" } ]
, [ "opentag", { name: "SPAN",
attributes: { class: "test", hello: "world" } } ]
, [ "closetag", "SPAN" ]
]
, strict : false
, opt : {}
}
)
+67
View File
@@ -0,0 +1,67 @@
var t = require(__dirname)
, xmls = // should be the same both ways.
[ "<parent xmlns:a='http://ATTRIBUTE' a:attr='value' />"
, "<parent a:attr='value' xmlns:a='http://ATTRIBUTE' />" ]
, ex1 =
[ [ "opennamespace"
, { prefix: "a"
, uri: "http://ATTRIBUTE"
}
]
, [ "attribute"
, { name: "xmlns:a"
, value: "http://ATTRIBUTE"
, prefix: "xmlns"
, local: "a"
, uri: "http://www.w3.org/2000/xmlns/"
}
]
, [ "attribute"
, { name: "a:attr"
, local: "attr"
, prefix: "a"
, uri: "http://ATTRIBUTE"
, value: "value"
}
]
, [ "opentag"
, { name: "parent"
, uri: ""
, prefix: ""
, local: "parent"
, attributes:
{ "a:attr":
{ name: "a:attr"
, local: "attr"
, prefix: "a"
, uri: "http://ATTRIBUTE"
, value: "value"
}
, "xmlns:a":
{ name: "xmlns:a"
, local: "a"
, prefix: "xmlns"
, uri: "http://www.w3.org/2000/xmlns/"
, value: "http://ATTRIBUTE"
}
}
, ns: {"a": "http://ATTRIBUTE"}
}
]
, ["closetag", "parent"]
, ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }]
]
// swap the order of elements 2 and 1
, ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3))
, expected = [ex1, ex2]
xmls.forEach(function (x, i) {
t.test({ xml: x
, expect: expected[i]
, strict: true
, opt: { xmlns: true }
})
})
+59
View File
@@ -0,0 +1,59 @@
require(__dirname).test
( { xml :
"<root xmlns:x='x1' xmlns:y='y1' x:a='x1' y:a='y1'>"+
"<rebind xmlns:x='x2'>"+
"<check x:a='x2' y:a='y1'/>"+
"</rebind>"+
"<check x:a='x1' y:a='y1'/>"+
"</root>"
, expect :
[ [ "opennamespace", { prefix: "x", uri: "x1" } ]
, [ "opennamespace", { prefix: "y", uri: "y1" } ]
, [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
, [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ]
, [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
, [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
, [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" }
, "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" }
, "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
, "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
ns: { x: 'x1', y: 'y1' } } ]
, [ "opennamespace", { prefix: "x", uri: "x2" } ]
, [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ]
, [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind",
attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } },
ns: { x: 'x2' } } ]
, [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ]
, [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
, [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" }
, "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
ns: { x: 'x2' } } ]
, [ "closetag", "check" ]
, [ "closetag", "rebind" ]
, [ "closenamespace", { prefix: "x", uri: "x2" } ]
, [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ]
, [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ]
, [ "opentag", { name: "check", uri: "", prefix: "", local: "check",
attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" }
, "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } },
ns: { x: 'x1', y: 'y1' } } ]
, [ "closetag", "check" ]
, [ "closetag", "root" ]
, [ "closenamespace", { prefix: "x", uri: "x1" } ]
, [ "closenamespace", { prefix: "y", uri: "y1" } ]
]
, strict : true
, opt : { xmlns: true }
}
)
+71
View File
@@ -0,0 +1,71 @@
require(__dirname).test
( { xml :
"<root>"+
"<plain attr='normal'/>"+
"<ns1 xmlns='uri:default'>"+
"<plain attr='normal'/>"+
"</ns1>"+
"<ns2 xmlns:a='uri:nsa'>"+
"<plain attr='normal'/>"+
"<a:ns a:attr='namespaced'/>"+
"</ns2>"+
"</root>"
, expect :
[ [ "opentag", { name: "root", prefix: "", local: "root", uri: "",
attributes: {}, ns: {} } ]
, [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
, [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } },
ns: {} } ]
, [ "closetag", "plain" ]
, [ "opennamespace", { prefix: "", uri: "uri:default" } ]
, [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ]
, [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default",
attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } },
ns: { "": "uri:default" } } ]
, [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ]
, [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' },
attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ]
, [ "closetag", "plain" ]
, [ "closetag", "ns1" ]
, [ "closenamespace", { prefix: "", uri: "uri:default" } ]
, [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ]
, [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ]
, [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "",
attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } },
ns: { a: "uri:nsa" } } ]
, [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ]
, [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "",
attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } },
ns: { a: 'uri:nsa' } } ]
, [ "closetag", "plain" ]
, [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ]
, [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa",
attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } },
ns: { a: 'uri:nsa' } } ]
, [ "closetag", "a:ns" ]
, [ "closetag", "ns2" ]
, [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ]
, [ "closetag", "root" ]
]
, strict : true
, opt : { xmlns: true }
}
)
+15
View File
@@ -0,0 +1,15 @@
require(__dirname).test(
{ strict : true
, opt : { xmlns: true }
, expect :
[ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"]
, [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ]
, [ "opentag", { name: "root", uri: "", prefix: "", local: "root",
attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } },
ns: {} } ]
, [ "closetag", "root" ]
]
}
).write("<root unbound:attr='value'/>")
+35
View File
@@ -0,0 +1,35 @@
require(__dirname).test(
{ xml : "<root xml:lang='en'/>"
, expect :
[ [ "attribute"
, { name: "xml:lang"
, local: "lang"
, prefix: "xml"
, uri: "http://www.w3.org/XML/1998/namespace"
, value: "en"
}
]
, [ "opentag"
, { name: "root"
, uri: ""
, prefix: ""
, local: "root"
, attributes:
{ "xml:lang":
{ name: "xml:lang"
, local: "lang"
, prefix: "xml"
, uri: "http://www.w3.org/XML/1998/namespace"
, value: "en"
}
}
, ns: {}
}
]
, ["closetag", "root"]
]
, strict : true
, opt : { xmlns: true }
}
)
+20
View File
@@ -0,0 +1,20 @@
require(__dirname).test(
{ xml : "<xml:root/>"
, expect :
[
[ "opentag"
, { name: "xml:root"
, uri: "http://www.w3.org/XML/1998/namespace"
, prefix: "xml"
, local: "root"
, attributes: {}
, ns: {}
}
]
, ["closetag", "xml:root"]
]
, strict : true
, opt : { xmlns: true }
}
)
+40
View File
@@ -0,0 +1,40 @@
require(__dirname).test(
{ xml : "<xml:root xmlns:xml='ERROR'/>"
, expect :
[ ["error"
, "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n"
+ "Actual: ERROR\n"
+ "Line: 0\nColumn: 27\nChar: '"
]
, [ "attribute"
, { name: "xmlns:xml"
, local: "xml"
, prefix: "xmlns"
, uri: "http://www.w3.org/2000/xmlns/"
, value: "ERROR"
}
]
, [ "opentag"
, { name: "xml:root"
, uri: "http://www.w3.org/XML/1998/namespace"
, prefix: "xml"
, local: "root"
, attributes:
{ "xmlns:xml":
{ name: "xmlns:xml"
, local: "xml"
, prefix: "xmlns"
, uri: "http://www.w3.org/2000/xmlns/"
, value: "ERROR"
}
}
, ns: {}
}
]
, ["closetag", "xml:root"]
]
, strict : true
, opt : { xmlns: true }
}
)