diff options
| author | Johannes Schindelin <dscho@github.com> | 2020-11-03 15:44:09 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-03 09:44:09 -0500 |
| commit | 2267990cd9bb5381259f49c66a8476d75f41e36e (patch) | |
| tree | 60656824f7dbb6b4cd71214f8b72ad212e0bcf69 /dist/index.js | |
| parent | 87a992c3184847a0c800064628595a4d295af3fc (diff) | |
Add missing `await`s (#379)v2.3.4
* auth-helper: properly await replacement of the token value in the config
After writing the `.extraheader` config, we manually replace the token
with the actual value. This is done in an `async` function, but we were
not `await`ing the result.
In our tests, this commit fixes a flakiness we observed where
`remote.origin.url` sometimes (very rarely, actually) is not set for
submodules. Our interpretation is that the configs are in the process of
being rewritten with the correct token value _while_ another `git
config` that wants to set the `insteadOf` value is reading the config,
which is currently empty.
A more idiomatic way to fix this in Typescript would use
`Promise.all()`, like this:
await Promise.all(
configPaths.map(async configPath => {
core.debug(`Replacing token placeholder in '${configPath}'`)
await this.replaceTokenPlaceholder(configPath)
})
)
However, during review of https://github.com/actions/checkout/pull/379
it was decided to keep the `for` loop in the interest of simplicity.
Reported by Ian Lynagh.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* downloadRepository(): await the result of recursive deletions
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Ask ESLint to report floating Promises
This rule is quite helpful in avoiding hard-to-debug missing `await`s.
Note: there are two locations in `src/main.ts` that trigger warnings:
the `run()` and the `cleanup()` function are called without `await` and
without any `.catch()` clause.
In the initial version of https://github.com/actions/checkout/pull/379,
this was addressed by adding `.catch()` clauses. However, it was
determined that this is boilerplate code that will need to be fixed in a
broader way.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Rebuild
This trick was brought to you by `npm ci && npm run build`. Needed to
get the PR build to pass.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Diffstat (limited to 'dist/index.js')
| -rw-r--r-- | dist/index.js | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/dist/index.js b/dist/index.js index 9683c11..e765cc2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5498,7 +5498,7 @@ class GitAuthHelper { const configPaths = output.match(/(?<=(^|\n)file:)[^\t]+(?=\tremote\.origin\.url)/g) || []; for (const configPath of configPaths) { core.debug(`Replacing token placeholder in '${configPath}'`); - this.replaceTokenPlaceholder(configPath); + yield this.replaceTokenPlaceholder(configPath); } if (this.settings.sshKey) { // Configure core.sshCommand @@ -9594,7 +9594,7 @@ function downloadRepository(authToken, owner, repo, ref, commit, repositoryPath) else { yield toolCache.extractTar(archivePath, extractPath); } - io.rmRF(archivePath); + yield io.rmRF(archivePath); // Determine the path of the repository content. The archive contains // a top-level folder and the repository content is inside. const archiveFileNames = yield fs.promises.readdir(extractPath); @@ -9613,7 +9613,7 @@ function downloadRepository(authToken, owner, repo, ref, commit, repositoryPath) yield io.mv(sourcePath, targetPath); } } - io.rmRF(extractPath); + yield io.rmRF(extractPath); }); } exports.downloadRepository = downloadRepository; |
