Skip to content

Commit 6315b51

Browse files
committed
Fix tests for node 11
1 parent aca62b9 commit 6315b51

File tree

6 files changed

+94
-63
lines changed

6 files changed

+94
-63
lines changed

.editorconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
root = true
2+
3+
[*]
4+
end_of_line = lf
5+
insert_final_newline = true
6+
indent_style = space
7+
indent_size = 2

.gitlab-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
variables:
32
DOCKER_DRIVER: overlay2
43

@@ -11,13 +10,13 @@ stages:
1110
artifacts:
1211
paths:
1312
- build/stage/marudor/libxmljs/releases/download
14-
only: [tags]
1513

1614
.glibc: &glibc
1715
<<: *baseBuild
1816
script:
1917
- npm install -g node-gyp node-pre-gyp
2018
- npm install --unsafe-perm --build-from-source
19+
- npm run test
2120
- node-pre-gyp package 2>&1
2221

2322
.muslc: &muslc
@@ -27,6 +26,7 @@ stages:
2726
- apk add python g++ make git
2827
- npm install --unsafe-perm -g node-gyp node-pre-gyp
2928
- npm install --unsafe-perm --build-from-source
29+
- npm run test
3030
- node-pre-gyp package 2>&1
3131

3232
node-11:

.prettierrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"singleQuote": true,
3+
"tabWidth": 2,
4+
"printWidth": 120,
5+
"semi": true,
6+
"trailingComma": "es5"
7+
}

package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"devDependencies": {
3939
"github-release-cli": "^1.0.1",
4040
"nodeunit": "~0.11.2",
41+
"prettier": "^1.16.4",
4142
"semver": "~5.5.0"
4243
}
4344
}

test/memory_management.js

Lines changed: 71 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,108 +2,118 @@ var libxml = require('../index');
22
var semver = require('semver');
33

44
if (!global.gc) {
5-
throw new Error('must run with --expose_gc for memory management tests');
5+
throw new Error('must run with --expose_gc for memory management tests');
66
}
77

8-
var nodeVersion = process.versions.node
9-
var shouldSkip = semver.satisfies(nodeVersion, '8.x || 9.x || 10.x')
8+
var nodeVersion = process.versions.node;
9+
var shouldSkip = semver.satisfies(nodeVersion, '8.x || 9.x || 10.x');
1010

1111
module.exports.setUp = function(done) {
12-
collectGarbage();
13-
done();
12+
collectGarbage();
13+
done();
1414
};
1515

1616
module.exports.inaccessible_document_freed = function(assert) {
17-
var xml_memory_before_document = libxml.memoryUsage();
18-
for (var i=0; i<10; i++) {
19-
makeDocument();
20-
}
17+
var xml_memory_before_document = libxml.memoryUsage();
18+
for (var i = 0; i < 10; i++) {
19+
makeDocument();
20+
}
21+
process.nextTick(() => {
2122
collectGarbage();
2223
assert.ok(libxml.memoryUsage() <= xml_memory_before_document);
2324
assert.done();
25+
});
2426
};
2527

2628
module.exports.inaccessible_document_freed_when_node_freed = function(assert) {
27-
if (shouldSkip) {
28-
assert.done();
29-
console.warn('skipping inaccessible_document_freed_when_node_freed');
30-
return;
31-
}
32-
33-
var xml_memory_before_document = libxml.memoryUsage();
34-
var nodes = [];
35-
for (var i=0; i<10; i++) {
36-
nodes.push(makeDocument().get('//center'));
37-
}
38-
nodes = null;
29+
if (shouldSkip) {
30+
assert.done();
31+
console.warn('skipping inaccessible_document_freed_when_node_freed');
32+
return;
33+
}
34+
35+
var xml_memory_before_document = libxml.memoryUsage();
36+
var nodes = [];
37+
for (var i = 0; i < 10; i++) {
38+
nodes.push(makeDocument().get('//center'));
39+
}
40+
nodes = null;
41+
process.nextTick(() => {
3942
collectGarbage();
4043
assert.ok(libxml.memoryUsage() <= xml_memory_before_document);
4144
assert.done();
45+
});
4246
};
4347

