Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			82 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| 'use strict';
 | |
| 
 | |
| const shell = require('shelljs');
 | |
| const karmaBin = require.resolve('karma/bin/karma');
 | |
| const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']);
 | |
| const sauceService = runfiles.resolveWorkspaceRelative(process.argv[2]);
 | |
| process.argv = [
 | |
|   process.argv[0],
 | |
|   karmaBin,
 | |
|   ...process.argv.splice(3),
 | |
| ];
 | |
| try {
 | |
|   console.error(`Setting up environment for SauceLabs karma tests...`);
 | |
|   // KARMA_WEB_TEST_MODE is set which informs /karma-js.conf.js that it should
 | |
|   // run the test with the karma saucelabs launcher
 | |
|   process.env['KARMA_WEB_TEST_MODE'] = 'SL_REQUIRED';
 | |
|   // Saucelabs parameters read from a temporary file that is created by the `sauce-service`. This
 | |
|   // will be `null` if the test runs locally without the `sauce-service` being started.
 | |
|   const saucelabsParams = readLocalSauceConnectParams();
 | |
|   // Setup required SAUCE_* env if they are not already set
 | |
|   if (!process.env['SAUCE_USERNAME'] || !process.env['SAUCE_ACCESS_KEY'] ||
 | |
|       !process.env['SAUCE_TUNNEL_IDENTIFIER']) {
 | |
|     // We print a helpful error message below if the required Saucelabs parameters have not
 | |
|     // been specified in test environment, and the `sauce-service` params file has not been
 | |
|     // created either.
 | |
|     if (saucelabsParams === null) {
 | |
|       console.error(`
 | |
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| !!! Make sure that you have run "yarn bazel run //tools/saucelabs:sauce_service_setup"
 | |
| !!! (or "./tools/saucelabs/sauce-service.sh setup") before the test target. Alternately
 | |
| !!! you can provide the required SAUCE_* environment variables (SAUCE_USERNAME, SAUCE_ACCESS_KEY &
 | |
| !!! SAUCE_TUNNEL_IDENTIFIER) to the test with --test_env or --define but this may prevent bazel from
 | |
| !!! using cached test results.
 | |
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`);
 | |
|       process.exit(1);
 | |
|     }
 | |
|     process.env['SAUCE_USERNAME'] = saucelabsParams.SAUCE_USERNAME;
 | |
|     process.env['SAUCE_ACCESS_KEY'] = saucelabsParams.SAUCE_ACCESS_KEY;
 | |
|     process.env['SAUCE_TUNNEL_IDENTIFIER'] = saucelabsParams.SAUCE_TUNNEL_IDENTIFIER;
 | |
|     process.env['SAUCE_LOCALHOST_ALIAS_DOMAIN'] = saucelabsParams.SAUCE_LOCALHOST_ALIAS_DOMAIN;
 | |
|   }
 | |
| 
 | |
|   // Pass through the optional `SAUCE_LOCALHOST_ALIAS_DOMAIN` environment variable. The
 | |
|   // variable is usually specified on CI, but is not required for testing with Saucelabs.
 | |
|   if (!process.env['SAUCE_LOCALHOST_ALIAS_DOMAIN'] && saucelabsParams !== null) {
 | |
|     process.env['SAUCE_LOCALHOST_ALIAS_DOMAIN'] = saucelabsParams.SAUCE_LOCALHOST_ALIAS_DOMAIN;
 | |
|   }
 | |
| 
 | |
|   const scStart = `${sauceService} start-ready-wait`;
 | |
|   console.error(`Starting SauceConnect (${scStart})...`);
 | |
|   const result = shell.exec(scStart).code;
 | |
|   if (result !== 0) {
 | |
|     throw new Error(`Starting SauceConnect failed with code ${result}`);
 | |
|   }
 | |
| 
 | |
|   console.error(`Launching karma ${karmaBin}...`);
 | |
|   module.constructor._load(karmaBin, this, /*isMain=*/ true);
 | |
| } catch (e) {
 | |
|   console.error(e.stack || e);
 | |
|   process.exit(1);
 | |
| }
 | |
| 
 | |
| function readLocalSauceConnectParams() {
 | |
|   try {
 | |
|     // The following path comes from /tools/saucelabs/sauce-service.sh.
 | |
|     // We setup the required saucelabs environment variables here for the karma test
 | |
|     // from a json file under /tmp/angular/sauce-service  so that we don't break the
 | |
|     // test cache with a changing SAUCE_TUNNEL_IDENTIFIER provided through --test_env
 | |
|     return require('/tmp/angular/sauce-service/sauce-connect-params.json');
 | |
|   } catch {
 | |
|     return null;
 | |
|   }
 | |
| }
 |