diff --git a/test/client-libraries-integration/.gitignore b/test/client-libraries-integration/.gitignore new file mode 100644 index 00000000..5fe2e366 --- /dev/null +++ b/test/client-libraries-integration/.gitignore @@ -0,0 +1 @@ +nodejs-*/ \ No newline at end of file diff --git a/test/client-libraries-integration/init.sh b/test/client-libraries-integration/init.sh new file mode 100755 index 00000000..c5834a77 --- /dev/null +++ b/test/client-libraries-integration/init.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +npm install + +for dir in $(node -p "require('./repositories.json').join('\n')"); do + if [ ! -d $dir ]; then + git clone https://github.com/googleapis/$dir + fi + pushd $dir + npm install + popd + node --require ./use-grpc-js.js $(npm bin)/_mocha --timeout 60000 $dir/system-test/*.js +done diff --git a/test/client-libraries-integration/package.json b/test/client-libraries-integration/package.json new file mode 100644 index 00000000..ea639a06 --- /dev/null +++ b/test/client-libraries-integration/package.json @@ -0,0 +1,9 @@ +{ + "name": "grpc-client-libraries-integration", + "version": "0.0.1", + "description": "", + "dependencies": { + "mocha": "^5.0.4", + "shimmer": "^1.2.0" + } +} diff --git a/test/client-libraries-integration/repositories.json b/test/client-libraries-integration/repositories.json new file mode 100644 index 00000000..31a937e9 --- /dev/null +++ b/test/client-libraries-integration/repositories.json @@ -0,0 +1,20 @@ +[ + "nodejs-datastore", + "nodejs-language", + "nodejs-storage", + "nodejs-translate", + "nodejs-logging", + "nodejs-video-intelligence", + "nodejs-dlp", + "nodejs-firestore", + "nodejs-pubsub", + "nodejs-spanner", + "nodejs-speech", + "nodejs-vision", + "nodejs-bigquery", + "nodejs-monitoring", + "nodejs-bigtable", + "nodejs-dns", + "nodejs-resource", + "nodejs-compute" +] \ No newline at end of file diff --git a/test/client-libraries-integration/use-grpc-js.js b/test/client-libraries-integration/use-grpc-js.js new file mode 100644 index 00000000..05273944 --- /dev/null +++ b/test/client-libraries-integration/use-grpc-js.js @@ -0,0 +1,18 @@ +const Module = require('module'); +const shimmer = require('shimmer'); + +const grpcImpl = require('../../packages/grpc-js-core'); +const grpcPJson = require('../../packages/grpc-js-core/package'); + +shimmer.wrap(Module, '_load', (moduleLoad) => { + return function Module_load(path, parent) { + if (path === 'grpc') { + return grpcImpl; + } else if (path.startsWith('grpc/package')) { + return grpcPJson; + } else { + const result = moduleLoad.apply(this, arguments); + return result; + } + }; +});