diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fd30399..e3ac637 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -7,6 +7,8 @@ on: pull_request: branches: [ master ] + merge_group: + jobs: Job: name: Node.js @@ -14,3 +16,5 @@ jobs: with: os: 'ubuntu-latest, macos-latest, windows-latest' version: '18, 20, 22, 24' + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1c6cbb1..b8d6a72 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,8 +6,7 @@ on: jobs: release: - name: Node.js - uses: node-modules/github-actions/.github/workflows/node-release.yml@master + name: NPM + uses: node-modules/github-actions/.github/workflows/npm-release.yml@master secrets: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GIT_TOKEN: ${{ secrets.GIT_TOKEN }} diff --git a/.gitignore b/.gitignore index 5eaf2d1..12a7c04 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ test/fixtures/chinese-path-test.zip .DS_Store yarn.lock !test/fixtures/symlink/node_modules +pnpm-lock.yaml diff --git a/lib/zip/uncompress_stream.js b/lib/zip/uncompress_stream.js index a332179..eb6f195 100644 --- a/lib/zip/uncompress_stream.js +++ b/lib/zip/uncompress_stream.js @@ -2,6 +2,7 @@ // https://github.com/thejoshwolfe/yauzl#no-streaming-unzip-api +const debug = require('util').debuglog('compressing/zip/uncompress_stream'); const yauzl = require('@eggjs/yauzl'); const stream = require('stream'); const UncompressBaseStream = require('../base_write_stream'); @@ -38,12 +39,20 @@ class ZipUncompressStream extends UncompressBaseStream { if (this._zipFileNameEncoding === 'utf-8') { this._zipFileNameEncoding = 'utf8'; } + this._finalCallback = err => { + if (err) { + debug('finalCallback, error: %j', err); + return this.emit('error', err); + } + this.emit('finish'); + }; this[YAUZL_CALLBACK] = this[YAUZL_CALLBACK].bind(this); const sourceType = utils.sourceType(opts.source); const yauzlOpts = this._yauzlOpts = Object.assign({}, DEFAULTS, opts.yauzl); + debug('sourceType: %s, yauzlOpts: %j', sourceType, yauzlOpts); if (sourceType === 'file') { yauzl.open(opts.source, yauzlOpts, this[YAUZL_CALLBACK]); return; @@ -60,27 +69,26 @@ class ZipUncompressStream extends UncompressBaseStream { .catch(e => this.emit('error', e)); return; } - - this.on('pipe', srcStream => { - srcStream.unpipe(srcStream); - - utils.streamToBuffer(srcStream) - .then(buf => { - this._chunks.push(buf); - buf = Buffer.concat(this._chunks); - yauzl.fromBuffer(buf, yauzlOpts, this[YAUZL_CALLBACK]); - }) - .catch(e => this.emit('error', e)); - }); } - _write(chunk) { - // push to _chunks array, this will only happen once, for stream will be unpiped. + _write(chunk, _encoding, callback) { this._chunks.push(chunk); + debug('write size: %d, chunks: %d', chunk.length, this._chunks.length); + callback(); + } + + _final(callback) { + const buf = Buffer.concat(this._chunks); + debug('final, buf size: %d, chunks: %d', buf.length, this._chunks.length); + this._finalCallback = callback; + yauzl.fromBuffer(buf, this._yauzlOpts, this[YAUZL_CALLBACK]); } [YAUZL_CALLBACK](err, zipFile) { - if (err) return this.emit('error', err); + if (err) { + debug('yauzl error', err); + return this._finalCallback(err); + } zipFile.readEntry(); @@ -106,17 +114,22 @@ class ZipUncompressStream extends UncompressBaseStream { if (type === 'file') { zipFile.openReadStream(entry, (err, readStream) => { - if (err) return this.emit('error', err); + if (err) { + debug('file, error: %j', err); + return this._finalCallback(err); + } + debug('file, header: %j', header); this.emit('entry', header, readStream, next); }); } else { // directory const placeholder = new stream.Readable({ read() {} }); + debug('directory, header: %j', header); this.emit('entry', header, placeholder, next); setImmediate(() => placeholder.emit('end')); } }) - .on('end', () => this.emit('finish')) - .on('error', err => this.emit('error', err)); + .on('end', () => this._finalCallback()) + .on('error', err => this._finalCallback(err)); function next() { zipFile.readEntry(); diff --git a/test/gzip/file_stream.test.js b/test/gzip/file_stream.test.js index a7a18f3..287c945 100644 --- a/test/gzip/file_stream.test.js +++ b/test/gzip/file_stream.test.js @@ -11,7 +11,7 @@ describe('test/gzip/file_stream.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const gzipStream = new compressing.gzip.FileStream(); const destStream = fs.createWriteStream(destFile); pump(sourceStream, gzipStream, destStream, err => { @@ -24,7 +24,7 @@ describe('test/gzip/file_stream.test.js', () => { it('should compress according to file path', done => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const gzipStream = new compressing.gzip.FileStream({ source: sourceFile }); const destStream = fs.createWriteStream(destFile); pump(gzipStream, destStream, err => { @@ -44,14 +44,14 @@ describe('test/gzip/file_stream.test.js', () => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); await fs.promises.writeFile(destFile, Buffer.concat(gzipChunks)); - console.log(destFile); + // console.log(destFile); }); it('should compress buffer', done => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceBuffer = fs.readFileSync(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const destStream = fs.createWriteStream(destFile); const gzipStream = new compressing.gzip.FileStream({ source: sourceBuffer }); pump(gzipStream, destStream, err => { @@ -66,7 +66,7 @@ describe('test/gzip/file_stream.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const destStream = fs.createWriteStream(destFile); const gzipStream = new compressing.gzip.FileStream({ source: sourceStream }); pump(gzipStream, destStream, err => { diff --git a/test/gzip/index.test.js b/test/gzip/index.test.js index 75b1f78..6f146f9 100644 --- a/test/gzip/index.test.js +++ b/test/gzip/index.test.js @@ -13,7 +13,7 @@ describe('test/gzip/index.test.js', () => { it('gzip.compressFile(file, stream)', async () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.gzip.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -38,7 +38,7 @@ describe('test/gzip/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceBuffer = fs.readFileSync(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.gzip.compressFile(sourceBuffer, fileStream); assert(fs.existsSync(destFile)); @@ -48,7 +48,7 @@ describe('test/gzip/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.log.gz'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.gzip.compressFile(sourceStream, fileStream); assert(fs.existsSync(destFile)); diff --git a/test/tar/file_stream.test.js b/test/tar/file_stream.test.js index 18c4719..f4cb418 100644 --- a/test/tar/file_stream.test.js +++ b/test/tar/file_stream.test.js @@ -15,7 +15,7 @@ describe('test/tar/file_stream.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); @@ -34,7 +34,7 @@ describe('test/tar/file_stream.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(!msg); diff --git a/test/tar/index.test.js b/test/tar/index.test.js index b03eef6..990b611 100644 --- a/test/tar/index.test.js +++ b/test/tar/index.test.js @@ -16,7 +16,7 @@ describe('test/tar/index.test.js', () => { it('tar.compressFile(file, stream)', async () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tar.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -25,7 +25,7 @@ describe('test/tar/index.test.js', () => { it('tar.compressFile(file, stream, { relativePath })', async () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tar.compressFile(sourceFile, fileStream, { relativePath: 'dd/dd.log' }); assert(fs.existsSync(destFile)); @@ -35,7 +35,7 @@ describe('test/tar/index.test.js', () => { it('tar.compressFile(file, stream) should error if file not exist', async () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'not-exist.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); let err; try { @@ -65,7 +65,7 @@ describe('test/tar/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); mm(console, 'warn', msg => { assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); @@ -78,7 +78,7 @@ describe('test/tar/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('destFile', destFile); + // console.log('destFile', destFile); const fileStream = fs.createWriteStream(destFile); mm(console, 'warn', msg => { assert(!msg); @@ -91,7 +91,7 @@ describe('test/tar/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceBuffer = fs.readFileSync(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tar.compressFile(sourceBuffer, fileStream, { relativePath: 'xx.log' }); assert(fs.existsSync(destFile)); @@ -101,7 +101,7 @@ describe('test/tar/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures/xxx/bin'); const originStat = fs.statSync(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tar.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -111,7 +111,7 @@ describe('test/tar/index.test.js', () => { await compressing.tar.uncompress(destFile, destDir); const stat = fs.statSync(path.join(destDir, 'bin')); assert(stat.mode === originStat.mode); - console.log(destDir); + // console.log(destDir); }); }); @@ -120,7 +120,7 @@ describe('test/tar/index.test.js', () => { it('tar.compressDir(dir, destFile)', async () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tar.compressDir(sourceDir, destFile); assert(fs.existsSync(destFile)); }); @@ -129,7 +129,7 @@ describe('test/tar/index.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tar.compressDir(sourceDir, destStream); assert(fs.existsSync(destFile)); }); @@ -138,7 +138,7 @@ describe('test/tar/index.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tar.compressDir(sourceDir, destStream, { ignoreBase: true }); assert(fs.existsSync(destFile)); }); @@ -146,7 +146,7 @@ describe('test/tar/index.test.js', () => { it('tar.compressDir(dir, destStream) should return promise', async () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tar.compressDir(sourceDir, destFile); assert(fs.existsSync(destFile)); }); @@ -155,7 +155,7 @@ describe('test/tar/index.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); setImmediate(() => { destStream.emit('error', new Error('xxx')); }); diff --git a/test/tar/stream.test.js b/test/tar/stream.test.js index 9a50431..4d9fe63 100644 --- a/test/tar/stream.test.js +++ b/test/tar/stream.test.js @@ -17,13 +17,13 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(file)', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(path.join(__dirname, '..', 'fixtures', 'xx.log')); pump(tarStream, fileStream, err => { - console.log('error', err); + // console.log('error', err); assert(!err); assert(fs.existsSync(destFile)); done(); @@ -33,13 +33,13 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(file, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(path.join(__dirname, '..', 'fixtures', 'xx.log'), { relativePath: 'dd/dd.log' }); pump(tarStream, fileStream, err => { - console.log('error', err); + // console.log('error', err); assert(!err); assert(fs.existsSync(destFile)); done(); @@ -49,7 +49,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(dir)', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(path.join(__dirname, '..', 'fixtures')); @@ -65,7 +65,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(dir, { ignoreBase: true })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(path.join(__dirname, '..', 'fixtures'), { ignoreBase: true }); @@ -81,7 +81,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(dir, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(path.join(__dirname, '..', 'fixtures'), { relativePath: 'xxx' }); @@ -97,7 +97,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(dir, { relativePath, ignoreBase: true })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(path.join(__dirname, '..', 'fixtures'), { relativePath: 'xxx', ignoreBase: true }); @@ -113,7 +113,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(buffer, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); tarStream.addEntry(fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'xx.log')), { relativePath: 'xx.log' }); @@ -127,7 +127,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(stream, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); @@ -145,7 +145,7 @@ describe('test/tar/stream.test.js', () => { it('.addEntry(stream, { relativePath, size })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(!msg); @@ -166,7 +166,7 @@ describe('test/tar/stream.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tarStream = new TarStream(); diff --git a/test/tgz/file_stream.test.js b/test/tgz/file_stream.test.js index dd7d2d4..5fdbd1c 100644 --- a/test/tgz/file_stream.test.js +++ b/test/tgz/file_stream.test.js @@ -13,7 +13,7 @@ describe('test/tgz/file_stream.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); const tgzStream = new compressing.tgz.FileStream({ relativePath: 'dd/dd.log' }); pump(sourceStream, tgzStream, fileStream, err => { diff --git a/test/tgz/index.test.js b/test/tgz/index.test.js index f612366..74d01a2 100644 --- a/test/tgz/index.test.js +++ b/test/tgz/index.test.js @@ -13,7 +13,7 @@ describe('test/tgz/index.test.js', () => { it('tgz.compressFile(file, stream)', async () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tgz.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -22,7 +22,7 @@ describe('test/tgz/index.test.js', () => { it('tgz.compressFile(file, stream, { relativePath })', async () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tgz.compressFile(sourceFile, fileStream, { relativePath: 'dd/dd.log' }); assert(fs.existsSync(destFile)); @@ -61,7 +61,7 @@ describe('test/tgz/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures/xxx/bin'); const originStat = fs.statSync(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tar'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.tgz.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -72,7 +72,7 @@ describe('test/tgz/index.test.js', () => { const stat = fs.statSync(path.join(destDir, 'bin')); assert(stat.mode); assert(originStat.mode); - console.log(destDir); + // console.log(destDir); }); }); @@ -81,7 +81,7 @@ describe('test/tgz/index.test.js', () => { it('tgz.compressDir(dir, destFile)', async () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tgz.compressDir(sourceDir, destFile); assert(fs.existsSync(destFile)); }); @@ -90,7 +90,7 @@ describe('test/tgz/index.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tgz.compressDir(sourceDir, destStream); assert(fs.existsSync(destFile)); }); @@ -99,7 +99,7 @@ describe('test/tgz/index.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tgz.compressDir(sourceDir, destStream, { ignoreBase: true }); assert(fs.existsSync(destFile)); }); @@ -107,7 +107,7 @@ describe('test/tgz/index.test.js', () => { it('tgz.compressDir(dir, destStream) should return promise', async () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.tgz.compressDir(sourceDir, destFile); assert(fs.existsSync(destFile)); }); @@ -185,7 +185,7 @@ describe('test/tgz/index.test.js', () => { if (isWindows) { const names = fs.readdirSync(destDir); - console.log(names); + // console.log(names); assert.equal(names.length, 3); } else { const res = dircompare.compareSync(originalDir, destDir); diff --git a/test/tgz/stream.test.js b/test/tgz/stream.test.js index 9d703be..88cb3b3 100644 --- a/test/tgz/stream.test.js +++ b/test/tgz/stream.test.js @@ -17,13 +17,13 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(file)', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(path.join(__dirname, '..', 'fixtures', 'xx.log')); pump(tgzStream, fileStream, err => { - console.log('error', err); + // console.log('error', err); assert(!err); assert(fs.existsSync(destFile)); done(); @@ -33,13 +33,13 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(file, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(path.join(__dirname, '..', 'fixtures', 'xx.log'), { relativePath: 'dd/dd.log' }); pump(tgzStream, fileStream, err => { - console.log('error', err); + // console.log('error', err); assert(!err); assert(fs.existsSync(destFile)); done(); @@ -49,7 +49,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(dir)', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(path.join(__dirname, '..', 'fixtures')); @@ -65,7 +65,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(dir, { ignoreBase: true })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(path.join(__dirname, '..', 'fixtures'), { ignoreBase: true }); @@ -81,7 +81,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(dir, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(path.join(__dirname, '..', 'fixtures'), { relativePath: 'xxx' }); @@ -97,7 +97,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(dir, { relativePath, ignoreBase: true })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(path.join(__dirname, '..', 'fixtures'), { relativePath: 'xxx', ignoreBase: true }); @@ -113,7 +113,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(buffer, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); tgzStream.addEntry(fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'xx.log')), { relativePath: 'xx.log' }); @@ -127,7 +127,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(stream, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); @@ -145,7 +145,7 @@ describe('test/tgz/stream.test.js', () => { it('.addEntry(stream, { relativePath, size })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(!msg); @@ -166,7 +166,7 @@ describe('test/tgz/stream.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.tgz'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const tgzStream = new TgzStream(); diff --git a/test/zip/file_stream.test.js b/test/zip/file_stream.test.js index 7f195d7..9e0790d 100644 --- a/test/zip/file_stream.test.js +++ b/test/zip/file_stream.test.js @@ -13,7 +13,7 @@ describe.skip('test/zip/file_stream.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures', 'xx.log'); const sourceStream = fs.createReadStream(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); const zipStream = new compressing.zip.FileStream({ relativePath: 'dd/dd.log' }); pump(sourceStream, zipStream, fileStream, err => { diff --git a/test/zip/index.test.js b/test/zip/index.test.js index bbcb831..f969b39 100644 --- a/test/zip/index.test.js +++ b/test/zip/index.test.js @@ -26,7 +26,7 @@ describe('test/zip/index.test.js', () => { destDir = path.join(os.tmpdir(), uuid.v4()); fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.zip.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -37,7 +37,7 @@ describe('test/zip/index.test.js', () => { destDir = path.join(os.tmpdir(), uuid.v4()); fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); let err; try { @@ -70,7 +70,7 @@ describe('test/zip/index.test.js', () => { destDir = path.join(os.tmpdir(), uuid.v4()); fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.zip.compressFile(sourceBuffer, fileStream, { relativePath: 'dd/dd.log' }); assert(fs.existsSync(destFile)); @@ -82,7 +82,7 @@ describe('test/zip/index.test.js', () => { destDir = path.join(os.tmpdir(), uuid.v4()); fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.zip.compressFile(sourceStream, fileStream, { relativePath: 'dd/dd.log' }); assert(fs.existsSync(destFile)); @@ -95,7 +95,7 @@ describe('test/zip/index.test.js', () => { destDir = path.join(os.tmpdir(), uuid.v4()); fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.zip.compressDir(sourceDir, destFile); assert(fs.existsSync(destFile)); }); @@ -106,7 +106,7 @@ describe('test/zip/index.test.js', () => { fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.zip.compressDir(sourceDir, destStream); assert(fs.existsSync(destFile)); }); @@ -117,7 +117,7 @@ describe('test/zip/index.test.js', () => { fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); const destStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.zip.compressDir(sourceDir, destStream, { ignoreBase: true }); assert(fs.existsSync(destFile)); }); @@ -127,7 +127,7 @@ describe('test/zip/index.test.js', () => { destDir = path.join(os.tmpdir(), uuid.v4()); fs.mkdirSync(destDir, { recursive: true }); const destFile = path.join(destDir, uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); await compressing.zip.compressDir(sourceDir, destFile); assert(fs.existsSync(destFile)); }); @@ -279,7 +279,7 @@ describe('test/zip/index.test.js', () => { const sourceFile = path.join(__dirname, '..', 'fixtures/xxx/bin'); const originStat = fs.statSync(sourceFile); const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); - console.log('dest', destFile); + // console.log('dest', destFile); const fileStream = fs.createWriteStream(destFile); await compressing.zip.compressFile(sourceFile, fileStream); assert(fs.existsSync(destFile)); @@ -289,6 +289,6 @@ describe('test/zip/index.test.js', () => { await compressing.zip.uncompress(destFile, destDir); const stat = fs.statSync(path.join(destDir, 'bin')); assert(stat.mode === originStat.mode); - console.log(destDir); + // console.log(destDir); }); }); diff --git a/test/zip/stream.test.js b/test/zip/stream.test.js index b5370f4..fbce10c 100644 --- a/test/zip/stream.test.js +++ b/test/zip/stream.test.js @@ -16,13 +16,13 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(file)', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(path.join(__dirname, '..', 'fixtures', 'xx.log')); pump(zipStream, fileStream, err => { - console.log('error', err); + // console.log('error', err); assert(!err); assert(fs.existsSync(destFile)); done(); @@ -32,13 +32,13 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(file, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(path.join(__dirname, '..', 'fixtures', 'xx.log'), { relativePath: 'dd/dd.log' }); pump(zipStream, fileStream, err => { - console.log('error', err); + // console.log('error', err); assert(!err); assert(fs.existsSync(destFile)); done(); @@ -48,7 +48,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(dir)', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(path.join(__dirname, '..', 'fixtures')); @@ -64,7 +64,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(dir, { ignoreBase: true })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(path.join(__dirname, '..', 'fixtures'), { ignoreBase: true }); @@ -80,7 +80,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(dir, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(path.join(__dirname, '..', 'fixtures'), { relativePath: 'xxx' }); @@ -96,7 +96,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(dir, { relativePath, ignoreBase: true })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(path.join(__dirname, '..', 'fixtures'), { relativePath: 'xxx', ignoreBase: true }); @@ -112,7 +112,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(buffer, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); zipStream.addEntry(fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'xx.log')), { relativePath: 'xx.log' }); @@ -126,7 +126,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(stream, { relativePath })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(msg === 'You should specify the size of streamming data by opts.size to prevent all streaming data from loading into memory. If you are sure about memory cost, pass opts.suppressSizeWarning: true to suppress this warning'); @@ -144,7 +144,7 @@ describe('test/zip/stream.test.js', () => { it('.addEntry(stream, { relativePath, size })', done => { const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); mm(console, 'warn', msg => { assert(!msg); @@ -165,7 +165,7 @@ describe('test/zip/stream.test.js', () => { const sourceDir = path.join(__dirname, '..', 'fixtures'); const destFile = path.join(os.tmpdir(), uuid.v4() + '.zip'); const fileStream = fs.createWriteStream(destFile); - console.log('dest', destFile); + // console.log('dest', destFile); const zipStream = new ZipStream(); diff --git a/test/zip/uncompress_stream.test.js b/test/zip/uncompress_stream.test.js index 4242e8c..cb2272a 100644 --- a/test/zip/uncompress_stream.test.js +++ b/test/zip/uncompress_stream.test.js @@ -21,6 +21,7 @@ describe('test/zip/uncompress_stream.test.js', () => { const uncompressStream = new compressing.zip.UncompressStream(); fs.mkdirSync(destDir, { recursive: true }); + pump(sourceStream, uncompressStream, err => { assert(!err); const res = dircompare.compareSync(originalDir, path.join(destDir, 'xxx')); @@ -46,6 +47,14 @@ describe('test/zip/uncompress_stream.test.js', () => { }); }); + it('should throw error when file format is not zip', async () => { + const sourceFile = path.join(__dirname, '..', 'fixtures', 'xxx.tgz'); + const uncompressStream = new compressing.zip.UncompressStream(); + await assert.rejects(async () => { + await pipelinePromise(fs.createReadStream(sourceFile), uncompressStream); + }, /end of central directory record signature not found/); + }); + it('should uncompress according to file path', done => { const destDir = path.join(os.tmpdir(), uuid.v4());