12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- var path = require('path')
- var test = require('tape')
- var download = require('electron-download')
- var mkdirp = require('mkdirp')
- var rimraf = require('rimraf')
- var series = require('run-series')
- var compareVersion = require('compare-version')
- var extract = require('extract-zip')
- var config = require('./config')
- var ORIGINAL_CWD = process.cwd()
- var WORK_CWD = path.join(__dirname, 'work')
- var versions = config.versions
- var archs = ['x64']
- var platforms = ['darwin', 'mas']
- var slice = Array.prototype.slice
- var releases = []
- versions.forEach(function (version) {
- archs.forEach(function (arch) {
- platforms.forEach(function (platform) {
- // Only versions later than 0.34.0 offer mas builds
- if (platform !== 'mas' || compareVersion(version, '0.34.0') >= 0) {
- releases.push({
- arch: arch,
- platform: platform,
- version: version
- })
- }
- })
- })
- })
- exports.generateReleaseName = function getExtractName (release) {
- return 'v' + release.version + '-' + release.platform + '-' + release.arch
- }
- exports.generateAppPath = function getExtractName (release) {
- return path.join(exports.generateReleaseName(release), 'Electron.app')
- }
- exports.downloadElectrons = function downloadElectrons (callback) {
- series(releases.map(function (release) {
- return function (cb) {
- download(release, function (err, zipPath) {
- if (err) return callback(err)
- extract(zipPath, {dir: path.join(WORK_CWD, exports.generateReleaseName(release))}, cb)
- })
- }
- }), callback)
- }
- exports.setup = function setup () {
- test('setup', function (t) {
- mkdirp(WORK_CWD, function (err) {
- if (err) {
- t.end(err)
- } else {
- process.chdir(WORK_CWD)
- t.end()
- }
- })
- })
- }
- exports.teardown = function teardown () {
- test('teardown', function (t) {
- process.chdir(ORIGINAL_CWD)
- rimraf(WORK_CWD, function (err) {
- t.end(err)
- })
- })
- }
- exports.forEachRelease = function forEachRelease (cb) {
- releases.forEach(cb)
- }
- exports.testAllReleases = function testAllReleases (name, createTest /*, ...createTestArgs */) {
- var args = slice.call(arguments, 2)
- exports.setup()
- exports.forEachRelease(function (release) {
- test(name + ':' + exports.generateReleaseName(release),
- createTest.apply(null, [release].concat(args)))
- })
- exports.teardown()
- }
|