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
	
	 Vanessa Yuen
				Vanessa Yuen