test(index): forced plugins to use semantic-release beta
which deduped env-ci to the esm-only version, allowing test double to stub properly
This commit is contained in:
		
							parent
							
								
									9eab1adb9d
								
							
						
					
					
						commit
						f7c85e3fff
					
				
							
								
								
									
										4
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								index.js
									
									
									
									
									
								
							| @ -36,8 +36,8 @@ async function terminalOutput(text) { | ||||
| 
 | ||||
| /* eslint complexity: off */ | ||||
| async function run(context, plugins) { | ||||
|   const {cwd, env, options, logger} = context; | ||||
|   const {isCi, branch, prBranch, isPr} = context.envCi; | ||||
|   const {cwd, env, options, logger, envCi} = context; | ||||
|   const {isCi, branch, prBranch, isPr} = envCi; | ||||
|   const ciBranch = isPr ? prBranch : branch; | ||||
| 
 | ||||
|   if (!isCi && !options.dryRun && !options.noCi) { | ||||
|  | ||||
							
								
								
									
										540
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										540
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -6114,26 +6114,6 @@ | ||||
|         "safe-buffer": "~5.1.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/fromentries": { | ||||
|       "version": "1.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", | ||||
|       "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", | ||||
|       "funding": [ | ||||
|         { | ||||
|           "type": "github", | ||||
|           "url": "https://github.com/sponsors/feross" | ||||
|         }, | ||||
|         { | ||||
|           "type": "patreon", | ||||
|           "url": "https://www.patreon.com/feross" | ||||
|         }, | ||||
|         { | ||||
|           "type": "consulting", | ||||
|           "url": "https://feross.org/support" | ||||
|         } | ||||
|       ], | ||||
|       "peer": true | ||||
|     }, | ||||
|     "node_modules/fs-constants": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", | ||||
| @ -12430,9 +12410,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release": { | ||||
|       "version": "19.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", | ||||
|       "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", | ||||
|       "version": "20.0.0-beta.1", | ||||
|       "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-20.0.0-beta.1.tgz", | ||||
|       "integrity": "sha512-lpk+KQ1dFBcqviuGopQ8YEmLJVRMTQYMUJykCRq0CqYpDyUP5+go9FSU60niJmj1FFxXIMxa2Lo3C7AaPYBskg==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "@semantic-release/commit-analyzer": "^9.0.2", | ||||
| @ -12440,29 +12420,29 @@ | ||||
|         "@semantic-release/github": "^8.0.0", | ||||
|         "@semantic-release/npm": "^9.0.0", | ||||
|         "@semantic-release/release-notes-generator": "^10.0.0", | ||||
|         "aggregate-error": "^3.0.0", | ||||
|         "aggregate-error": "^4.0.1", | ||||
|         "cosmiconfig": "^7.0.0", | ||||
|         "debug": "^4.0.0", | ||||
|         "env-ci": "^5.0.0", | ||||
|         "execa": "^5.0.0", | ||||
|         "figures": "^3.0.0", | ||||
|         "find-versions": "^4.0.0", | ||||
|         "env-ci": "8.0.0-beta.1", | ||||
|         "execa": "^6.1.0", | ||||
|         "figures": "^5.0.0", | ||||
|         "find-versions": "^5.1.0", | ||||
|         "get-stream": "^6.0.0", | ||||
|         "git-log-parser": "^1.2.0", | ||||
|         "hook-std": "^2.0.0", | ||||
|         "hosted-git-info": "^4.0.0", | ||||
|         "lodash": "^4.17.21", | ||||
|         "marked": "^4.0.10", | ||||
|         "marked-terminal": "^5.0.0", | ||||
|         "hook-std": "^3.0.0", | ||||
|         "hosted-git-info": "^5.1.0", | ||||
|         "lodash-es": "^4.17.21", | ||||
|         "marked": "^4.1.0", | ||||
|         "marked-terminal": "^5.1.1", | ||||
|         "micromatch": "^4.0.2", | ||||
|         "p-each-series": "^2.1.0", | ||||
|         "p-reduce": "^2.0.0", | ||||
|         "read-pkg-up": "^7.0.0", | ||||
|         "p-each-series": "^3.0.0", | ||||
|         "p-reduce": "^3.0.0", | ||||
|         "read-pkg-up": "^9.1.0", | ||||
|         "resolve-from": "^5.0.0", | ||||
|         "semver": "^7.3.2", | ||||
|         "semver-diff": "^3.1.1", | ||||
|         "signale": "^1.2.1", | ||||
|         "yargs": "^16.2.0" | ||||
|         "yargs": "^17.5.1" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "semantic-release": "bin/semantic-release.js" | ||||
| @ -12471,270 +12451,6 @@ | ||||
|         "node": ">=16 || ^14.17" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/aggregate-error": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", | ||||
|       "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "clean-stack": "^2.0.0", | ||||
|         "indent-string": "^4.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/clean-stack": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", | ||||
|       "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/cliui": { | ||||
|       "version": "7.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", | ||||
|       "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "string-width": "^4.2.0", | ||||
|         "strip-ansi": "^6.0.0", | ||||
|         "wrap-ansi": "^7.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/env-ci": { | ||||
|       "version": "5.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", | ||||
|       "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "execa": "^5.0.0", | ||||
|         "fromentries": "^1.3.2", | ||||
|         "java-properties": "^1.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10.17" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/execa": { | ||||
|       "version": "5.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", | ||||
|       "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", | ||||
|       "peer": true, | ||||
|       "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/semantic-release/node_modules/figures": { | ||||
|       "version": "3.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", | ||||
|       "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "escape-string-regexp": "^1.0.5" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/find-versions": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", | ||||
|       "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "semver-regex": "^3.1.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/hook-std": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", | ||||
|       "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/hosted-git-info": { | ||||
|       "version": "4.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", | ||||
|       "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "lru-cache": "^6.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/human-signals": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", | ||||
|       "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=10.17.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/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==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/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==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/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==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "path-key": "^3.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/onetime": { | ||||
|       "version": "5.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", | ||||
|       "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "mimic-fn": "^2.1.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=6" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/p-each-series": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", | ||||
|       "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/p-reduce": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", | ||||
|       "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/read-pkg-up": { | ||||
|       "version": "7.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", | ||||
|       "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "find-up": "^4.1.0", | ||||
|         "read-pkg": "^5.2.0", | ||||
|         "type-fest": "^0.8.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/semver-regex": { | ||||
|       "version": "3.1.4", | ||||
|       "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", | ||||
|       "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/strip-final-newline": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", | ||||
|       "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/type-fest": { | ||||
|       "version": "0.8.1", | ||||
|       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", | ||||
|       "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", | ||||
|       "peer": true, | ||||
|       "engines": { | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semantic-release/node_modules/yargs": { | ||||
|       "version": "16.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", | ||||
|       "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", | ||||
|       "peer": true, | ||||
|       "dependencies": { | ||||
|         "cliui": "^7.0.2", | ||||
|         "escalade": "^3.1.1", | ||||
|         "get-caller-file": "^2.0.5", | ||||
|         "require-directory": "^2.1.1", | ||||
|         "string-width": "^4.2.0", | ||||
|         "y18n": "^5.0.5", | ||||
|         "yargs-parser": "^20.2.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semver": { | ||||
|       "version": "7.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", | ||||
| @ -20333,12 +20049,6 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "fromentries": { | ||||
|       "version": "1.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", | ||||
|       "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", | ||||
|       "peer": true | ||||
|     }, | ||||
|     "fs-constants": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", | ||||
| @ -24844,9 +24554,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "semantic-release": { | ||||
|       "version": "19.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", | ||||
|       "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", | ||||
|       "version": "20.0.0-beta.1", | ||||
|       "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-20.0.0-beta.1.tgz", | ||||
|       "integrity": "sha512-lpk+KQ1dFBcqviuGopQ8YEmLJVRMTQYMUJykCRq0CqYpDyUP5+go9FSU60niJmj1FFxXIMxa2Lo3C7AaPYBskg==", | ||||
|       "peer": true, | ||||
|       "requires": { | ||||
|         "@semantic-release/commit-analyzer": "^9.0.2", | ||||
| @ -24854,211 +24564,29 @@ | ||||
|         "@semantic-release/github": "^8.0.0", | ||||
|         "@semantic-release/npm": "^9.0.0", | ||||
|         "@semantic-release/release-notes-generator": "^10.0.0", | ||||
|         "aggregate-error": "^3.0.0", | ||||
|         "aggregate-error": "^4.0.1", | ||||
|         "cosmiconfig": "^7.0.0", | ||||
|         "debug": "^4.0.0", | ||||
|         "env-ci": "^5.0.0", | ||||
|         "execa": "^5.0.0", | ||||
|         "figures": "^3.0.0", | ||||
|         "find-versions": "^4.0.0", | ||||
|         "env-ci": "8.0.0-beta.1", | ||||
|         "execa": "^6.1.0", | ||||
|         "figures": "^5.0.0", | ||||
|         "find-versions": "^5.1.0", | ||||
|         "get-stream": "^6.0.0", | ||||
|         "git-log-parser": "^1.2.0", | ||||
|         "hook-std": "^2.0.0", | ||||
|         "hosted-git-info": "^4.0.0", | ||||
|         "lodash": "^4.17.21", | ||||
|         "marked": "^4.0.10", | ||||
|         "marked-terminal": "^5.0.0", | ||||
|         "hook-std": "^3.0.0", | ||||
|         "hosted-git-info": "^5.1.0", | ||||
|         "lodash-es": "^4.17.21", | ||||
|         "marked": "^4.1.0", | ||||
|         "marked-terminal": "^5.1.1", | ||||
|         "micromatch": "^4.0.2", | ||||
|         "p-each-series": "^2.1.0", | ||||
|         "p-reduce": "^2.0.0", | ||||
|         "read-pkg-up": "^7.0.0", | ||||
|         "p-each-series": "^3.0.0", | ||||
|         "p-reduce": "^3.0.0", | ||||
|         "read-pkg-up": "^9.1.0", | ||||
|         "resolve-from": "^5.0.0", | ||||
|         "semver": "^7.3.2", | ||||
|         "semver-diff": "^3.1.1", | ||||
|         "signale": "^1.2.1", | ||||
|         "yargs": "^16.2.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "aggregate-error": { | ||||
|           "version": "3.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", | ||||
|           "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "clean-stack": "^2.0.0", | ||||
|             "indent-string": "^4.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "clean-stack": { | ||||
|           "version": "2.2.0", | ||||
|           "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", | ||||
|           "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "cliui": { | ||||
|           "version": "7.0.4", | ||||
|           "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", | ||||
|           "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "string-width": "^4.2.0", | ||||
|             "strip-ansi": "^6.0.0", | ||||
|             "wrap-ansi": "^7.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "env-ci": { | ||||
|           "version": "5.5.0", | ||||
|           "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", | ||||
|           "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "execa": "^5.0.0", | ||||
|             "fromentries": "^1.3.2", | ||||
|             "java-properties": "^1.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "execa": { | ||||
|           "version": "5.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", | ||||
|           "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", | ||||
|           "peer": true, | ||||
|           "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" | ||||
|           } | ||||
|         }, | ||||
|         "figures": { | ||||
|           "version": "3.2.0", | ||||
|           "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", | ||||
|           "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "escape-string-regexp": "^1.0.5" | ||||
|           } | ||||
|         }, | ||||
|         "find-versions": { | ||||
|           "version": "4.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", | ||||
|           "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "semver-regex": "^3.1.2" | ||||
|           } | ||||
|         }, | ||||
|         "hook-std": { | ||||
|           "version": "2.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", | ||||
|           "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "hosted-git-info": { | ||||
|           "version": "4.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", | ||||
|           "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "lru-cache": "^6.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "human-signals": { | ||||
|           "version": "2.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", | ||||
|           "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "is-stream": { | ||||
|           "version": "2.0.1", | ||||
|           "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", | ||||
|           "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "mimic-fn": { | ||||
|           "version": "2.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", | ||||
|           "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "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==", | ||||
|           "peer": true, | ||||
|           "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==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "mimic-fn": "^2.1.0" | ||||
|           } | ||||
|         }, | ||||
|         "p-each-series": { | ||||
|           "version": "2.2.0", | ||||
|           "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", | ||||
|           "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "p-reduce": { | ||||
|           "version": "2.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", | ||||
|           "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "read-pkg-up": { | ||||
|           "version": "7.0.1", | ||||
|           "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", | ||||
|           "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "find-up": "^4.1.0", | ||||
|             "read-pkg": "^5.2.0", | ||||
|             "type-fest": "^0.8.1" | ||||
|           } | ||||
|         }, | ||||
|         "semver-regex": { | ||||
|           "version": "3.1.4", | ||||
|           "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", | ||||
|           "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "strip-final-newline": { | ||||
|           "version": "2.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", | ||||
|           "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "type-fest": { | ||||
|           "version": "0.8.1", | ||||
|           "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", | ||||
|           "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", | ||||
|           "peer": true | ||||
|         }, | ||||
|         "yargs": { | ||||
|           "version": "16.2.0", | ||||
|           "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", | ||||
|           "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", | ||||
|           "peer": true, | ||||
|           "requires": { | ||||
|             "cliui": "^7.0.2", | ||||
|             "escalade": "^3.1.1", | ||||
|             "get-caller-file": "^2.0.5", | ||||
|             "require-directory": "^2.1.1", | ||||
|             "string-width": "^4.2.0", | ||||
|             "y18n": "^5.0.5", | ||||
|             "yargs-parser": "^20.2.2" | ||||
|           } | ||||
|         } | ||||
|         "yargs": "^17.5.1" | ||||
|       } | ||||
|     }, | ||||
|     "semver": { | ||||
|  | ||||
| @ -75,6 +75,9 @@ | ||||
|     "testdouble": "3.16.6", | ||||
|     "xo": "0.32.1" | ||||
|   }, | ||||
|   "overrides": { | ||||
|     "semantic-release": "20.0.0-beta.1" | ||||
|   }, | ||||
|   "engines": { | ||||
|     "node": ">=16 || ^14.17" | ||||
|   }, | ||||
|  | ||||
| @ -125,7 +125,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|     publish: [publish, pluginNoop], | ||||
|     success, | ||||
|   }; | ||||
|   const envCi = {branch: 'master', isCi: true, isPr: false}; | ||||
|   const envCiResults = {branch: 'master', isCi: true, isPr: false}; | ||||
| 
 | ||||
|   const releases = [ | ||||
|     { | ||||
| @ -143,7 +143,8 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   ]; | ||||
| 
 | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => envCi); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({env, cwd})).thenReturn(envCiResults); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   const result = await semanticRelease(options, { | ||||
|     cwd, | ||||
| @ -159,7 +160,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(verifyConditions1.args[0][1].branch, branch); | ||||
|   t.deepEqual(verifyConditions1.args[0][1].branches, branches); | ||||
|   t.deepEqual(verifyConditions1.args[0][1].logger, t.context.logger); | ||||
|   t.deepEqual(verifyConditions1.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(verifyConditions1.args[0][1].envCi, envCiResults); | ||||
|   t.is(verifyConditions2.callCount, 1); | ||||
|   t.deepEqual(verifyConditions2.args[0][0], config); | ||||
|   t.deepEqual(verifyConditions2.args[0][1].cwd, cwd); | ||||
| @ -167,7 +168,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(verifyConditions2.args[0][1].branch, branch); | ||||
|   t.deepEqual(verifyConditions2.args[0][1].branches, branches); | ||||
|   t.deepEqual(verifyConditions2.args[0][1].logger, t.context.logger); | ||||
|   t.deepEqual(verifyConditions2.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(verifyConditions2.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.is(generateNotes1.callCount, 2); | ||||
|   t.is(generateNotes2.callCount, 2); | ||||
| @ -189,7 +190,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|     gitTag: 'v1.0.0', | ||||
|     name: 'v1.0.0', | ||||
|   }); | ||||
|   t.deepEqual(generateNotes2.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(generateNotes2.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(generateNotes2.args[0][0], config); | ||||
|   t.deepEqual(generateNotes2.args[0][1].options, options); | ||||
| @ -208,7 +209,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|     name: 'v1.0.0', | ||||
|     notes: notes1, | ||||
|   }); | ||||
|   t.deepEqual(generateNotes2.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(generateNotes2.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(generateNotes3.args[0][0], config); | ||||
|   t.deepEqual(generateNotes3.args[0][1].options, options); | ||||
| @ -227,7 +228,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|     name: 'v1.0.0', | ||||
|     notes: `${notes1}\n\n${notes2}`, | ||||
|   }); | ||||
|   t.deepEqual(generateNotes3.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(generateNotes3.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   branch.tags.push({ | ||||
|     version: '1.0.0', | ||||
| @ -255,7 +256,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   }); | ||||
|   t.deepEqual(addChannel.args[0][1].commits[0].hash, commits[1].hash); | ||||
|   t.deepEqual(addChannel.args[0][1].commits[0].message, commits[1].message); | ||||
|   t.deepEqual(addChannel.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(addChannel.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.is(analyzeCommits.callCount, 1); | ||||
|   t.deepEqual(analyzeCommits.args[0][0], config); | ||||
| @ -266,7 +267,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(analyzeCommits.args[0][1].lastRelease, lastRelease); | ||||
|   t.deepEqual(analyzeCommits.args[0][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(analyzeCommits.args[0][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(analyzeCommits.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(analyzeCommits.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.is(verifyRelease.callCount, 1); | ||||
|   t.deepEqual(verifyRelease.args[0][0], config); | ||||
| @ -278,7 +279,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(verifyRelease.args[0][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(verifyRelease.args[0][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(verifyRelease.args[0][1].nextRelease, nextRelease); | ||||
|   t.deepEqual(verifyRelease.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(verifyRelease.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(generateNotes1.args[1][0], config); | ||||
|   t.deepEqual(generateNotes1.args[1][1].options, options); | ||||
| @ -289,7 +290,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(generateNotes1.args[1][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(generateNotes1.args[1][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(generateNotes1.args[1][1].nextRelease, nextRelease); | ||||
|   t.deepEqual(generateNotes1.args[1][1].envCi, envCi); | ||||
|   t.deepEqual(generateNotes1.args[1][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(generateNotes2.args[1][0], config); | ||||
|   t.deepEqual(generateNotes2.args[1][1].options, options); | ||||
| @ -300,7 +301,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(generateNotes2.args[1][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(generateNotes2.args[1][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(generateNotes2.args[1][1].nextRelease, {...nextRelease, notes: notes1}); | ||||
|   t.deepEqual(generateNotes2.args[1][1].envCi, envCi); | ||||
|   t.deepEqual(generateNotes2.args[1][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(generateNotes3.args[1][0], config); | ||||
|   t.deepEqual(generateNotes3.args[1][1].options, options); | ||||
| @ -311,7 +312,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(generateNotes3.args[1][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(generateNotes3.args[1][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(generateNotes3.args[1][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}`}); | ||||
|   t.deepEqual(generateNotes3.args[1][1].envCi, envCi); | ||||
|   t.deepEqual(generateNotes3.args[1][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.is(prepare.callCount, 1); | ||||
|   t.deepEqual(prepare.args[0][0], config); | ||||
| @ -323,7 +324,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(prepare.args[0][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(prepare.args[0][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(prepare.args[0][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); | ||||
|   t.deepEqual(prepare.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(prepare.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.is(publish.callCount, 1); | ||||
|   t.deepEqual(publish.args[0][0], config); | ||||
| @ -335,7 +336,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(publish.args[0][1].commits[0].hash, commits[0].hash); | ||||
|   t.deepEqual(publish.args[0][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(publish.args[0][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); | ||||
|   t.deepEqual(publish.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(publish.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.is(success.callCount, 2); | ||||
|   t.deepEqual(success.args[0][0], config); | ||||
| @ -356,7 +357,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|     notes: `${notes1}\n\n${notes2}\n\n${notes3}`, | ||||
|   }); | ||||
|   t.deepEqual(success.args[0][1].releases, [releases[0]]); | ||||
|   t.deepEqual(success.args[0][1].envCi, envCi); | ||||
|   t.deepEqual(success.args[0][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(success.args[1][0], config); | ||||
|   t.deepEqual(success.args[1][1].options, options); | ||||
| @ -368,7 +369,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.deepEqual(success.args[1][1].commits[0].message, commits[0].message); | ||||
|   t.deepEqual(success.args[1][1].nextRelease, {...nextRelease, notes: `${notes1}\n\n${notes2}\n\n${notes3}`}); | ||||
|   t.deepEqual(success.args[1][1].releases, [releases[1], releases[2]]); | ||||
|   t.deepEqual(success.args[1][1].envCi, envCi); | ||||
|   t.deepEqual(success.args[1][1].envCi, envCiResults); | ||||
| 
 | ||||
|   t.deepEqual(result, { | ||||
|     lastRelease, | ||||
| @ -388,7 +389,7 @@ test('Plugins are called with expected values', async (t) => { | ||||
|   t.is(env.GIT_COMMITTER_EMAIL, COMMIT_EMAIL); | ||||
| }); | ||||
| 
 | ||||
| test('Use custom tag format', async (t) => { | ||||
| test.serial('Use custom tag format', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['First'], {cwd}); | ||||
|   await gitTagVersion('test-1.0.0', undefined, {cwd}); | ||||
| @ -434,7 +435,7 @@ test('Use custom tag format', async (t) => { | ||||
|   t.is(await gitRemoteTagHead(repositoryUrl, nextRelease.gitTag, {cwd}), nextRelease.gitHead); | ||||
| }); | ||||
| 
 | ||||
| test('Use new gitHead, and recreate release notes if a prepare plugin create a commit', async (t) => { | ||||
| test.serial('Use new gitHead, and recreate release notes if a prepare plugin create a commit', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -507,7 +508,7 @@ test('Use new gitHead, and recreate release notes if a prepare plugin create a c | ||||
|   t.is(await gitRemoteTagHead(repositoryUrl, nextRelease.gitTag, {cwd}), commits[0].hash); | ||||
| }); | ||||
| 
 | ||||
| test('Make a new release when a commit is forward-ported to an upper branch', async (t) => { | ||||
| test.serial('Make a new release when a commit is forward-ported to an upper branch', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial release'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -553,7 +554,7 @@ test('Make a new release when a commit is forward-ported to an upper branch', as | ||||
|   t.is(success.callCount, 1); | ||||
| }); | ||||
| 
 | ||||
| test('Publish a pre-release version', async (t) => { | ||||
| test.serial('Publish a pre-release version', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial commit'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -575,8 +576,10 @@ test('Publish a pre-release version', async (t) => { | ||||
|     fail: stub().resolves(), | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'beta', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({env, cwd})).thenReturn({isCi: true, branch: 'beta', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   let {releases} = await semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
| 
 | ||||
| @ -588,7 +591,7 @@ test('Publish a pre-release version', async (t) => { | ||||
|   await gitCommits(['fix: a fix'], {cwd}); | ||||
|   ({releases} = await semanticRelease(options, { | ||||
|     cwd, | ||||
|     env: {}, | ||||
|     env, | ||||
|     stdout: {write: () => {}}, | ||||
|     stderr: {write: () => {}}, | ||||
|   })); | ||||
| @ -599,7 +602,7 @@ test('Publish a pre-release version', async (t) => { | ||||
|   t.is(await gitGetNote('v1.1.0-beta.2', {cwd}), '{"channels":["beta"]}'); | ||||
| }); | ||||
| 
 | ||||
| test('Publish releases from different branch on the same channel', async (t) => { | ||||
| test.serial('Publish releases from different branch on the same channel', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial commit'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -627,10 +630,12 @@ test('Publish releases from different branch on the same channel', async (t) => | ||||
|     fail: stub().resolves(), | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'next', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({env, cwd})).thenReturn({isCi: true, branch: 'next', isPr: false}); | ||||
|   let semanticRelease = (await import('../index.js')).default; | ||||
|   let {releases} = await semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
|   let {releases} = await semanticRelease(options, {cwd, env, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
| 
 | ||||
|   t.is(releases.length, 1); | ||||
|   t.is(releases[0].version, '1.1.0'); | ||||
| @ -639,7 +644,7 @@ test('Publish releases from different branch on the same channel', async (t) => | ||||
|   await gitCommits(['fix: a fix'], {cwd}); | ||||
|   ({releases} = await semanticRelease(options, { | ||||
|     cwd, | ||||
|     env: {}, | ||||
|     env, | ||||
|     stdout: {write: () => {}}, | ||||
|     stderr: {write: () => {}}, | ||||
|   })); | ||||
| @ -660,7 +665,7 @@ test('Publish releases from different branch on the same channel', async (t) => | ||||
|   t.is(addChannel.callCount, 0); | ||||
| }); | ||||
| 
 | ||||
| test('Publish pre-releases the same channel as regular releases', async (t) => { | ||||
| test.serial('Publish pre-releases the same channel as regular releases', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial commit'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -685,10 +690,12 @@ test('Publish pre-releases the same channel as regular releases', async (t) => { | ||||
|     fail: stub().resolves(), | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'beta', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({cwd, env})).thenReturn({isCi: true, branch: 'beta', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   let {releases} = await semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
|   let {releases} = await semanticRelease(options, {cwd, env, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
| 
 | ||||
|   t.is(releases.length, 1); | ||||
|   t.is(releases[0].version, '1.1.0-beta.1'); | ||||
| @ -697,7 +704,7 @@ test('Publish pre-releases the same channel as regular releases', async (t) => { | ||||
|   await gitCommits(['fix: a fix'], {cwd}); | ||||
|   ({releases} = await semanticRelease(options, { | ||||
|     cwd, | ||||
|     env: {}, | ||||
|     env, | ||||
|     stdout: {write: () => {}}, | ||||
|     stderr: {write: () => {}}, | ||||
|   })); | ||||
| @ -707,7 +714,7 @@ test('Publish pre-releases the same channel as regular releases', async (t) => { | ||||
|   t.is(releases[0].gitTag, 'v1.1.0-beta.2'); | ||||
| }); | ||||
| 
 | ||||
| test('Do not add pre-releases to a different channel', async (t) => { | ||||
| test.serial('Do not add pre-releases to a different channel', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial release'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -750,10 +757,12 @@ test('Do not add pre-releases to a different channel', async (t) => { | ||||
|     success, | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'master', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({cwd, env})).thenReturn({isCi: true, branch: 'master', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   t.truthy(await semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}})); | ||||
|   t.truthy(await semanticRelease(options, {cwd, env, stdout: {write: () => {}}, stderr: {write: () => {}}})); | ||||
| 
 | ||||
|   t.is(addChannel.callCount, 0); | ||||
| }); | ||||
| @ -818,10 +827,12 @@ async function addChannelMacro(t, mergeFunction) { | ||||
|     gitHead: commits[2].hash, | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'master', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({env, cwd})).thenReturn({isCi: true, branch: 'master', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   const result = await semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
|   const result = await semanticRelease(options, {cwd, env, stdout: {write: () => {}}, stderr: {write: () => {}}}); | ||||
| 
 | ||||
|   t.deepEqual(result.releases, [ | ||||
|     {...nextRelease, ...release1, notes, pluginName: '[Function: functionStub]'}, | ||||
| @ -835,11 +846,11 @@ async function addChannelMacro(t, mergeFunction) { | ||||
| 
 | ||||
| addChannelMacro.title = (providedTitle) => `Add version to a channel after a merge (${providedTitle})`; | ||||
| 
 | ||||
| test('fast-forward', addChannelMacro, mergeFf); | ||||
| test('non fast-forward', addChannelMacro, merge); | ||||
| test('rebase', addChannelMacro, rebase); | ||||
| test.serial('fast-forward', addChannelMacro, mergeFf); | ||||
| test.serial('non fast-forward', addChannelMacro, merge); | ||||
| test.serial('rebase', addChannelMacro, rebase); | ||||
| 
 | ||||
| test('Call all "success" plugins even if one errors out', async (t) => { | ||||
| test.serial('Call all "success" plugins even if one errors out', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -884,12 +895,14 @@ test('Call all "success" plugins even if one errors out', async (t) => { | ||||
|     success: [success1, success2], | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'master', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({cwd, env})).thenReturn({isCi: true, branch: 'master', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
| 
 | ||||
|   await t.throwsAsync( | ||||
|     semanticRelease(options, {cwd, env: {}, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer()}) | ||||
|     semanticRelease(options, {cwd, env, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer()}) | ||||
|   ); | ||||
| 
 | ||||
|   t.is(success1.callCount, 1); | ||||
| @ -904,7 +917,7 @@ test('Call all "success" plugins even if one errors out', async (t) => { | ||||
|   ]); | ||||
| }); | ||||
| 
 | ||||
| test('Log all "verifyConditions" errors', async (t) => { | ||||
| test.serial('Log all "verifyConditions" errors', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -934,7 +947,7 @@ test('Log all "verifyConditions" errors', async (t) => { | ||||
|   const errors = [ | ||||
|     ...(await t.throwsAsync( | ||||
|       semanticRelease(options, {cwd, env: {}, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer()}) | ||||
|     )), | ||||
|     )).errors, | ||||
|   ]; | ||||
| 
 | ||||
|   t.deepEqual(sortBy(errors, ['message']), sortBy([error1, error2, error3], ['message'])); | ||||
| @ -949,7 +962,7 @@ test('Log all "verifyConditions" errors', async (t) => { | ||||
|   t.deepEqual(fail.args[0][1].errors, [error2, error3]); | ||||
| }); | ||||
| 
 | ||||
| test('Log all "verifyRelease" errors', async (t) => { | ||||
| test.serial('Log all "verifyRelease" errors', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -978,7 +991,7 @@ test('Log all "verifyRelease" errors', async (t) => { | ||||
|   const errors = [ | ||||
|     ...(await t.throwsAsync( | ||||
|       semanticRelease(options, {cwd, env: {}, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer()}) | ||||
|     )), | ||||
|     )).errors, | ||||
|   ]; | ||||
| 
 | ||||
|   t.deepEqual(sortBy(errors, ['message']), sortBy([error1, error2], ['message'])); | ||||
| @ -989,7 +1002,7 @@ test('Log all "verifyRelease" errors', async (t) => { | ||||
|   t.deepEqual(fail.args[0][1].errors, [error1, error2]); | ||||
| }); | ||||
| 
 | ||||
| test('Dry-run skips addChannel, prepare, publish and success', async (t) => { | ||||
| test.serial('Dry-run skips addChannel, prepare, publish and success', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['First'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -1054,7 +1067,7 @@ test('Dry-run skips addChannel, prepare, publish and success', async (t) => { | ||||
|   t.true(t.context.warn.calledWith(`Skip step "success" of plugin "[Function: ${success.name}]" in dry-run mode`)); | ||||
| }); | ||||
| 
 | ||||
| test('Dry-run skips fail', async (t) => { | ||||
| test.serial('Dry-run skips fail', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1083,7 +1096,7 @@ test('Dry-run skips fail', async (t) => { | ||||
|   const errors = [ | ||||
|     ...(await t.throwsAsync( | ||||
|       semanticRelease(options, {cwd, env: {}, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer()}) | ||||
|     )), | ||||
|     )).errors, | ||||
|   ]; | ||||
| 
 | ||||
|   t.deepEqual(sortBy(errors, ['message']), sortBy([error1, error2], ['message'])); | ||||
| @ -1093,7 +1106,7 @@ test('Dry-run skips fail', async (t) => { | ||||
|   t.true(t.context.warn.calledWith(`Skip step "fail" of plugin "[Function: ${fail.name}]" in dry-run mode`)); | ||||
| }); | ||||
| 
 | ||||
| test('Force a dry-run if not on a CI and "noCi" is not explicitly set', async (t) => { | ||||
| test.serial('Force a dry-run if not on a CI and "noCi" is not explicitly set', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1157,7 +1170,7 @@ test('Force a dry-run if not on a CI and "noCi" is not explicitly set', async (t | ||||
|   t.is(success.callCount, 0); | ||||
| }); | ||||
| 
 | ||||
| test('Dry-run does not print changelog if "generateNotes" return "undefined"', async (t) => { | ||||
| test.serial('Dry-run does not print changelog if "generateNotes" return "undefined"', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1200,7 +1213,7 @@ test('Dry-run does not print changelog if "generateNotes" return "undefined"', a | ||||
|   t.deepEqual(t.context.log.args[t.context.log.args.length - 1], ['Release note for version 2.0.0:']); | ||||
| }); | ||||
| 
 | ||||
| test('Allow local releases with "noCi" option', async (t) => { | ||||
| test.serial('Allow local releases with "noCi" option', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1268,7 +1281,7 @@ test('Allow local releases with "noCi" option', async (t) => { | ||||
|   t.is(success.callCount, 1); | ||||
| }); | ||||
| 
 | ||||
| test('Accept "undefined" value returned by "generateNotes" and "false" by "publish" and "addChannel"', async (t) => { | ||||
| test.serial('Accept "undefined" value returned by "generateNotes" and "false" by "publish" and "addChannel"', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['First'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -1336,7 +1349,7 @@ test('Accept "undefined" value returned by "generateNotes" and "false" by "publi | ||||
|   t.deepEqual(success.args[1][1].releases, [{pluginName: '[Function: functionStub]'}]); | ||||
| }); | ||||
| 
 | ||||
| test('Returns false if triggered by a PR', async (t) => { | ||||
| test.serial('Returns false if triggered by a PR', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
| 
 | ||||
| @ -1356,7 +1369,7 @@ test('Returns false if triggered by a PR', async (t) => { | ||||
|   ); | ||||
| }); | ||||
| 
 | ||||
| test('Throws "EINVALIDNEXTVERSION" if next release is out of range of the current maintenance branch', async (t) => { | ||||
| test.serial('Throws "EINVALIDNEXTVERSION" if next release is out of range of the current maintenance branch', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial commit'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -1392,12 +1405,14 @@ test('Throws "EINVALIDNEXTVERSION" if next release is out of range of the curren | ||||
|     success, | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: '1.x', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({cwd, env})).thenReturn({isCi: true, branch: '1.x', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
| 
 | ||||
|   const error = await t.throwsAsync( | ||||
|     semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}}) | ||||
|     semanticRelease(options, {cwd, env, stdout: {write: () => {}}, stderr: {write: () => {}}}) | ||||
|   ); | ||||
| 
 | ||||
|   t.is(error.code, 'EINVALIDNEXTVERSION'); | ||||
| @ -1406,7 +1421,7 @@ test('Throws "EINVALIDNEXTVERSION" if next release is out of range of the curren | ||||
|   t.regex(error.details, /A valid branch could be `master`./); | ||||
| }); | ||||
| 
 | ||||
| test('Throws "EINVALIDNEXTVERSION" if next release is out of range of the current release branch', async (t) => { | ||||
| test.serial('Throws "EINVALIDNEXTVERSION" if next release is out of range of the current release branch', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial commit'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -1457,7 +1472,7 @@ test('Throws "EINVALIDNEXTVERSION" if next release is out of range of the curren | ||||
|   t.regex(error.details, /A valid branch could be `next` or `next-major`./); | ||||
| }); | ||||
| 
 | ||||
| test('Throws "EINVALIDMAINTENANCEMERGE" if merge an out of range release in a maintenance branch', async (t) => { | ||||
| test.serial('Throws "EINVALIDMAINTENANCEMERGE" if merge an out of range release in a maintenance branch', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['First'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -1504,11 +1519,11 @@ test('Throws "EINVALIDMAINTENANCEMERGE" if merge an out of range release in a ma | ||||
| 
 | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: '1.1.x', isPr: false})); | ||||
|   const semanticRelease = await import('../index.js'); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   const errors = [ | ||||
|     ...(await t.throwsAsync( | ||||
|       semanticRelease(options, {cwd, env: {}, stdout: {write: () => {}}, stderr: {write: () => {}}}) | ||||
|     )), | ||||
|     )).errors, | ||||
|   ]; | ||||
| 
 | ||||
|   t.is(addChannel.callCount, 0); | ||||
| @ -1526,7 +1541,7 @@ test('Throws "EINVALIDMAINTENANCEMERGE" if merge an out of range release in a ma | ||||
|   t.truthy(errors[0].details); | ||||
| }); | ||||
| 
 | ||||
| test('Returns false value if triggered on an outdated clone', async (t) => { | ||||
| test.serial('Returns false value if triggered on an outdated clone', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   let {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   const repoDir = cwd; | ||||
| @ -1553,7 +1568,7 @@ test('Returns false value if triggered on an outdated clone', async (t) => { | ||||
|   ]); | ||||
| }); | ||||
| 
 | ||||
| test('Returns false if not running from the configured branch', async (t) => { | ||||
| test.serial('Returns false if not running from the configured branch', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   const options = { | ||||
| @ -1588,7 +1603,7 @@ test('Returns false if not running from the configured branch', async (t) => { | ||||
|   ); | ||||
| }); | ||||
| 
 | ||||
| test('Returns false if there is no relevant changes', async (t) => { | ||||
| test.serial('Returns false if there is no relevant changes', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1636,7 +1651,7 @@ test('Returns false if there is no relevant changes', async (t) => { | ||||
|   ); | ||||
| }); | ||||
| 
 | ||||
| test('Exclude commits with [skip release] or [release skip] from analysis', async (t) => { | ||||
| test.serial('Exclude commits with [skip release] or [release skip] from analysis', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1669,12 +1684,14 @@ test('Exclude commits with [skip release] or [release skip] from analysis', asyn | ||||
|     fail: stub().resolves(), | ||||
|   }; | ||||
| 
 | ||||
|   const env = {}; | ||||
|   await td.replaceEsm('../lib/get-logger.js', null, () => t.context.logger); | ||||
|   await td.replaceEsm('env-ci', null, () => ({isCi: true, branch: 'master', isPr: false})); | ||||
|   const envCi = (await td.replaceEsm('env-ci')).default; | ||||
|   td.when(envCi({env, cwd})).thenReturn({isCi: true, branch: 'master', isPr: false}); | ||||
|   const semanticRelease = (await import('../index.js')).default; | ||||
|   await semanticRelease(options, { | ||||
|     cwd, | ||||
|     env: {}, | ||||
|     env, | ||||
|     stdout: new WritableStreamBuffer(), | ||||
|     stderr: new WritableStreamBuffer(), | ||||
|   }); | ||||
| @ -1684,7 +1701,7 @@ test('Exclude commits with [skip release] or [release skip] from analysis', asyn | ||||
|   t.deepEqual(analyzeCommits.args[0][1].commits[0], commits[commits.length - 1]); | ||||
| }); | ||||
| 
 | ||||
| test('Log both plugins errors and errors thrown by "fail" plugin', async (t) => { | ||||
| test.serial('Log both plugins errors and errors thrown by "fail" plugin', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   const pluginError = new SemanticReleaseError('Plugin error', 'ERR'); | ||||
|   const failError1 = new Error('Fail error 1'); | ||||
| @ -1709,7 +1726,7 @@ test('Log both plugins errors and errors thrown by "fail" plugin', async (t) => | ||||
|   t.is(t.context.error.args[t.context.error.args.length - 2][1], failError2); | ||||
| }); | ||||
| 
 | ||||
| test('Call "fail" only if a plugin returns a SemanticReleaseError', async (t) => { | ||||
| test.serial('Call "fail" only if a plugin returns a SemanticReleaseError', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   const pluginError = new Error('Plugin error'); | ||||
|   const fail = stub().resolves(); | ||||
| @ -1732,7 +1749,7 @@ test('Call "fail" only if a plugin returns a SemanticReleaseError', async (t) => | ||||
|   t.is(t.context.error.args[t.context.error.args.length - 1][1], pluginError); | ||||
| }); | ||||
| 
 | ||||
| test('Throw SemanticReleaseError if repositoryUrl is not set and cannot be found from repo config', async (t) => { | ||||
| test.serial('Throw SemanticReleaseError if repositoryUrl is not set and cannot be found from repo config', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd} = await gitRepo(); | ||||
| 
 | ||||
| @ -1742,7 +1759,7 @@ test('Throw SemanticReleaseError if repositoryUrl is not set and cannot be found | ||||
|   const errors = [ | ||||
|     ...(await t.throwsAsync( | ||||
|       semanticRelease({}, {cwd, env: {}, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer()}) | ||||
|     )), | ||||
|     )).errors, | ||||
|   ]; | ||||
| 
 | ||||
|   // Verify error code and type
 | ||||
| @ -1752,7 +1769,7 @@ test('Throw SemanticReleaseError if repositoryUrl is not set and cannot be found | ||||
|   t.truthy(errors[0].details); | ||||
| }); | ||||
| 
 | ||||
| test('Throw an Error if plugin returns an unexpected value', async (t) => { | ||||
| test.serial('Throw an Error if plugin returns an unexpected value', async (t) => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   // Add commits to the master branch
 | ||||
| @ -1785,7 +1802,7 @@ test('Throw an Error if plugin returns an unexpected value', async (t) => { | ||||
|   t.regex(error.details, /string/); | ||||
| }); | ||||
| 
 | ||||
| test('Hide sensitive information passed to "fail" plugin', async (t) => { | ||||
| test.serial('Hide sensitive information passed to "fail" plugin', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
| 
 | ||||
|   const fail = stub().resolves(); | ||||
| @ -1823,7 +1840,7 @@ test('Hide sensitive information passed to "fail" plugin', async (t) => { | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
| test('Hide sensitive information passed to "success" plugin', async (t) => { | ||||
| test.serial('Hide sensitive information passed to "success" plugin', async (t) => { | ||||
|   const {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitCommits(['feat: initial release'], {cwd}); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
| @ -1865,7 +1882,7 @@ test('Hide sensitive information passed to "success" plugin', async (t) => { | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
| test('Get all commits including the ones not in the shallow clone', async (t) => { | ||||
| test.serial('Get all commits including the ones not in the shallow clone', async (t) => { | ||||
|   let {cwd, repositoryUrl} = await gitRepo(true); | ||||
|   await gitTagVersion('v1.0.0', undefined, {cwd}); | ||||
|   await gitCommits(['First', 'Second', 'Third'], {cwd}); | ||||
|  | ||||
| @ -659,8 +659,6 @@ test('Hide sensitive environment variable values from the logs', async (t) => { | ||||
|     extendEnv: false, | ||||
|   }); | ||||
| 
 | ||||
|   console.log({stderr}) | ||||
| 
 | ||||
|   t.regex(stdout, new RegExp(`Console: Exposing token ${escapeRegExp(SECRET_REPLACEMENT)}`)); | ||||
|   t.regex(stdout, new RegExp(`Log: Exposing token ${escapeRegExp(SECRET_REPLACEMENT)}`)); | ||||
|   t.regex(stderr, new RegExp(`Error: Console token ${escapeRegExp(SECRET_REPLACEMENT)}`)); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user