From 2088cf3c1d28ad8a7b0cbc3901e149e0136c4b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Cie=C5=9Blak?= Date: Thu, 27 Apr 2023 11:05:20 +0200 Subject: [PATCH 1/3] Make sure code 0 is reported properly --- web/packages/teleterm/src/mainProcess/resolveNetworkAddress.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.ts b/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.ts index 73bb5f617e1b7..db4c806fd7972 100644 --- a/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.ts +++ b/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.ts @@ -99,7 +99,8 @@ function waitForMatchInStdout( const rejectOnExit = (code: number, signal: NodeJS.Signals) => { const codeOrSignal = [ - code && `code ${code}`, + // code can be 0, so we cannot just check it the same way as the signal. + code != null && `code ${code}`, signal && `signal ${signal}`, ] .filter(Boolean) From 4b3086a5ae8ee4092ba7b4d5a9967ccc0e1ee016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Cie=C5=9Blak?= Date: Thu, 27 Apr 2023 11:06:11 +0200 Subject: [PATCH 2/3] Ensure the test process prints to stdout before exiting --- .../mainProcess/resolveNetworkAddress.test.ts | 10 +++++----- .../teleterm/src/mainProcess/testProcess.js | 19 ------------------- .../teleterm/src/mainProcess/testProcess.mjs | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 24 deletions(-) delete mode 100644 web/packages/teleterm/src/mainProcess/testProcess.js create mode 100644 web/packages/teleterm/src/mainProcess/testProcess.mjs diff --git a/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.test.ts b/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.test.ts index ff151d94ecd53..17df757375a8e 100644 --- a/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.test.ts +++ b/web/packages/teleterm/src/mainProcess/resolveNetworkAddress.test.ts @@ -19,11 +19,11 @@ import path from 'path'; import { resolveNetworkAddress } from './resolveNetworkAddress'; -// Hardcoded in testProcess.js. +// Hardcoded in testProcess.mjs. const PORT = '1337'; it('returns an error when supplied an unknown protocol', async () => { - const process = fork(path.join(__dirname, 'testProcess.js'), { + const process = fork(path.join(__dirname, 'testProcess.mjs'), { silent: true, }); @@ -56,7 +56,7 @@ describe.each(testSuites)( 'for $name process', ({ requestedAddress, expectedNetworkAddress }) => { it(`waits for the process to output the matching string`, async () => { - const process = fork(path.join(__dirname, 'testProcess.js'), { + const process = fork(path.join(__dirname, 'testProcess.mjs'), { silent: true, }); @@ -73,7 +73,7 @@ describe.each(testSuites)( }); it(`times out if the process doesn't return the match in time`, async () => { - const process = fork(path.join(__dirname, 'testProcess.js'), ['100'], { + const process = fork(path.join(__dirname, 'testProcess.mjs'), ['100'], { silent: true, }); @@ -88,7 +88,7 @@ describe.each(testSuites)( it(`returns an error if the process exits without returning a match`, async () => { const process = fork( - path.join(__dirname, 'testProcess.js'), + path.join(__dirname, 'testProcess.mjs'), ['10', 'exit-prematurely'], { silent: true, diff --git a/web/packages/teleterm/src/mainProcess/testProcess.js b/web/packages/teleterm/src/mainProcess/testProcess.js deleted file mode 100644 index ae3ead2efb9b0..0000000000000 --- a/web/packages/teleterm/src/mainProcess/testProcess.js +++ /dev/null @@ -1,19 +0,0 @@ -const process = require('process'); - -const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); - -(async () => { - const waitTime = parseInt(process.argv[2]); - if (waitTime) { - await sleep(waitTime); - } - - const shouldExit = process.argv[3]; - if (shouldExit) { - process.exit(1); - } - - console.log('Lorem ipsum dolor sit amet'); - console.log('{CONNECT_GRPC_PORT: 1337}'); - console.log('Lorem ipsum dolor sit amet'); -})(); diff --git a/web/packages/teleterm/src/mainProcess/testProcess.mjs b/web/packages/teleterm/src/mainProcess/testProcess.mjs new file mode 100644 index 0000000000000..3a152ea745d05 --- /dev/null +++ b/web/packages/teleterm/src/mainProcess/testProcess.mjs @@ -0,0 +1,17 @@ +import process from 'process'; + +const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + +const waitTime = parseInt(process.argv[2]); +if (waitTime) { + await sleep(waitTime); +} + +const shouldExit = process.argv[3]; +if (shouldExit) { + process.exit(1); +} + +console.log('Lorem ipsum dolor sit amet'); +console.log('{CONNECT_GRPC_PORT: 1337}'); +console.log('Lorem ipsum dolor sit amet'); From 115c400357f43a50022ad73858ada7f2dd45c377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Cie=C5=9Blak?= Date: Thu, 4 May 2023 18:04:48 +0200 Subject: [PATCH 3/3] Fix license --- .../teleterm/src/mainProcess/testProcess.mjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/web/packages/teleterm/src/mainProcess/testProcess.mjs b/web/packages/teleterm/src/mainProcess/testProcess.mjs index 3a152ea745d05..bb8b540a5df8c 100644 --- a/web/packages/teleterm/src/mainProcess/testProcess.mjs +++ b/web/packages/teleterm/src/mainProcess/testProcess.mjs @@ -1,3 +1,19 @@ +/** + * Copyright 2023 Gravitational, Inc + * + * 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. + */ + import process from 'process'; const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));