You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					54 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					54 lines
				
				1.5 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | module.exports = exports = testpackage; | ||
|  | 
 | ||
|  | exports.usage = 'Tests that the staged package is valid'; | ||
|  | 
 | ||
|  | const fs = require('fs'); | ||
|  | const path = require('path'); | ||
|  | const log = require('npmlog'); | ||
|  | const existsAsync = fs.exists || path.exists; | ||
|  | const versioning = require('./util/versioning.js'); | ||
|  | const napi = require('./util/napi.js'); | ||
|  | const testbinary = require('./testbinary.js'); | ||
|  | const tar = require('tar'); | ||
|  | const makeDir = require('make-dir'); | ||
|  | 
 | ||
|  | function testpackage(gyp, argv, callback) { | ||
|  |   const package_json = gyp.package_json; | ||
|  |   const napi_build_version = napi.get_napi_build_version_from_command_args(argv); | ||
|  |   const opts = versioning.evaluate(package_json, gyp.opts, napi_build_version); | ||
|  |   const tarball = opts.staged_tarball; | ||
|  |   existsAsync(tarball, (found) => { | ||
|  |     if (!found) { | ||
|  |       return callback(new Error('Cannot test package because ' + tarball + ' missing: run `node-pre-gyp package` first')); | ||
|  |     } | ||
|  |     const to = opts.module_path; | ||
|  |     function filter_func(entry) { | ||
|  |       log.info('install', 'unpacking [' + entry.path + ']'); | ||
|  |     } | ||
|  | 
 | ||
|  |     makeDir(to).then(() => { | ||
|  |       tar.extract({ | ||
|  |         file: tarball, | ||
|  |         cwd: to, | ||
|  |         strip: 1, | ||
|  |         onentry: filter_func | ||
|  |       }).then(after_extract, callback); | ||
|  |     }).catch((err) => { | ||
|  |       return callback(err); | ||
|  |     }); | ||
|  | 
 | ||
|  |     function after_extract() { | ||
|  |       testbinary(gyp, argv, (err) => { | ||
|  |         if (err) { | ||
|  |           return callback(err); | ||
|  |         } else { | ||
|  |           console.log('[' + package_json.name + '] Package appears valid'); | ||
|  |           return callback(); | ||
|  |         } | ||
|  |       }); | ||
|  |     } | ||
|  |   }); | ||
|  | } |