From 1d9f38ec9c19a148ea91d6c8d8089bbb41cb8740 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 25 Apr 2020 00:15:33 -0400 Subject: [PATCH] Fix issue with CheckoutSha requests --- .../Controllers/RepositoryController.cs | 9 +++++++-- tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs index fb505b268c..1dd7019374 100644 --- a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs +++ b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs @@ -524,8 +524,13 @@ namespace Tgstation.Server.Host.Controllers // checkout/hard reset if (modelHasShaOrReference) { - if ((model.CheckoutSha != null && repo.Head.ToUpperInvariant().StartsWith(model.CheckoutSha.ToUpperInvariant(), StringComparison.Ordinal)) - || (model.Reference != null && repo.Reference.ToUpperInvariant() != model.Reference.ToUpperInvariant())) + var validCheckoutSha = + model.CheckoutSha != null + && !repo.Head.StartsWith(model.CheckoutSha, StringComparison.OrdinalIgnoreCase); + var validCheckoutReference = + model.Reference != null + && !repo.Reference.Equals(model.Reference, StringComparison.OrdinalIgnoreCase); + if (validCheckoutSha || validCheckoutReference) { var committish = model.CheckoutSha ?? model.Reference; var isSha = await repo.IsSha(committish, cancellationToken).ConfigureAwait(false); diff --git a/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs b/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs index 79158f2634..062d8265a1 100644 --- a/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs +++ b/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs @@ -88,6 +88,7 @@ namespace Tgstation.Server.Tests.Instance updated = await Checkout(updated, false, false, cancellationToken); // Fake SHA + updated.Reference = null; updated.CheckoutSha = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; updated = await Checkout(updated, true, false, cancellationToken); @@ -97,7 +98,7 @@ namespace Tgstation.Server.Tests.Instance // Back updated.Reference = workingBranch; - updated = await Checkout(updated, true, true, cancellationToken); + updated = await Checkout(updated, false, true, cancellationToken); var testPRString = Environment.GetEnvironmentVariable("TGS4_TEST_PULL_REQUEST_NUMBER"); if (String.IsNullOrWhiteSpace(testPRString))