mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2024-12-23 10:38:55 +00:00
a360f6c2ee
This implements the following cases: * Basic runs for a specific version/platform/arch with default options (testing for existence of expected output files/folders) * Runs for each target platform with `out` set * Runs for each target platform with `asar` set * Runs for each target platform with `prune` set * Runs for each target platform with `ignore` set * This includes testing `ignore` including a path separator * This also includes testing that `ignore` entries are applied with the app folder trimmed * Runs for each target platform with `overwrite` set / not set * Runs with `all` set, with `arch` or `platform` each set to `all`, and with `platform` set to multiple platforms (comma-delimited or array) * Tests specifically for the darwin target platform, to test `icon` and `sign` The test logic is organized such that the version of Electron being tested can be configured once centrally (in config.json), and the tests will not run until after downloading any necessary electron versions (to avoid timing out due to long downloads). Resolves #77.
95 lines
2.5 KiB
JavaScript
95 lines
2.5 KiB
JavaScript
var exec = require('child_process').exec
|
|
var fs = require('fs')
|
|
var path = require('path')
|
|
|
|
var packager = require('..')
|
|
var test = require('tape')
|
|
var waterfall = require('run-waterfall')
|
|
|
|
var config = require('./config.json')
|
|
var util = require('./util')
|
|
|
|
function createIconTest (icon, iconPath) {
|
|
return function (t) {
|
|
t.timeoutAfter(config.timeout)
|
|
|
|
var opts = {
|
|
name: 'basicTest',
|
|
dir: path.join(__dirname, 'fixtures', 'basic'),
|
|
version: config.version,
|
|
arch: 'x64',
|
|
platform: 'darwin',
|
|
icon: icon
|
|
}
|
|
|
|
var resourcesPath
|
|
|
|
waterfall([
|
|
function (cb) {
|
|
packager(opts, cb)
|
|
}, function (paths, cb) {
|
|
resourcesPath = path.join(paths[0], util.generateResourcesPath(opts))
|
|
fs.stat(resourcesPath, cb)
|
|
}, function (stats, cb) {
|
|
t.true(stats.isDirectory(), 'The output directory should contain the expected resources subdirectory')
|
|
util.areFilesEqual(iconPath, path.join(resourcesPath, 'atom.icns'), cb)
|
|
}, function (equal, cb) {
|
|
t.true(equal, 'atom.icns should be identical to the specified icon file')
|
|
cb()
|
|
}
|
|
], function (err) {
|
|
t.end(err)
|
|
})
|
|
}
|
|
}
|
|
|
|
var iconBase = path.join(__dirname, 'fixtures', 'monochrome')
|
|
var icnsPath = iconBase + '.icns'
|
|
util.setup()
|
|
test('icon test: .icns specified', createIconTest(icnsPath, icnsPath))
|
|
util.teardown()
|
|
|
|
util.setup()
|
|
test('icon test: .ico specified (should replace with .icns)', createIconTest(iconBase + '.ico', icnsPath))
|
|
util.teardown()
|
|
|
|
util.setup()
|
|
test('icon test: basename only (should add .icns)', createIconTest(iconBase, icnsPath))
|
|
util.teardown()
|
|
|
|
util.setup()
|
|
test('codesign test', function (t) {
|
|
t.timeoutAfter(config.timeout)
|
|
|
|
var opts = {
|
|
name: 'basicTest',
|
|
dir: path.join(__dirname, 'fixtures', 'basic'),
|
|
version: config.version,
|
|
arch: 'x64',
|
|
platform: 'darwin',
|
|
sign: '-' // Ad-hoc
|
|
}
|
|
|
|
var appPath
|
|
|
|
waterfall([
|
|
function (cb) {
|
|
packager(opts, cb)
|
|
}, function (paths, cb) {
|
|
appPath = path.join(paths[0], opts.name + '.app')
|
|
fs.stat(appPath, cb)
|
|
}, function (stats, cb) {
|
|
t.true(stats.isDirectory(), 'The expected .app directory should exist')
|
|
exec('codesign --verify --deep ' + appPath, cb)
|
|
}, function (stdout, stderr, cb) {
|
|
t.pass('codesign should verify successfully')
|
|
cb()
|
|
}
|
|
], function (err) {
|
|
var notFound = err && err.code === 127
|
|
if (notFound) console.log('codesign not installed; skipped')
|
|
t.end(notFound ? null : err)
|
|
})
|
|
})
|
|
util.teardown()
|