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/
 | 
			
		||||
/dist/
 | 
			
		||||
/external_binaries/
 | 
			
		||||
/node_modules
 | 
			
		||||
node_modules
 | 
			
		||||
/out/
 | 
			
		||||
/vendor/.gclient
 | 
			
		||||
/vendor/debian_jessie_amd64-sysroot/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,8 +4,6 @@ const path = require('path')
 | 
			
		|||
const sinon = require('sinon')
 | 
			
		||||
const admZip = require('adm-zip')
 | 
			
		||||
const temp = require('temp')
 | 
			
		||||
// var pathExists = require('path-exists')
 | 
			
		||||
// var getHomePath = require('home-path')()
 | 
			
		||||
 | 
			
		||||
let sandbox
 | 
			
		||||
const mockEnv = {
 | 
			
		||||
| 
						 | 
				
			
			@ -22,7 +20,6 @@ temp.track()
 | 
			
		|||
tape('set up', (t) => {
 | 
			
		||||
  sandbox = sinon.sandbox.create()
 | 
			
		||||
  tempDir = temp.mkdirSync('electron-install')
 | 
			
		||||
  console.log(tempDir)
 | 
			
		||||
  t.end()
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,8 @@ const temp = require('temp'),
 | 
			
		|||
      childProcess = require('child_process'),
 | 
			
		||||
      GitHubApi = require('github'),
 | 
			
		||||
      request = require('request'),
 | 
			
		||||
      rootPackageJson = require('../package.json')
 | 
			
		||||
      rootPackageJson = require('../package.json'),
 | 
			
		||||
      assert = require('assert')
 | 
			
		||||
 | 
			
		||||
const github = new GitHubApi({
 | 
			
		||||
  // debug: true,
 | 
			
		||||
| 
						 | 
				
			
			@ -48,9 +49,9 @@ new Promise((resolve, reject) => {
 | 
			
		|||
      resolve(dirPath)
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
}).then((dirPath) => {
 | 
			
		||||
})
 | 
			
		||||
.then((dirPath) => {
 | 
			
		||||
  tempDir = dirPath
 | 
			
		||||
 | 
			
		||||
  // copy files from `/npm` to temp directory
 | 
			
		||||
  files.forEach((name) => {
 | 
			
		||||
    fs.writeFileSync(
 | 
			
		||||
| 
						 | 
				
			
			@ -72,22 +73,21 @@ new Promise((resolve, reject) => {
 | 
			
		|||
    owner: 'electron',
 | 
			
		||||
    repo: 'electron',
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
}).then((releases) => {
 | 
			
		||||
})
 | 
			
		||||
.then((releases) => {
 | 
			
		||||
  // download electron.d.ts from draft release
 | 
			
		||||
  const draftRelease = releases.data.find(
 | 
			
		||||
    // (release) => release.draft && release.tag_name === `v${rootPackageJson.version}`
 | 
			
		||||
    (release) => release.draft && release.tag_name === `test`
 | 
			
		||||
 | 
			
		||||
    (release) => release.draft && release.tag_name === `v${rootPackageJson.version}`
 | 
			
		||||
    // (release) => release.draft && release.tag_name === `test`
 | 
			
		||||
  )
 | 
			
		||||
  if (!draftRelease) {
 | 
			
		||||
    throw `cannot find release with tag v${rootPackageJson.version}`
 | 
			
		||||
  }
 | 
			
		||||
  return draftRelease.assets.find((asset) => asset.name === 'electron.d.ts')
 | 
			
		||||
 | 
			
		||||
}).then((tsdAsset) => {
 | 
			
		||||
})
 | 
			
		||||
.then((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) => {
 | 
			
		||||
    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}`))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue