add final "integration test" before running npm publish on the prebuilt
This commit is contained in:
parent
cb93f035aa
commit
eaa63c880e
3 changed files with 30 additions and 16 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -25,7 +25,7 @@
|
||||||
/build/
|
/build/
|
||||||
/dist/
|
/dist/
|
||||||
/external_binaries/
|
/external_binaries/
|
||||||
/node_modules
|
node_modules
|
||||||
/out/
|
/out/
|
||||||
/vendor/.gclient
|
/vendor/.gclient
|
||||||
/vendor/debian_jessie_amd64-sysroot/
|
/vendor/debian_jessie_amd64-sysroot/
|
||||||
|
|
|
@ -4,8 +4,6 @@ const path = require('path')
|
||||||
const sinon = require('sinon')
|
const sinon = require('sinon')
|
||||||
const admZip = require('adm-zip')
|
const admZip = require('adm-zip')
|
||||||
const temp = require('temp')
|
const temp = require('temp')
|
||||||
// var pathExists = require('path-exists')
|
|
||||||
// var getHomePath = require('home-path')()
|
|
||||||
|
|
||||||
let sandbox
|
let sandbox
|
||||||
const mockEnv = {
|
const mockEnv = {
|
||||||
|
@ -22,7 +20,6 @@ temp.track()
|
||||||
tape('set up', (t) => {
|
tape('set up', (t) => {
|
||||||
sandbox = sinon.sandbox.create()
|
sandbox = sinon.sandbox.create()
|
||||||
tempDir = temp.mkdirSync('electron-install')
|
tempDir = temp.mkdirSync('electron-install')
|
||||||
console.log(tempDir)
|
|
||||||
t.end()
|
t.end()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,8 @@ const temp = require('temp'),
|
||||||
childProcess = require('child_process'),
|
childProcess = require('child_process'),
|
||||||
GitHubApi = require('github'),
|
GitHubApi = require('github'),
|
||||||
request = require('request'),
|
request = require('request'),
|
||||||
rootPackageJson = require('../package.json')
|
rootPackageJson = require('../package.json'),
|
||||||
|
assert = require('assert')
|
||||||
|
|
||||||
const github = new GitHubApi({
|
const github = new GitHubApi({
|
||||||
// debug: true,
|
// debug: true,
|
||||||
|
@ -48,9 +49,9 @@ new Promise((resolve, reject) => {
|
||||||
resolve(dirPath)
|
resolve(dirPath)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}).then((dirPath) => {
|
})
|
||||||
|
.then((dirPath) => {
|
||||||
tempDir = dirPath
|
tempDir = dirPath
|
||||||
|
|
||||||
// copy files from `/npm` to temp directory
|
// copy files from `/npm` to temp directory
|
||||||
files.forEach((name) => {
|
files.forEach((name) => {
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
|
@ -72,22 +73,21 @@ new Promise((resolve, reject) => {
|
||||||
owner: 'electron',
|
owner: 'electron',
|
||||||
repo: 'electron',
|
repo: 'electron',
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}).then((releases) => {
|
.then((releases) => {
|
||||||
// download electron.d.ts from draft release
|
// download electron.d.ts from draft release
|
||||||
const draftRelease = releases.data.find(
|
const draftRelease = releases.data.find(
|
||||||
// (release) => release.draft && release.tag_name === `v${rootPackageJson.version}`
|
(release) => release.draft && release.tag_name === `v${rootPackageJson.version}`
|
||||||
(release) => release.draft && release.tag_name === `test`
|
// (release) => release.draft && release.tag_name === `test`
|
||||||
|
|
||||||
)
|
)
|
||||||
if (!draftRelease) {
|
if (!draftRelease) {
|
||||||
throw `cannot find release with tag v${rootPackageJson.version}`
|
throw `cannot find release with tag v${rootPackageJson.version}`
|
||||||
}
|
}
|
||||||
return draftRelease.assets.find((asset) => asset.name === 'electron.d.ts')
|
return draftRelease.assets.find((asset) => asset.name === 'electron.d.ts')
|
||||||
|
})
|
||||||
}).then((tsdAsset) => {
|
.then((tsdAsset) => {
|
||||||
if (!tsdAsset) {
|
if (!tsdAsset) {
|
||||||
throw 'cannot find electron.d.ts from draft release assets'
|
throw `cannot find electron.d.ts from v${rootPackageJson.version} draft release assets`
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
request.get({
|
request.get({
|
||||||
|
@ -107,5 +107,22 @@ new Promise((resolve, reject) => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then(() => childProcess.execSync('npm publish', { cwd: tempDir }))
|
.then(() => childProcess.execSync('npm pack', { cwd: tempDir }))
|
||||||
|
.then(() => {
|
||||||
|
// test that the package can install electron prebuilt from /dist
|
||||||
|
const distDir = path.join(__dirname, '..', 'dist')
|
||||||
|
const tarballPath = path.join(tempDir, `electron-${rootPackageJson.version}.tgz`)
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
childProcess.execSync(`npm install ${tarballPath} --force --silent`, {
|
||||||
|
env: Object.assign({}, process.env, { electron_config_cache: distDir }),
|
||||||
|
cwd: tempDir,
|
||||||
|
})
|
||||||
|
const checkVersion = childProcess.exec(`${path.join(tempDir, 'node_modules', '.bin', 'electron')} -v`)
|
||||||
|
checkVersion.stdout.on('data', (data) => {
|
||||||
|
assert.strictEqual(data.trim(), `v${rootPackageJson.version}`)
|
||||||
|
resolve(tarballPath)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then((tarballPath) => childProcess.execSync(`npm publish ${tarballPath}`))
|
||||||
.catch((err) => console.error(`Error: ${err}`))
|
.catch((err) => console.error(`Error: ${err}`))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue