Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 5833138

Browse files
committed
Update tests for new version of GetPullRequestMergeBase
The new version of this method takes a PR number.
1 parent e2ef9f3 commit 5833138

File tree

4 files changed

+18
-76
lines changed

4 files changed

+18
-76
lines changed

src/GitHub.App/Services/GitClient.cs

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -418,45 +418,6 @@ public async Task<string> GetPullRequestMergeBase(IRepository repo,
418418
return mergeBaseCommit.Sha;
419419
}
420420

421-
public async Task<string> GetPullRequestMergeBase(IRepository repo,
422-
UriString baseCloneUrl, UriString headCloneUrl, string baseSha, string headSha, string baseRef, string headRef)
423-
{
424-
Guard.ArgumentNotNull(repo, nameof(repo));
425-
Guard.ArgumentNotNull(baseCloneUrl, nameof(baseCloneUrl));
426-
Guard.ArgumentNotNull(headCloneUrl, nameof(headCloneUrl));
427-
Guard.ArgumentNotEmptyString(baseRef, nameof(baseRef));
428-
429-
var baseCommit = repo.Lookup<Commit>(baseSha);
430-
if (baseCommit == null)
431-
{
432-
await Fetch(repo, baseCloneUrl, baseRef);
433-
baseCommit = repo.Lookup<Commit>(baseSha);
434-
if (baseCommit == null)
435-
{
436-
throw new NotFoundException($"Couldn't find {baseSha} after fetching from {baseCloneUrl}:{baseRef}.");
437-
}
438-
}
439-
440-
var headCommit = repo.Lookup<Commit>(headSha);
441-
if (headCommit == null)
442-
{
443-
await Fetch(repo, headCloneUrl, headRef);
444-
headCommit = repo.Lookup<Commit>(headSha);
445-
if (headCommit == null)
446-
{
447-
throw new NotFoundException($"Couldn't find {headSha} after fetching from {headCloneUrl}:{headRef}.");
448-
}
449-
}
450-
451-
var mergeBaseCommit = repo.ObjectDatabase.FindMergeBase(baseCommit, headCommit);
452-
if (mergeBaseCommit == null)
453-
{
454-
throw new NotFoundException($"Couldn't find merge base between {baseCommit} and {headCommit}.");
455-
}
456-
457-
return mergeBaseCommit.Sha;
458-
}
459-
460421
public Task<bool> IsHeadPushed(IRepository repo)
461422
{
462423
Guard.ArgumentNotNull(repo, nameof(repo));

src/GitHub.Exports.Reactive/Services/IGitClient.cs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -184,22 +184,6 @@ public interface IGitClient
184184
/// <returns></returns>
185185
Task<bool> IsModified(IRepository repository, string path, byte[] contents);
186186

187-
/// <summary>
188-
/// Find the merge base SHA between two commits.
189-
/// </summary>
190-
/// <param name="repository">The repository.</param>
191-
/// <param name="baseCloneUrl">The clone url of the PR base.</param>
192-
/// <param name="headCloneUrl">The clone url of the PR head.</param>
193-
/// <param name="baseSha">The PR base SHA.</param>
194-
/// <param name="headSha">The PR head SHA.</param>
195-
/// <param name="baseRef">The PR base ref (e.g. 'master').</param>
196-
/// <param name="headRef">The PR head ref.</param>
197-
/// <returns>
198-
/// The merge base SHA or null.
199-
/// </returns>
200-
/// <exception cref="LibGit2Sharp.NotFoundException">Thrown when the merge base can't be found.</exception>
201-
Task<string> GetPullRequestMergeBase(IRepository repo, UriString baseCloneUrl, UriString headCloneUrl, string baseSha, string headSha, string baseRef, string headRef);
202-
203187
/// <summary>
204188
/// Find the merge base SHA between two commits.
205189
/// </summary>

src/UnitTests/GitHub.App/Services/GitClientTests.cs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -162,61 +162,58 @@ public class TheGetPullRequestMergeBaseMethod : TestBaseClass
162162
[Fact]
163163
public async Task LocalBaseHeadAndMergeBase_DontFetch()
164164
{
165-
var baseUrl = new UriString("https://github.com/owner/repo");
166-
var headUrl = new UriString("https://github.com/owner/repo");
165+
var targetCloneUrl = new UriString("https://github.com/owner/repo");
167166
var baseSha = "baseSha";
168167
var headSha = "headSha";
169168
var expectMergeBaseSha = "mergeBaseSha";
170169
var baseRef = "master";
171-
var headRef = "headRef";
170+
var pullNumber = 0;
172171
var repo = MockRepo(baseSha, headSha, expectMergeBaseSha);
173172
var gitClient = new GitClient(Substitute.For<IGitHubCredentialProvider>());
174173

175-
var mergeBaseSha = await gitClient.GetPullRequestMergeBase(repo, baseUrl, headUrl, baseSha, headSha, baseRef, headRef);
174+
var mergeBaseSha = await gitClient.GetPullRequestMergeBase(repo, targetCloneUrl, baseSha, headSha, baseRef, pullNumber);
176175

177176
repo.Network.DidNotReceiveWithAnyArgs().Fetch(null as Remote, null, null as FetchOptions);
178177
Assert.Equal(expectMergeBaseSha, mergeBaseSha);
179178
}
180179

181180
[Theory]
182-
[InlineData("https://github.com/owner/repo", "https://github.com/owner/repo", "baseSha", "headSha", "mergeBaseSha", 0)]
183-
[InlineData("https://github.com/owner/repo", "https://github.com/owner/repo", null, "headSha", "mergeBaseSha", 1)]
184-
[InlineData("https://github.com/owner/repo", "https://github.com/owner/repo", "baseSha", null, "mergeBaseSha", 1)]
185-
[InlineData("https://github.com/owner/repo", "https://github.com/owner/repo", "baseSha", "headSha", null, 0)]
186-
public async Task WhenToFetch(string baseUrl, string headUrl, string baseSha, string headSha, string mergeBaseSha, int receivedFetch)
181+
[InlineData("https://github.com/owner/repo", "baseSha", "headSha", "mergeBaseSha", 0)]
182+
[InlineData("https://github.com/owner/repo", null, "headSha", "mergeBaseSha", 1)]
183+
[InlineData("https://github.com/owner/repo", "baseSha", null, "mergeBaseSha", 1)]
184+
[InlineData("https://github.com/owner/repo", "baseSha", "headSha", null, 0)]
185+
public async Task WhenToFetch(string targetCloneUrl, string baseSha, string headSha, string mergeBaseSha, int receivedFetch)
187186
{
188-
var baseUri = new UriString(baseUrl);
189-
var headUri = new UriString(headUrl);
187+
var targetCloneUri = new UriString("https://github.com/owner/repo");
190188
var baseRef = "master";
191-
var headRef = "headRef";
189+
var pullNumber = 0;
192190
var repo = MockRepo(baseSha, headSha, mergeBaseSha);
193191
var remote = Substitute.For<Remote>();
194192
repo.Network.Remotes.Add(null, null).ReturnsForAnyArgs(remote);
195193
var gitClient = new GitClient(Substitute.For<IGitHubCredentialProvider>());
196194

197195
try
198196
{
199-
await gitClient.GetPullRequestMergeBase(repo, baseUri, headUri, baseSha, headSha, baseRef, headRef);
197+
await gitClient.GetPullRequestMergeBase(repo, targetCloneUri, baseSha, headSha, baseRef, pullNumber);
200198
}
201199
catch (NotFoundException) { /* We're interested in calls to Fetch even if it throws */ }
202200

203201
repo.Network.Received(receivedFetch).Fetch(Arg.Any<Remote>(), Arg.Any<string[]>(), Arg.Any<FetchOptions>());
204202
}
205203

206204
[Theory]
207-
[InlineData("baseSha", null, "mergeBaseSha", "baseRef", "headRef", "headRef")]
208-
[InlineData(null, "headSha", "mergeBaseSha", "baseRef", "headRef", "baseRef")]
209-
public async Task WhatToFetch(string baseSha, string headSha, string mergeBaseSha, string baseRef, string headRef,
205+
[InlineData("baseSha", null, "mergeBaseSha", "baseRef", 777, "refs/pull/777/head")]
206+
[InlineData(null, "headSha", "mergeBaseSha", "baseRef", 777, "baseRef")]
207+
public async Task WhatToFetch(string baseSha, string headSha, string mergeBaseSha, string baseRef, int pullNumber,
210208
string expectRefSpec)
211209
{
212210
var repo = MockRepo(baseSha, headSha, mergeBaseSha);
213-
var baseUrl = new UriString("https://github.com/owner/repo");
214-
var headUrl = new UriString("https://github.com/owner/repo");
211+
var targetCloneUri = new UriString("https://github.com/owner/repo");
215212
var gitClient = new GitClient(Substitute.For<IGitHubCredentialProvider>());
216213

217214
try
218215
{
219-
await gitClient.GetPullRequestMergeBase(repo, baseUrl, headUrl, baseSha, headSha, baseRef, headRef);
216+
await gitClient.GetPullRequestMergeBase(repo, targetCloneUri, baseSha, headSha, baseRef, pullNumber);
220217
}
221218
catch (NotFoundException) { /* We're interested in calls to Fetch even if it throws */ }
222219

src/UnitTests/GitHub.App/Services/PullRequestServiceTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,11 @@ static async Task<string> ExtractFile(
168168

169169
if (mergeBaseException == null)
170170
{
171-
gitClient.GetPullRequestMergeBase(Arg.Any<IRepository>(), Arg.Any<UriString>(), Arg.Any<UriString>(), baseSha, headSha, baseRef, headRef).ReturnsForAnyArgs(Task.FromResult(mergeBaseSha));
171+
gitClient.GetPullRequestMergeBase(Arg.Any<IRepository>(), Arg.Any<UriString>(), baseSha, headSha, baseRef, pullNumber).ReturnsForAnyArgs(Task.FromResult(mergeBaseSha));
172172
}
173173
else
174174
{
175-
gitClient.GetPullRequestMergeBase(Arg.Any<IRepository>(), Arg.Any<UriString>(), Arg.Any<UriString>(), baseSha, headSha, baseRef, headRef).ReturnsForAnyArgs(Task.FromException<string>(mergeBaseException));
175+
gitClient.GetPullRequestMergeBase(Arg.Any<IRepository>(), Arg.Any<UriString>(), baseSha, headSha, baseRef, pullNumber).ReturnsForAnyArgs(Task.FromException<string>(mergeBaseException));
176176
}
177177

178178
gitClient.ExtractFile(Arg.Any<IRepository>(), mergeBaseSha, fileName).Returns(GetFileTask(mergeBaseFileContent));

0 commit comments

Comments
 (0)