Merge pull request #432 from github/simon-engledew/fix-ref-check
Fix rev-parse errors
This commit is contained in:
commit
bb012c4070
6 changed files with 11 additions and 6 deletions
4
lib/actions-util.js
generated
4
lib/actions-util.js
generated
|
|
@ -369,7 +369,9 @@ async function getRef() {
|
|||
// using GITHUB_REF. There is a subtle race condition where
|
||||
// git rev-parse GITHUB_REF != GITHUB_SHA, so we must check
|
||||
// git git-parse GITHUB_REF == git rev-parse HEAD instead.
|
||||
const hasChangedRef = sha !== head && (await exports.getCommitOid(ref)) !== head;
|
||||
const hasChangedRef = sha !== head &&
|
||||
(await exports.getCommitOid(ref.replace(/^refs\/pull\//, "refs/remotes/pull/"))) !==
|
||||
head;
|
||||
if (hasChangedRef) {
|
||||
const newRef = ref.replace(pull_ref_regex, "refs/pull/$1/head");
|
||||
core.debug(`No longer on merge commit, rewriting ref from ${ref} to ${newRef}.`);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
2
lib/actions-util.test.js
generated
2
lib/actions-util.test.js
generated
|
|
@ -40,7 +40,7 @@ ava_1.default("getRef() returns merge PR ref if GITHUB_REF still checked out but
|
|||
process.env["GITHUB_SHA"] = "b".repeat(40);
|
||||
const sha = "a".repeat(40);
|
||||
const callback = sinon_1.default.stub(actionsutil, "getCommitOid");
|
||||
callback.withArgs("refs/pull/1/merge").resolves(sha);
|
||||
callback.withArgs("refs/remotes/pull/1/merge").resolves(sha);
|
||||
callback.withArgs("HEAD").resolves(sha);
|
||||
const actualRef = await actionsutil.getRef();
|
||||
t.deepEqual(actualRef, expectedRef);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -40,7 +40,7 @@ test("getRef() returns merge PR ref if GITHUB_REF still checked out but sha has
|
|||
const sha = "a".repeat(40);
|
||||
|
||||
const callback = sinon.stub(actionsutil, "getCommitOid");
|
||||
callback.withArgs("refs/pull/1/merge").resolves(sha);
|
||||
callback.withArgs("refs/remotes/pull/1/merge").resolves(sha);
|
||||
callback.withArgs("HEAD").resolves(sha);
|
||||
|
||||
const actualRef = await actionsutil.getRef();
|
||||
|
|
|
|||
|
|
@ -443,7 +443,10 @@ export async function getRef(): Promise<string> {
|
|||
// using GITHUB_REF. There is a subtle race condition where
|
||||
// git rev-parse GITHUB_REF != GITHUB_SHA, so we must check
|
||||
// git git-parse GITHUB_REF == git rev-parse HEAD instead.
|
||||
const hasChangedRef = sha !== head && (await getCommitOid(ref)) !== head;
|
||||
const hasChangedRef =
|
||||
sha !== head &&
|
||||
(await getCommitOid(ref.replace(/^refs\/pull\//, "refs/remotes/pull/"))) !==
|
||||
head;
|
||||
|
||||
if (hasChangedRef) {
|
||||
const newRef = ref.replace(pull_ref_regex, "refs/pull/$1/head");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue