From 60cfdddc1183d46c0d650821afabf42f8b19863f Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 12:52:30 +0100 Subject: [PATCH 01/30] fix(test): Use sync version of remove letting beforeEach and afterAll wait --- test/integration/create-react-app/index.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index f819e9b95bb..51cdf9e8a03 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -1,7 +1,7 @@ 'use strict'; const execa = require('execa'); -const { mkdirp, remove, writeFileSync, existsSync } = require('fs-extra'); +const { mkdirp, writeFileSync, existsSync, removeSync } = require('fs-extra'); const { join } = require('path'); const cli = require.resolve('create-react-app/index.js'); @@ -18,8 +18,8 @@ const generatedFiles = [ 'package-lock.json', ]; -beforeEach(() => remove(genPath)); -afterAll(() => remove(genPath)); +beforeEach(() => removeSync(genPath)); +afterAll(() => removeSync(genPath)); const run = (args, options) => execa('node', [cli].concat(args), options); From cfdd896847fdcd4df8fb1c7466407275f2e1ce4b Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 13:30:05 +0100 Subject: [PATCH 02/30] fix(test): Check if path exists before removing --- test/integration/create-react-app/index.test.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 51cdf9e8a03..9857c339ef1 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -18,8 +18,10 @@ const generatedFiles = [ 'package-lock.json', ]; -beforeEach(() => removeSync(genPath)); -afterAll(() => removeSync(genPath)); +const removeGenPath = () => existsSync(genPath) && removeSync(genPath); + +beforeEach(removeGenPath); +afterAll(removeGenPath); const run = (args, options) => execa('node', [cli].concat(args), options); From 3c6d98de2c59e15edb1f7daa9551792f77944e73 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 15:43:25 +0100 Subject: [PATCH 03/30] fix(test): Use node fs rmdirSync --- test/integration/create-react-app/index.test.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 9857c339ef1..37c8a3321ea 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -1,8 +1,9 @@ 'use strict'; const execa = require('execa'); -const { mkdirp, writeFileSync, existsSync, removeSync } = require('fs-extra'); +const { mkdirp, writeFileSync, existsSync } = require('fs-extra'); const { join } = require('path'); +const { rmdirSync } = require('fs'); const cli = require.resolve('create-react-app/index.js'); @@ -18,7 +19,12 @@ const generatedFiles = [ 'package-lock.json', ]; -const removeGenPath = () => existsSync(genPath) && removeSync(genPath); +const removeGenPath = () => { + rmdirSync(genPath, { + recursive: true, + force: true, + }); +}; beforeEach(removeGenPath); afterAll(removeGenPath); From 238f1f6f95bd60ce48637bc21dd3a6b1f72c42f2 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 15:50:25 +0100 Subject: [PATCH 04/30] fix(test): Use node rmSync --- test/integration/create-react-app/index.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 37c8a3321ea..3c4fc537921 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -3,7 +3,7 @@ const execa = require('execa'); const { mkdirp, writeFileSync, existsSync } = require('fs-extra'); const { join } = require('path'); -const { rmdirSync } = require('fs'); +const { rmSync } = require('fs'); const cli = require.resolve('create-react-app/index.js'); @@ -20,7 +20,7 @@ const generatedFiles = [ ]; const removeGenPath = () => { - rmdirSync(genPath, { + rmSync(genPath, { recursive: true, force: true, }); From b10ea450e0b2f66ab3acd30d2b3873e9a88c093e Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 16:21:06 +0100 Subject: [PATCH 05/30] Update execa --- package-lock.json | 842 ++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 744 insertions(+), 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index 591cc5526b4..25989fad25b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@testing-library/user-event": "^12.1.10", "alex": "^8.2.0", "eslint": "^7.30.0", - "execa": "^1.0.0", + "execa": "^6.0.0", "fs-extra": "^9.0.1", "get-port": "^5.1.1", "globby": "^11.0.1", @@ -2835,6 +2835,91 @@ "node": ">= 6.9.0" } }, + "node_modules/@lerna/child-process/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/@lerna/child-process/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@lerna/child-process/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@lerna/child-process/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@lerna/child-process/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@lerna/child-process/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@lerna/child-process/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/@lerna/clean": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz", @@ -3098,6 +3183,40 @@ "node": ">= 6.9.0" } }, + "node_modules/@lerna/command/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/@lerna/command/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@lerna/command/node_modules/is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -3110,6 +3229,57 @@ "is-ci": "bin.js" } }, + "node_modules/@lerna/command/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@lerna/command/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@lerna/command/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@lerna/command/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@lerna/command/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/@lerna/conventional-commits": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz", @@ -13399,88 +13569,125 @@ } }, "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.0.0.tgz", + "integrity": "sha512-m4wU9j4Z9nXXoqT8RSfl28JSwmMNLFF69OON8H/lL3NeU0tNpGz313bcOfYoBBHokB0dC2tMl3VUcKgHELhL2Q==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.0.1", + "onetime": "^6.0.0", + "signal-exit": "^3.0.5", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "dev": true, "engines": { - "node": ">=4.8" + "node": ">=12.20.0" } }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/execa/node_modules/npm-run-path": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.0.1.tgz", + "integrity": "sha512-ybBJQUSyFwEEhqO2lXmyKOl9ucHtyZBWVM0h0FiMfT/+WKxCUZFa95qAR2X3w/w6oigN3B0b2UNHZbD+kdfD5w==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/execa/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" + "engines": { + "node": ">=12" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/exit": { @@ -19646,6 +19853,40 @@ "wrap-ansi": "^2.0.0" } }, + "node_modules/lerna-changelog/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/lerna-changelog/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/lerna-changelog/node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -19789,12 +20030,51 @@ "node": ">=4" } }, + "node_modules/lerna-changelog/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/lerna-changelog/node_modules/require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "node_modules/lerna-changelog/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/lerna-changelog/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lerna-changelog/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/lerna-changelog/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -19807,6 +20087,18 @@ "node": ">=4" } }, + "node_modules/lerna-changelog/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/lerna-changelog/node_modules/wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -31353,6 +31645,91 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/windows-release/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/windows-release/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/windows-release/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/windows-release/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/windows-release/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/windows-release/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/windows-release/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -34475,6 +34852,72 @@ "chalk": "^2.3.1", "execa": "^1.0.0", "strong-log-transformer": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "@lerna/clean": { @@ -34690,6 +35133,34 @@ "npmlog": "^4.1.2" }, "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -34698,6 +35169,42 @@ "requires": { "ci-info": "^2.0.0" } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -42876,68 +43383,75 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-6.0.0.tgz", + "integrity": "sha512-m4wU9j4Z9nXXoqT8RSfl28JSwmMNLFF69OON8H/lL3NeU0tNpGz313bcOfYoBBHokB0dC2tMl3VUcKgHELhL2Q==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.0.1", + "onetime": "^6.0.0", + "signal-exit": "^3.0.5", + "strip-final-newline": "^3.0.0" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", "dev": true }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.0.1.tgz", + "integrity": "sha512-ybBJQUSyFwEEhqO2lXmyKOl9ucHtyZBWVM0h0FiMfT/+WKxCUZFa95qAR2X3w/w6oigN3B0b2UNHZbD+kdfD5w==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "path-key": "^4.0.0" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "requires": { - "isexe": "^2.0.0" + "mimic-fn": "^4.0.0" } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true } } }, @@ -47655,6 +48169,34 @@ "wrap-ansi": "^2.0.0" } }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -47762,12 +48304,39 @@ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -47777,6 +48346,15 @@ "ansi-regex": "^3.0.0" } }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -56795,6 +57373,72 @@ "dev": true, "requires": { "execa": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "word-wrap": { diff --git a/package.json b/package.json index 1d7bb115ece..9288c46e7bf 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@testing-library/user-event": "^12.1.10", "alex": "^8.2.0", "eslint": "^7.30.0", - "execa": "^1.0.0", + "execa": "^6.0.0", "fs-extra": "^9.0.1", "get-port": "^5.1.1", "globby": "^11.0.1", From 1324c822c7c04e2175069f77fb086ca57038166b Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 16:23:19 +0100 Subject: [PATCH 06/30] wip(test): Testing yarn command --- test/integration/create-react-app/index.test.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 3c4fc537921..96b5ed10dca 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -89,6 +89,11 @@ describe('create-react-app', () => { }); it('uses yarn as the package manager', async () => { + const yarnVersionResult = await execa('yarn --version'); + + expect(yarnVersionResult.code).toBe(0); + expect(yarnVersionResult.stdout).toBe(''); + const { code } = await run([projectName], { cwd: __dirname, env: { npm_config_user_agent: 'yarn' }, From cd3da91c591ab1d41069c12d6687799c5aa13ef7 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 16:36:20 +0100 Subject: [PATCH 07/30] wip(test): break mac os tests --- test/integration/create-react-app/index.test.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 96b5ed10dca..cea7f70a67c 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -1,5 +1,6 @@ 'use strict'; +const os = require('os'); const execa = require('execa'); const { mkdirp, writeFileSync, existsSync } = require('fs-extra'); const { join } = require('path'); @@ -89,10 +90,12 @@ describe('create-react-app', () => { }); it('uses yarn as the package manager', async () => { - const yarnVersionResult = await execa('yarn --version'); + if (os.type() === 'Darwin') { + const yarnVersionResult = await execa('yarn --version'); - expect(yarnVersionResult.code).toBe(0); - expect(yarnVersionResult.stdout).toBe(''); + expect(yarnVersionResult.code).toBe(0); + expect(yarnVersionResult.stdout).toBe(''); + } const { code } = await run([projectName], { cwd: __dirname, From 50d204cf1fef01546cd9b938977ea9d16e10ee23 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 16:37:08 +0100 Subject: [PATCH 08/30] fix(test): Downgrade execa to 5.x --- package-lock.json | 555 +++++----------------------------------------- package.json | 2 +- 2 files changed, 56 insertions(+), 501 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25989fad25b..ab02266c539 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@testing-library/user-event": "^12.1.10", "alex": "^8.2.0", "eslint": "^7.30.0", - "execa": "^6.0.0", + "execa": "^5.1.1", "fs-extra": "^9.0.1", "get-port": "^5.1.1", "globby": "^11.0.1", @@ -11830,83 +11830,6 @@ "node": ">= 10" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -13569,23 +13492,22 @@ } }, "node_modules/execa": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.0.0.tgz", - "integrity": "sha512-m4wU9j4Z9nXXoqT8RSfl28JSwmMNLFF69OON8H/lL3NeU0tNpGz313bcOfYoBBHokB0dC2tMl3VUcKgHELhL2Q==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^5.0.1", - "onetime": "^6.0.0", - "signal-exit": "^3.0.5", - "strip-final-newline": "^3.0.0" + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -13595,7 +13517,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, "engines": { "node": ">=10" }, @@ -13603,88 +13524,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/execa/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/execa/node_modules/npm-run-path": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.0.1.tgz", - "integrity": "sha512-ybBJQUSyFwEEhqO2lXmyKOl9ucHtyZBWVM0h0FiMfT/+WKxCUZFa95qAR2X3w/w6oigN3B0b2UNHZbD+kdfD5w==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/execa/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" + "mimic-fn": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17731,83 +17609,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-circus": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", @@ -18921,39 +18722,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -18962,50 +18730,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-runtime/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -42058,55 +41782,6 @@ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "requires": { "execa": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - } } }, "defaults": { @@ -43383,75 +43058,51 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "execa": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.0.0.tgz", - "integrity": "sha512-m4wU9j4Z9nXXoqT8RSfl28JSwmMNLFF69OON8H/lL3NeU0tNpGz313bcOfYoBBHokB0dC2tMl3VUcKgHELhL2Q==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "requires": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^5.0.1", - "onetime": "^6.0.0", - "signal-exit": "^3.0.5", - "strip-final-newline": "^3.0.0" + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "dependencies": { "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "npm-run-path": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.0.1.tgz", - "integrity": "sha512-ybBJQUSyFwEEhqO2lXmyKOl9ucHtyZBWVM0h0FiMfT/+WKxCUZFa95qAR2X3w/w6oigN3B0b2UNHZbD+kdfD5w==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "path-key": "^4.0.0" + "path-key": "^3.0.0" } }, "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "mimic-fn": "^4.0.0" + "mimic-fn": "^2.1.0" } - }, - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true } } }, @@ -46533,55 +46184,6 @@ "@jest/types": "^27.2.4", "execa": "^5.0.0", "throat": "^6.0.1" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - } } }, "jest-circus": { @@ -47401,58 +47003,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", diff --git a/package.json b/package.json index 9288c46e7bf..23614b69f0e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@testing-library/user-event": "^12.1.10", "alex": "^8.2.0", "eslint": "^7.30.0", - "execa": "^6.0.0", + "execa": "^5.1.1", "fs-extra": "^9.0.1", "get-port": "^5.1.1", "globby": "^11.0.1", From f39a73d8ccf15abe8c9a383ad6f4fbe47467d4aa Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 16:59:48 +0100 Subject: [PATCH 09/30] fix(test): execa result code changed to exitCode --- .../create-react-app/index.test.js | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index cea7f70a67c..6a290d0f418 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -36,18 +36,18 @@ const genFileExists = f => existsSync(join(genPath, f)); describe('create-react-app', () => { it('asks to supply an argument if none supplied', async () => { - const { code, stderr } = await run([], { reject: false }); + const { exitCode, stderr } = await run([], { reject: false }); // Assertions - expect(code).toBe(1); + expect(exitCode).toBe(1); expect(stderr).toContain('Please specify the project directory'); }); it('creates a project on supplying a name as the argument', async () => { - const { code } = await run([projectName], { cwd: __dirname }); + const { exitCode } = await run([projectName], { cwd: __dirname }); // Assert for exit code - expect(code).toBe(0); + expect(exitCode).toBe(0); // Assert for the generated files generatedFiles.forEach(file => expect(genFileExists(file)).toBeTruthy()); @@ -61,13 +61,13 @@ describe('create-react-app', () => { const pkgJson = join(genPath, 'package.json'); writeFileSync(pkgJson, '{ "foo": "bar" }'); - const { code, stdout } = await run([projectName], { + const { exitCode, stdout } = await run([projectName], { cwd: __dirname, reject: false, }); // Assert for exit code - expect(code).toBe(1); + expect(exitCode).toBe(1); // Assert for the expected message expect(stdout).toContain( @@ -80,10 +80,10 @@ describe('create-react-app', () => { await mkdirp(genPath); // Create a project in the current directory - const { code } = await run(['.'], { cwd: genPath }); + const { exitCode } = await run(['.'], { cwd: genPath }); // Assert for exit code - expect(code).toBe(0); + expect(exitCode).toBe(0); // Assert for the generated files generatedFiles.forEach(file => expect(genFileExists(file)).toBeTruthy()); @@ -97,13 +97,13 @@ describe('create-react-app', () => { expect(yarnVersionResult.stdout).toBe(''); } - const { code } = await run([projectName], { + const { exitCode } = await run([projectName], { cwd: __dirname, env: { npm_config_user_agent: 'yarn' }, }); // Assert for exit code - expect(code).toBe(0); + expect(exitCode).toBe(0); // Assert for the generated files const generatedFilesWithYarn = [ @@ -117,12 +117,12 @@ describe('create-react-app', () => { }); it('creates a project based on the typescript template', async () => { - const { code } = await run([projectName, '--template', 'typescript'], { + const { exitCode } = await run([projectName, '--template', 'typescript'], { cwd: __dirname, }); // Assert for exit code - expect(code).toBe(0); + expect(exitCode).toBe(0); // Assert for the generated files [...generatedFiles, 'tsconfig.json'].forEach(file => From e9a991a7af0e2abc269769dd21799330d785ab72 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 17:05:39 +0100 Subject: [PATCH 10/30] fix(test): Update execa in screencase-start --- tasks/screencast-start.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tasks/screencast-start.js b/tasks/screencast-start.js index 3841a6e19ad..4e02d4069ff 100644 --- a/tasks/screencast-start.js +++ b/tasks/screencast-start.js @@ -1,10 +1,10 @@ #!/usr/bin/env node /** - * Copyright (c) 2015-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ 'use strict'; @@ -20,7 +20,7 @@ function main(cli) { const start = Date.now(); const duration = parseInt(cli.flags.timeout, 10) * 1000; - const cp = execa.shell(cli.flags.command); + const cp = execa(cli.flags.command, { shell: true }); const target = parseInt(cli.flags.patternCount || '1', 10); @@ -52,7 +52,7 @@ function main(cli) { } setTimeout(() => { - process.exit(e.code); + process.exit(e.exitCode); }, duration - elapsed); }); } From e67c8bcfb1353a1d3cb0cdbe387be3b227e94d08 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 17:21:50 +0100 Subject: [PATCH 11/30] fix(test): Assert that yarn is installed --- test/integration/create-react-app/index.test.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 6a290d0f418..321fe538be3 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -90,12 +90,9 @@ describe('create-react-app', () => { }); it('uses yarn as the package manager', async () => { - if (os.type() === 'Darwin') { - const yarnVersionResult = await execa('yarn --version'); - - expect(yarnVersionResult.code).toBe(0); - expect(yarnVersionResult.stdout).toBe(''); - } + // Assert that yarn is installed + const yarnVersionResult = await execa('yarn --version'); + expect(yarnVersionResult.exitCode).toBe(0); const { exitCode } = await run([projectName], { cwd: __dirname, From 96ce05cb84f58e5883f0b2e98356e34e97b6affb Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 17:25:53 +0100 Subject: [PATCH 12/30] fix(test): Remove unused import of os --- test/integration/create-react-app/index.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 321fe538be3..8a3b978149d 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -1,6 +1,5 @@ 'use strict'; -const os = require('os'); const execa = require('execa'); const { mkdirp, writeFileSync, existsSync } = require('fs-extra'); const { join } = require('path'); From d10442b857d9c488ec43663ebb17cbe0b0b391fb Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 17:40:06 +0100 Subject: [PATCH 13/30] fix(test): Ensure that yarn is installed --- .github/workflows/integration.yml | 2 ++ test/integration/create-react-app/index.test.js | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index fa1369e7d4c..66e9dd59dc9 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -24,6 +24,8 @@ jobs: cache: 'npm' - name: Install npm@7 run: npm i -g npm@7 + - name: Install yarn + run: npm i -g yarn - name: Install packages run: npm ci --prefer-offline - name: Run integration tests diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 8a3b978149d..5cc952e64dd 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -34,6 +34,12 @@ const run = (args, options) => execa('node', [cli].concat(args), options); const genFileExists = f => existsSync(join(genPath, f)); describe('create-react-app', () => { + it('check yarn installation', async () => { + // Assert that yarn is installed + const { exitCode } = await execa('yarn --version'); + expect(exitCode).toBe(0); + }); + it('asks to supply an argument if none supplied', async () => { const { exitCode, stderr } = await run([], { reject: false }); @@ -89,10 +95,6 @@ describe('create-react-app', () => { }); it('uses yarn as the package manager', async () => { - // Assert that yarn is installed - const yarnVersionResult = await execa('yarn --version'); - expect(yarnVersionResult.exitCode).toBe(0); - const { exitCode } = await run([projectName], { cwd: __dirname, env: { npm_config_user_agent: 'yarn' }, From a0758a0c491b49c421dcfb0b624a409698db9052 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 17:46:18 +0100 Subject: [PATCH 14/30] fix(test): Fix yarn installation test --- test/integration/create-react-app/index.test.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 5cc952e64dd..f1f5e910e45 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -35,8 +35,9 @@ const genFileExists = f => existsSync(join(genPath, f)); describe('create-react-app', () => { it('check yarn installation', async () => { - // Assert that yarn is installed - const { exitCode } = await execa('yarn --version'); + const { exitCode } = await execa('yarn', ['--version']); + + // Assert for exit code expect(exitCode).toBe(0); }); From 1a253b98b2ab2a27771cfa9437feeca874753834 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 18:18:58 +0100 Subject: [PATCH 15/30] fix(test): Switch back to use fs-extra removeSync api --- test/integration/create-react-app/index.test.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index f1f5e910e45..678605d8de0 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -1,9 +1,8 @@ 'use strict'; const execa = require('execa'); -const { mkdirp, writeFileSync, existsSync } = require('fs-extra'); +const { mkdirp, writeFileSync, existsSync, removeSync } = require('fs-extra'); const { join } = require('path'); -const { rmSync } = require('fs'); const cli = require.resolve('create-react-app/index.js'); @@ -19,15 +18,8 @@ const generatedFiles = [ 'package-lock.json', ]; -const removeGenPath = () => { - rmSync(genPath, { - recursive: true, - force: true, - }); -}; - -beforeEach(removeGenPath); -afterAll(removeGenPath); +beforeEach(() => removeSync(genPath)); +afterAll(() => removeSync(genPath)); const run = (args, options) => execa('node', [cli].concat(args), options); From 444e721e0ae173ecd065b85befd485fd6dc29801 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sat, 27 Nov 2021 18:37:00 +0100 Subject: [PATCH 16/30] Revert "fix(test): Switch back to use fs-extra removeSync api" This reverts commit 1a253b98b2ab2a27771cfa9437feeca874753834. --- test/integration/create-react-app/index.test.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 678605d8de0..f1f5e910e45 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -1,8 +1,9 @@ 'use strict'; const execa = require('execa'); -const { mkdirp, writeFileSync, existsSync, removeSync } = require('fs-extra'); +const { mkdirp, writeFileSync, existsSync } = require('fs-extra'); const { join } = require('path'); +const { rmSync } = require('fs'); const cli = require.resolve('create-react-app/index.js'); @@ -18,8 +19,15 @@ const generatedFiles = [ 'package-lock.json', ]; -beforeEach(() => removeSync(genPath)); -afterAll(() => removeSync(genPath)); +const removeGenPath = () => { + rmSync(genPath, { + recursive: true, + force: true, + }); +}; + +beforeEach(removeGenPath); +afterAll(removeGenPath); const run = (args, options) => execa('node', [cli].concat(args), options); From 810e5f01e4563ee2c4d8b0feec69ab1b0fbe8f88 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 11:34:43 +0100 Subject: [PATCH 17/30] fix(test): Increase timeout and change stdio for failing test --- .../create-react-app/index.test.js | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index f1f5e910e45..d9971110b8f 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -95,25 +95,30 @@ describe('create-react-app', () => { generatedFiles.forEach(file => expect(genFileExists(file)).toBeTruthy()); }); - it('uses yarn as the package manager', async () => { - const { exitCode } = await run([projectName], { - cwd: __dirname, - env: { npm_config_user_agent: 'yarn' }, - }); - - // Assert for exit code - expect(exitCode).toBe(0); - - // Assert for the generated files - const generatedFilesWithYarn = [ - ...generatedFiles.filter(file => file !== 'package-lock.json'), - 'yarn.lock', - ]; - - generatedFilesWithYarn.forEach(file => - expect(genFileExists(file)).toBeTruthy() - ); - }); + it( + 'uses yarn as the package manager', + async () => { + const { exitCode } = await run([projectName], { + cwd: __dirname, + env: { npm_config_user_agent: 'yarn' }, + stdio: 'inherit', + }); + + // Assert for exit code + expect(exitCode).toBe(0); + + // Assert for the generated files + const generatedFilesWithYarn = [ + ...generatedFiles.filter(file => file !== 'package-lock.json'), + 'yarn.lock', + ]; + + generatedFilesWithYarn.forEach(file => + expect(genFileExists(file)).toBeTruthy() + ); + }, + 1000 * 60 * 10 + ); it('creates a project based on the typescript template', async () => { const { exitCode } = await run([projectName, '--template', 'typescript'], { From f342a3750310c6d89d119946ead62efede8fb2e7 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 11:55:58 +0100 Subject: [PATCH 18/30] fix(test): Integration test - Improve log output --- test/integration/create-react-app/index.test.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index d9971110b8f..4335260e6fa 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -29,7 +29,19 @@ const removeGenPath = () => { beforeEach(removeGenPath); afterAll(removeGenPath); -const run = (args, options) => execa('node', [cli].concat(args), options); +const run = async (args, options) => { + console.log( + `::group:: Test " ${ + expect.getState().currentTestName + }" - "create-react-app ${args.join(' ')}" output:` + ); + const result = await execa('node', [cli].concat(args), { + stdio: 'inherit', + ...options, + }); + console.log('::endgroup::'); + return result; +}; const genFileExists = f => existsSync(join(genPath, f)); @@ -101,7 +113,6 @@ describe('create-react-app', () => { const { exitCode } = await run([projectName], { cwd: __dirname, env: { npm_config_user_agent: 'yarn' }, - stdio: 'inherit', }); // Assert for exit code From 2b86c74255d608710018f784b1a6c1c793dc28f2 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 12:38:01 +0100 Subject: [PATCH 19/30] fix(test): Fix integration run output --- test/integration/create-react-app/index.test.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 4335260e6fa..02981fda3b5 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -30,17 +30,17 @@ beforeEach(removeGenPath); afterAll(removeGenPath); const run = async (args, options) => { - console.log( + process.stdout.write( `::group:: Test " ${ expect.getState().currentTestName - }" - "create-react-app ${args.join(' ')}" output:` + }" - "create-react-app ${args.join(' ')}" output:\n` ); - const result = await execa('node', [cli].concat(args), { - stdio: 'inherit', - ...options, - }); - console.log('::endgroup::'); - return result; + const result = execa('node', [cli].concat(args), options); + result.stdout.on('data', chunk => + process.stdout.write(chunk.toString('utf8')) + ); + process.stdout.write('::endgroup::\n'); + return await result; }; const genFileExists = f => existsSync(join(genPath, f)); From 3c9d7a0c3d47fb01744ea5d480d3de534944709a Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 12:44:48 +0100 Subject: [PATCH 20/30] fix(test): Integration group by childProcessResult --- test/integration/create-react-app/index.test.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 02981fda3b5..6d9bdb56868 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -39,8 +39,9 @@ const run = async (args, options) => { result.stdout.on('data', chunk => process.stdout.write(chunk.toString('utf8')) ); + const childProcessResult = await result; process.stdout.write('::endgroup::\n'); - return await result; + return childProcessResult; }; const genFileExists = f => existsSync(join(genPath, f)); From f61f20da47cc27f85ff54338e00d2a02daf3bd36 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:02:21 +0100 Subject: [PATCH 21/30] fix(test): Integration run tidy group name --- test/integration/create-react-app/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 6d9bdb56868..ce1b445c702 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -31,7 +31,7 @@ afterAll(removeGenPath); const run = async (args, options) => { process.stdout.write( - `::group:: Test " ${ + `::group::Test "${ expect.getState().currentTestName }" - "create-react-app ${args.join(' ')}" output:\n` ); From 02fff39b0f0371bf72f2e8ea42d02f9851446a07 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:02:52 +0100 Subject: [PATCH 22/30] fix(test): Integration test - investigate stdout --- test/integration/create-react-app/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index ce1b445c702..7c71a57d189 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -136,7 +136,7 @@ describe('create-react-app', () => { const { exitCode } = await run([projectName, '--template', 'typescript'], { cwd: __dirname, }); - + process.stdout.write('EO-Run\n'); // Assert for exit code expect(exitCode).toBe(0); From 848dd1899c41a994d15156532448d2c571df6123 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:09:07 +0100 Subject: [PATCH 23/30] Revert "fix(test): Integration test - investigate stdout" This reverts commit 02fff39b0f0371bf72f2e8ea42d02f9851446a07. --- test/integration/create-react-app/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 7c71a57d189..ce1b445c702 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -136,7 +136,7 @@ describe('create-react-app', () => { const { exitCode } = await run([projectName, '--template', 'typescript'], { cwd: __dirname, }); - process.stdout.write('EO-Run\n'); + // Assert for exit code expect(exitCode).toBe(0); From 59fd8a01a6fc64a28183879efa9b9edf301a7f77 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:10:38 +0100 Subject: [PATCH 24/30] fix(test): Integration run wait for stdout to be drained --- test/integration/create-react-app/index.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index ce1b445c702..49e4130e369 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -41,6 +41,8 @@ const run = async (args, options) => { ); const childProcessResult = await result; process.stdout.write('::endgroup::\n'); + // Wait for stream to be done writing result + await new Promise(resolve => process.stdout.once('drain', resolve)); return childProcessResult; }; From 2f70674d5381258ed521795a8436015c1585d3c8 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:16:00 +0100 Subject: [PATCH 25/30] fix(test): Integration test add check if output needs to be drained --- test/integration/create-react-app/index.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 49e4130e369..dea9fe5a3ec 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -42,7 +42,9 @@ const run = async (args, options) => { const childProcessResult = await result; process.stdout.write('::endgroup::\n'); // Wait for stream to be done writing result - await new Promise(resolve => process.stdout.once('drain', resolve)); + if (!process.stdout.write('')) { + await new Promise(resolve => process.stdout.once('drain', resolve)); + } return childProcessResult; }; From 09ce9942eeb2ddcd62cc882a35643b80a4d9a6fe Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:26:49 +0100 Subject: [PATCH 26/30] fix(test): Integration log exit code --- test/integration/create-react-app/index.test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index dea9fe5a3ec..71ffdc01733 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -40,6 +40,7 @@ const run = async (args, options) => { process.stdout.write(chunk.toString('utf8')) ); const childProcessResult = await result; + process.stdout.write(`ExitCode: ${childProcessResult.exitCode}`); process.stdout.write('::endgroup::\n'); // Wait for stream to be done writing result if (!process.stdout.write('')) { From c323b14a344f5f495af99d883c4c98791a1c6a77 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:27:12 +0100 Subject: [PATCH 27/30] fix(test): Integration add dummy wait test --- test/integration/create-react-app/index.test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 71ffdc01733..77f3b1488cf 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -150,4 +150,10 @@ describe('create-react-app', () => { expect(genFileExists(file)).toBeTruthy() ); }); + + it('dummy test', async () => { + expect(false).toBe(false); + await new Promise(resolve => setTimeout(resolve, 1000)); + expect(true).toBe(true); + }); }); From 6a6075276bcbef5d0b8bcb0375d2fd50f6339f56 Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:28:24 +0100 Subject: [PATCH 28/30] fix(test): Integration remove wait for stdout drain --- test/integration/create-react-app/index.test.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 77f3b1488cf..003358841d5 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -42,10 +42,6 @@ const run = async (args, options) => { const childProcessResult = await result; process.stdout.write(`ExitCode: ${childProcessResult.exitCode}`); process.stdout.write('::endgroup::\n'); - // Wait for stream to be done writing result - if (!process.stdout.write('')) { - await new Promise(resolve => process.stdout.once('drain', resolve)); - } return childProcessResult; }; From 79cfe729fbf34105146abaa629fc138b44f85bbb Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:33:18 +0100 Subject: [PATCH 29/30] fix(test): Integration log output add missing newline --- test/integration/create-react-app/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index 003358841d5..e19bbf4cd98 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -40,7 +40,7 @@ const run = async (args, options) => { process.stdout.write(chunk.toString('utf8')) ); const childProcessResult = await result; - process.stdout.write(`ExitCode: ${childProcessResult.exitCode}`); + process.stdout.write(`ExitCode: ${childProcessResult.exitCode}\n`); process.stdout.write('::endgroup::\n'); return childProcessResult; }; From c99c0fc3a9dd1f319976cf8ac82ce7bce99892ac Mon Sep 17 00:00:00 2001 From: "Morten N.O. Henriksen" Date: Sun, 28 Nov 2021 13:44:03 +0100 Subject: [PATCH 30/30] fix(test): Integration defer Jest result wait for stdio flush --- test/integration/create-react-app/index.test.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/test/integration/create-react-app/index.test.js b/test/integration/create-react-app/index.test.js index e19bbf4cd98..11861ad6885 100644 --- a/test/integration/create-react-app/index.test.js +++ b/test/integration/create-react-app/index.test.js @@ -27,7 +27,11 @@ const removeGenPath = () => { }; beforeEach(removeGenPath); -afterAll(removeGenPath); +afterAll(async () => { + removeGenPath(); + // Defer jest result output waiting for stdout to flush + await new Promise(resolve => setTimeout(resolve, 100)); +}); const run = async (args, options) => { process.stdout.write( @@ -146,10 +150,4 @@ describe('create-react-app', () => { expect(genFileExists(file)).toBeTruthy() ); }); - - it('dummy test', async () => { - expect(false).toBe(false); - await new Promise(resolve => setTimeout(resolve, 1000)); - expect(true).toBe(true); - }); });