Skip to content

Commit 039ac52

Browse files
committed
lib: explicit util.promisify() compat
1 parent d5a252e commit 039ac52

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
var stream = require('readable-stream');
55
var assert = require('assert');
66
var fs = require('fs');
7+
var util = require('util');
78

89
// node-pre-gyp magic
910
var nodePreGyp = require('node-pre-gyp');
@@ -421,6 +422,11 @@ exports.decompress = function(string, opt, on_finish) {
421422
return singleStringCoding(stream, string, on_finish);
422423
};
423424

425+
if (util.promisify) {
426+
exports.compress[util.promisify.custom] = exports.compress;
427+
exports.decompress[util.promisify.custom] = exports.decompress;
428+
}
429+
424430
exports.isXZ = function(buf) {
425431
return buf && buf.length >= 6 &&
426432
buf[0] === 0xfd &&

test/compat.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
var assert = require('assert');
44
var fs = require('fs');
5+
var util = require('util');
56
var helpers = require('./helpers.js');
67

78
var lzma = require('../');
@@ -140,3 +141,31 @@ describe('lzma.compress()/decompress() with ES6 Promises', function() {
140141
});
141142
});
142143
});
144+
145+
describe('lzma.compress()/decompress() with util.promisify()', function() {
146+
var majorVersion = process.version.match(/^v(\d+)\./);
147+
if (majorVersion && +majorVersion[1] < 8) {
148+
return;
149+
}
150+
151+
var compress = util.promisify(lzma.compress);
152+
var decompress = util.promisify(lzma.decompress);
153+
154+
it('can round-trip', function() {
155+
return compress('Bananas', 5).then(function(result) {
156+
assert.equal(result.toString('base64'), BananasCompressed);
157+
return decompress(result);
158+
}).then(function(result) {
159+
assert.ok(Buffer.isBuffer(result));
160+
assert.equal(result.toString(), 'Bananas');
161+
});
162+
});
163+
164+
it('fails for invalid input', function() {
165+
return decompress('ABC').then(function(result) {
166+
assert.ok(false); // never get here due to error
167+
}).catch(function(err) {
168+
assert.ok(err);
169+
});
170+
});
171+
});

0 commit comments

Comments
 (0)