mirror of
https://github.com/S2-/gitlit
synced 2025-08-04 13:10:09 +02:00
118 lines
3.6 KiB
JavaScript
118 lines
3.6 KiB
JavaScript
'use strict'
|
|
|
|
// Keeping this module because it handles non-buffers gracefully
|
|
const bufferEqual = require('buffer-equal')
|
|
const common = require('../common')
|
|
const config = require('./config.json')
|
|
const fs = require('fs-extra')
|
|
const packager = require('../index')
|
|
const path = require('path')
|
|
const setup = require('./_setup')
|
|
const tempy = require('tempy')
|
|
const test = require('ava')
|
|
|
|
const ORIGINAL_CWD = process.cwd()
|
|
|
|
test.before(t => {
|
|
if (!process.env.CI) {
|
|
return setup.setupTestsuite()
|
|
.then(() => process.chdir(setup.WORK_CWD))
|
|
}
|
|
return Promise.resolve(process.chdir(setup.WORK_CWD))
|
|
})
|
|
|
|
test.after.always(t => {
|
|
process.chdir(ORIGINAL_CWD)
|
|
return fs.remove(setup.WORK_CWD)
|
|
})
|
|
|
|
test.beforeEach(t => {
|
|
t.context.workDir = tempy.directory()
|
|
t.context.tempDir = tempy.directory()
|
|
})
|
|
|
|
test.afterEach.always(t => {
|
|
return fs.remove(t.context.workDir)
|
|
.then(() => fs.remove(t.context.tempDir))
|
|
})
|
|
|
|
function testSinglePlatform (name, testFunction, testFunctionArgs, parallel) {
|
|
module.exports.packagerTest(name, (t, opts) => {
|
|
Object.assign(opts, module.exports.singlePlatformOptions())
|
|
return testFunction.apply(null, [t, opts].concat(testFunctionArgs))
|
|
}, parallel)
|
|
}
|
|
|
|
module.exports = {
|
|
allPlatformArchCombosCount: 9,
|
|
areFilesEqual: function areFilesEqual (file1, file2) {
|
|
let buffer1, buffer2
|
|
|
|
return fs.readFile(file1)
|
|
.then((data) => {
|
|
buffer1 = data
|
|
return fs.readFile(file2)
|
|
}).then((data) => {
|
|
buffer2 = data
|
|
return bufferEqual(buffer1, buffer2)
|
|
})
|
|
},
|
|
fixtureSubdir: setup.fixtureSubdir,
|
|
generateResourcesPath: function generateResourcesPath (opts) {
|
|
return common.isPlatformMac(opts.platform)
|
|
? path.join(opts.name + '.app', 'Contents', 'Resources')
|
|
: 'resources'
|
|
},
|
|
invalidOptionTest: function invalidOptionTest (opts) {
|
|
return t => t.throws(packager(opts))
|
|
},
|
|
packageAndEnsureResourcesPath: function packageAndEnsureResourcesPath (t, opts) {
|
|
let resourcesPath
|
|
|
|
return packager(opts)
|
|
.then(paths => {
|
|
resourcesPath = path.join(paths[0], module.exports.generateResourcesPath(opts))
|
|
return fs.stat(resourcesPath)
|
|
}).then(stats => {
|
|
t.true(stats.isDirectory(), 'The output directory should contain the expected resources subdirectory')
|
|
return resourcesPath
|
|
})
|
|
},
|
|
packagerTest: function packagerTest (name, testFunction, parallel) {
|
|
const testDefinition = parallel ? test : test.serial
|
|
testDefinition(name, t => {
|
|
return testFunction(t, {
|
|
name: 'packagerTest',
|
|
out: t.context.workDir,
|
|
tmpdir: t.context.tempDir
|
|
})
|
|
})
|
|
},
|
|
singlePlatformOptions: function singlePlatformOptions () {
|
|
return {
|
|
platform: 'linux',
|
|
arch: 'x64',
|
|
electronVersion: config.version
|
|
}
|
|
},
|
|
// Rest parameters are added (not behind a feature flag) in Node 6
|
|
testSinglePlatform: function (name, testFunction /*, ...testFunctionArgs */) {
|
|
const testFunctionArgs = Array.prototype.slice.call(arguments, 2)
|
|
return testSinglePlatform(name, testFunction, testFunctionArgs, false)
|
|
},
|
|
// Rest parameters are added (not behind a feature flag) in Node 6
|
|
testSinglePlatformParallel: function (name, testFunction /*, ...testFunctionArgs */) {
|
|
const testFunctionArgs = Array.prototype.slice.call(arguments, 2)
|
|
return testSinglePlatform(name, testFunction, testFunctionArgs, true)
|
|
},
|
|
verifyPackageExistence: function verifyPackageExistence (finalPaths) {
|
|
return Promise.all(finalPaths.map((finalPath) => {
|
|
return fs.stat(finalPath)
|
|
.then(
|
|
stats => stats.isDirectory(),
|
|
() => false
|
|
)
|
|
}))
|
|
}
|
|
}
|