From 8ec962d825fc948ffda5ab863e639cd4158935ba Mon Sep 17 00:00:00 2001 From: Ruslan Lesiutin Date: Fri, 23 Jun 2023 16:45:53 +0100 Subject: [PATCH] fix[devtools/ci]: fixed incorrect condition calculation for @reactVersion annotation (#26997) Suppose that you have this setup for devtools test: ``` // @reactVersion <= 18.1 // @reactVersion >= 17.1 ``` With previous implementation, the accumulated condition will be `"<= 18.1" && ">= 17.1"`, which is just `">= 17.1"`, when evaluated. That's why we executed some tests for old versions of react on main (and failed). With these changes the resulting condition will be `"<= 18.1 >= 17.1"`, not using `&&`, because semver does not support this operator. All currently failing tests will be skipped now as expected. Also increased timeout value for shell server to start --- .../src/__tests__/xGoogleIgnoreList-test.js | 2 +- .../babel/transform-react-version-pragma.js | 40 +++++++++---------- scripts/circleci/run_devtools_e2e_tests.js | 2 +- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/packages/react-devtools-extensions/src/__tests__/xGoogleIgnoreList-test.js b/packages/react-devtools-extensions/src/__tests__/xGoogleIgnoreList-test.js index 9df2fac6f66ab..58571d2655d96 100644 --- a/packages/react-devtools-extensions/src/__tests__/xGoogleIgnoreList-test.js +++ b/packages/react-devtools-extensions/src/__tests__/xGoogleIgnoreList-test.js @@ -13,7 +13,7 @@ import path from 'path'; import {rimrafSync} from 'rimraf'; describe('x_google_ignoreList source map extension', () => { - jest.setTimeout(30 * 1000); + jest.setTimeout(60 * 1000); const pathToExtensionsPackage = path.resolve(__dirname, '..', '..'); const pathToChromeExtensionBuild = path.join( diff --git a/scripts/babel/transform-react-version-pragma.js b/scripts/babel/transform-react-version-pragma.js index d7d42f865cf80..90c235ce480c9 100644 --- a/scripts/babel/transform-react-version-pragma.js +++ b/scripts/babel/transform-react-version-pragma.js @@ -26,31 +26,29 @@ function transform(babel) { return null; } - let conditions = null; - for (const line of comments) { - const commentStr = line.value.trim(); - if (commentStr.startsWith(GATE_VERSION_STR)) { - const condition = t.stringLiteral( - commentStr.slice(GATE_VERSION_STR.length) - ); - if (conditions === null) { - conditions = [condition]; - } else { - conditions.push(condition); + const resultingCondition = comments.reduce( + (accumulatedCondition, commentLine) => { + const commentStr = commentLine.value.trim(); + + if (!commentStr.startsWith(GATE_VERSION_STR)) { + return accumulatedCondition; + } + + const condition = commentStr.slice(GATE_VERSION_STR.length); + if (accumulatedCondition === null) { + return condition; } - } - } - if (conditions !== null) { - let condition = conditions[0]; - for (let i = 1; i < conditions.length; i++) { - const right = conditions[i]; - condition = t.logicalExpression('&&', condition, right); - } - return condition; - } else { + return accumulatedCondition.concat(' ', condition); + }, + null + ); + + if (resultingCondition === null) { return null; } + + return t.stringLiteral(resultingCondition); } return { diff --git a/scripts/circleci/run_devtools_e2e_tests.js b/scripts/circleci/run_devtools_e2e_tests.js index 9e1be94b9904d..e8fdb01c42aa6 100755 --- a/scripts/circleci/run_devtools_e2e_tests.js +++ b/scripts/circleci/run_devtools_e2e_tests.js @@ -76,7 +76,7 @@ function runTestShell() { // Assume the test shell server failed to start. logError('Testing shell server failed to start'); exitWithCode(1); - }, 30000); + }, 60 * 1000); logBright('Starting testing shell server');