github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/examples/internal/browser/gulpfile.js (about) 1 "use strict"; 2 3 var gulp = require('gulp'); 4 5 var path = require('path'); 6 7 var bower = require('gulp-bower'); 8 var exit = require('gulp-exit'); 9 var shell = require('gulp-shell'); 10 var jasmineBrowser = require('gulp-jasmine-browser'); 11 var webpack = require('webpack-stream'); 12 const child = require('child_process'); 13 14 gulp.task('bower', function () { 15 return bower(); 16 }); 17 18 gulp.task('server', shell.task([ 19 'go build -o bin/example-server github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/cmd/example-grpc-server', 20 ])); 21 22 gulp.task('gateway', shell.task([ 23 'go build -o bin/example-gw github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/cmd/example-gateway-server', 24 ])); 25 26 gulp.task('serve-server', ['server'], function () { 27 let server = child.spawn('bin/example-server', [], { stdio: 'inherit' }); 28 process.on('exit', function () { 29 server.kill(); 30 }); 31 }); 32 33 gulp.task('serve-gateway', ['gateway', 'serve-server'], function () { 34 let gw = child.spawn('bin/example-gw', [ 35 '--openapi_dir', path.join(__dirname, "../proto/examplepb"), 36 ], { stdio: 'inherit' }); 37 process.on('exit', function () { 38 gw.kill(); 39 }); 40 }); 41 42 gulp.task('backends', ['serve-gateway', 'serve-server']); 43 44 var specFiles = ['*.spec.js']; 45 gulp.task('test', ['backends'], function (done) { 46 let s = gulp.src(specFiles) 47 console.log(s); 48 return s 49 .pipe(webpack({ output: { filename: 'spec.js' } })) 50 .pipe(jasmineBrowser.specRunner({ 51 console: true, 52 sourceMappedStacktrace: true, 53 })) 54 .pipe(jasmineBrowser.headless({ 55 driver: 'phantomjs', 56 findOpenPort: true, 57 catch: true, 58 throwFailures: true, 59 })) 60 .on('error', function (err) { 61 done(err); 62 process.exit(1); 63 }) 64 .pipe(exit()); 65 }); 66 67 gulp.task('serve', ['backends'], function (done) { 68 var JasminePlugin = require('gulp-jasmine-browser/webpack/jasmine-plugin'); 69 var plugin = new JasminePlugin(); 70 71 return gulp.src(specFiles) 72 .pipe(webpack({ 73 output: { filename: 'spec.js' }, 74 watch: true, 75 plugins: [plugin], 76 })) 77 .pipe(jasmineBrowser.specRunner({ 78 sourceMappedStacktrace: true, 79 })) 80 .pipe(jasmineBrowser.server({ 81 port: 8000, 82 whenReady: plugin.whenReady, 83 })); 84 }); 85 86 gulp.task('default', ['test']);