Merge pull request #2161 from resin-io/local-test-blobs

test(image-stream): Use local dir instead of tmpdir
This commit is contained in:
Jonas Hermsmeier 2018-03-30 00:02:52 +02:00 committed by GitHub
commit 8bb20de912
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 29 deletions

3
.gitignore vendored
View File

@ -11,6 +11,9 @@ pids
# Directory for instrumented libs generated by jscoverage/JSCover
/lib-cov
# Image stream output directory
/tests/image-stream/output
# Coverage directory used by tools like istanbul
/coverage

View File

@ -20,7 +20,6 @@ const m = require('mochainon')
const _ = require('lodash')
const Bluebird = require('bluebird')
const fs = Bluebird.promisifyAll(require('fs'))
const os = require('os')
const path = require('path')
const imageStream = require('../../lib/sdk/image-stream/index')
@ -51,35 +50,41 @@ exports.expectError = function (file, errorMessage, errorDetail) {
exports.extractFromFilePath = function (file, image) {
it('should be able to extract the image', function () {
const output = path.join(os.tmpdir(), path.basename(file))
const dirname = path.join(__dirname, 'output')
const output = path.join(dirname, path.basename(file))
return imageStream.getFromFilePath(file).then(function (results) {
m.chai.expect(results.path).to.equal(file)
m.chai.expect(_.isString(results.extension)).to.be.true
m.chai.expect(_.isEmpty(_.trim(results.extension))).to.be.false
if (!_.some([
results.size.original === fs.statSync(file).size,
results.size.original === fs.statSync(image).size
])) {
throw new Error(`Invalid size: ${results.size.original}`)
}
const stream = results.stream
.pipe(results.transform)
.pipe(fs.createWriteStream(output))
return new Bluebird((resolve, reject) => {
stream.on('error', reject)
stream.on('close', resolve)
return fs.mkdirAsync(dirname)
.catch({ code: 'EEXIST' }, _.noop)
.then(function () {
return imageStream.getFromFilePath(file)
})
.then(function (results) {
m.chai.expect(results.path).to.equal(file)
m.chai.expect(_.isString(results.extension)).to.be.true
m.chai.expect(_.isEmpty(_.trim(results.extension))).to.be.false
if (!_.some([
results.size.original === fs.statSync(file).size,
results.size.original === fs.statSync(image).size
])) {
throw new Error(`Invalid size: ${results.size.original}`)
}
const stream = results.stream
.pipe(results.transform)
.pipe(fs.createWriteStream(output))
return new Bluebird((resolve, reject) => {
stream.on('error', reject)
stream.on('close', resolve)
})
}).then(function () {
return doFilesContainTheSameData(image, output)
}).then(function (areEqual) {
m.chai.expect(areEqual).to.be.true
}).finally(function () {
return fs.unlinkAsync(output)
.catch({ code: 'ENOENT' }, _.noop)
})
}).then(function () {
return doFilesContainTheSameData(image, output)
}).then(function (areEqual) {
m.chai.expect(areEqual).to.be.true
}).finally(function () {
return fs.unlinkAsync(output)
.catch({ code: 'ENOENT' }, _.noop)
})
})
}