4448
module.exports.inaccessible_document_freed_after_middle_nodes_proxied = function(assert) {
45-
var xml_memory_before_document = libxml.memoryUsage();
46-
var doc = makeDocument();
47-
var middle = doc.get('//middle');
48-
var inner = doc.get('//inner');
49-
inner.remove(); // v0.14.3, v0.15: proxy ref'd parent but can't unref when destroyed
50-
doc = middle = inner = null;
49+
var xml_memory_before_document = libxml.memoryUsage();
50+
var doc = makeDocument();
51+
var middle = doc.get('//middle');
52+
var inner = doc.get('//inner');
53+
inner.remove(); // v0.14.3, v0.15: proxy ref'd parent but can't unref when destroyed
54+
doc = middle = inner = null;
55+
process.nextTick(() => {
5156
collectGarbage();
5257
assert.ok(libxml.memoryUsage() <= xml_memory_before_document);
5358
assert.done();
59+
});
5460
};
5561

5662
module.exports.inaccessible_tree_freed = function(assert) {
57-
if (shouldSkip) {
58-
assert.done();
59-
console.warn('skipping inaccessible_tree_freed');
60-
return;
61-
}
62-
63-
var doc = makeDocument();
64-
var xml_memory_after_document = libxml.memoryUsage();
65-
doc.get('//middle').remove();;
63+
if (shouldSkip) {
64+
assert.done();
65+
console.warn('skipping inaccessible_tree_freed');
66+
return;
67+
}
68+
69+
var doc = makeDocument();
70+
var xml_memory_after_document = libxml.memoryUsage();
71+
doc.get('//middle').remove();
72+
process.nextTick(() => {
6673
collectGarbage();
67-
assert.ok(libxml.memoryUsage() < xml_memory_after_document);
74+
assert.ok(libxml.memoryUsage() <= xml_memory_after_document);
6875
assert.done();
76+
});
6977
};
7078

7179
module.exports.namespace_list_freed = function(assert) {
72-
var doc = makeDocument();
73-
var el = doc.get('//center');
74-
el.namespace("bar", null);
75-
var xmlMemBefore = libxml.memoryUsage();
76-
for (var i; i<1000; i++) {
77-
el.namespaces()
78-
}
80+
var doc = makeDocument();
81+
var el = doc.get('//center');
82+
el.namespace('bar', null);
83+
var xmlMemBefore = libxml.memoryUsage();
84+
for (var i; i < 1000; i++) {
85+
el.namespaces();
86+
}
87+
process.nextTick(() => {
7988
collectGarbage();
8089
assert.ok(libxml.memoryUsage() <= xmlMemBefore);
8190
assert.done();
91+
});
8292
};
8393

8494
function makeDocument() {
85-
var body = "<?xml version='1.0' encoding='UTF-8'?>\n" +
86-
"<root><outer><middle><inner><center/></inner></middle></outer></root>";
87-
return libxml.parseXml(body);
95+
var body =
96+
"<?xml version='1.0' encoding='UTF-8'?>\n" +
97+
'<root><outer><middle><inner><center/></inner></middle></outer></root>';
98+
return libxml.parseXml(body);
8899
}
89100

90101
function collectGarbage(minCycles, maxCycles) {
91-
minCycles = minCycles || 3;
92-
maxCycles = maxCycles || 10;
102+
minCycles = minCycles || 3;
103+
maxCycles = maxCycles || 10;
93104

94-
var cycles = 0;
95-
var freedRss = 0;
96-
var usage = process.memoryUsage();
97-
do {
98-
global.gc();
105+
var cycles = 0;
106+
var freedRss = 0;
107+
var usage = process.memoryUsage();
108+
do {
109+
global.gc();
99110

100-
var usageAfterGc = process.memoryUsage();
101-
freedRss = usage.rss - usageAfterGc.rss;
102-
usage = usageAfterGc;
111+
var usageAfterGc = process.memoryUsage();
112+
freedRss = usage.rss - usageAfterGc.rss;
113+
usage = usageAfterGc;
103114

104-
cycles++;
105-
}
106-
while ((cycles < minCycles) || ((freedRss !== 0) && (cycles < maxCycles)));
115+
cycles++;
116+
} while (cycles < minCycles || (freedRss !== 0 && cycles < maxCycles));
107117

108-
return usage;
118+
return usage;
109119
}

0 commit comments

Comments
 (0)