mirror of https://github.com/grpc/grpc-node.git
				
				
				
			
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*
 | |
|  * Copyright 2017 gRPC authors.
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *     http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| const _gulp = require('gulp');
 | |
| const help = require('gulp-help');
 | |
| const mocha = require('gulp-mocha');
 | |
| const execa = require('execa');
 | |
| const path = require('path');
 | |
| const del = require('del');
 | |
| const semver = require('semver');
 | |
| const linkSync = require('../util').linkSync;
 | |
| 
 | |
| // gulp-help monkeypatches tasks to have an additional description parameter
 | |
| const gulp = help(_gulp);
 | |
| 
 | |
| const testDir = __dirname;
 | |
| const apiTestDir = path.resolve(testDir, 'api');
 | |
| 
 | |
| gulp.task('install', 'Install test dependencies', () => {
 | |
|   return execa('npm', ['install'], {cwd: testDir, stdio: 'inherit'});
 | |
| });
 | |
| 
 | |
| gulp.task('clean.all', 'Delete all files created by tasks', () => {});
 | |
| 
 | |
| gulp.task('test', 'Run API-level tests', () => {
 | |
|   // run mocha tests matching a glob with a pre-required fixture,
 | |
|   // returning the associated gulp stream
 | |
|   if (!semver.satisfies(process.version, '>=9.4')) {
 | |
|     console.log(`Skipping cross-implementation tests for Node ${process.version}`);
 | |
|     return;
 | |
|   }
 | |
|   const apiTestGlob = `${apiTestDir}/*.js`;
 | |
|   const runTestsWithFixture = (server, client) => new Promise((resolve, reject) => {
 | |
|     const fixture = `${server}_${client}`;
 | |
|     console.log(`Running ${apiTestGlob} with ${server} server + ${client} client`);
 | |
|     gulp.src(apiTestGlob)
 | |
|       .pipe(mocha({
 | |
|         reporter: 'mocha-jenkins-reporter',
 | |
|         require: `${testDir}/fixtures/${fixture}.js`
 | |
|       }))
 | |
|       .resume() // put the stream in flowing mode
 | |
|       .on('end', resolve)
 | |
|       .on('error', reject);
 | |
|   });
 | |
|   var runTestsArgPairs;
 | |
|   if (semver.satisfies(process.version, '^ 8.11.2 || >=9.4')) {
 | |
|     runTestsArgPairs = [
 | |
|       ['native', 'native'],
 | |
|       ['native', 'js'],
 | |
|       // ['js', 'native'],
 | |
|       // ['js', 'js']
 | |
|     ];
 | |
|   } else {
 | |
|     runTestsArgPairs = [
 | |
|       ['native', 'native']
 | |
|     ];
 | |
|   }
 | |
|   return runTestsArgPairs.reduce((previousPromise, argPair) => {
 | |
|     return previousPromise.then(runTestsWithFixture.bind(null, argPair[0], argPair[1]));
 | |
|   }, Promise.resolve());
 | |
| });
 |