UNPKG

cross-unzip

Version:

Cross-platform 'native' unzip in Node.js

67 lines (58 loc) 1.38 kB
'use strict' let { zip, unzip } = require('../') let test = require('ava') let fs = require('fs-extra-promise') let { join, basename } = require('path') let src = __dirname let pack = join(__dirname, '归档.zip') let pack_tmp = join(__dirname, '归档.zip.tmp') let dest = join(__dirname, '归档_dest') test.serial('module exports', t => { t.is(typeof unzip, 'function') t.is(typeof unzip.zip, 'function') t.is(unzip.unzip, unzip) }) test.serial('zip compress', async t => { // compress await t2p(cb => { zip(src, pack, cb) }) // verify let exists = await fs.existsAsync(pack) t.true(exists) }) test.serial('zip decompress', async t => { // decompress await t2p(cb => { unzip(pack, dest, cb) }) // verify let files = await fs.readdirAsync(dest) let expected = [basename(src)] t.deepEqual(files, expected) }) test.after('cleanup', async t => { await remove(dest) await remove(pack) await remove(pack_tmp) }) // util: remove file if exists async function remove (file) { if (await fs.existsAsync(file)) { await fs.removeAsync(file) } } // util: delay some duration function delay (duration) { return new Promise(rs => { setTimeout(rs, duration) }) } // util: thunk to promise function t2p (thunk) { return new Promise((rs, rj) => { thunk((err, ...args) => { err ? rj(err) : rs(args) }) }) }