123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- '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
- )
- }))
- }
- }
|