public void Pull_Request_To_Upstream_Repository() { var number = 777; var originUrl = "https://github.com/origin/repo"; var upstreamRemoteName = "upstream"; var upstreamUrl = "https://github.com/upstream/repo"; var prSha = "prSha"; var originRemote = CreateRemote("origin", originUrl); var upstreamRemote = CreateRemote(upstreamRemoteName, upstreamUrl); var repo = CreateRepository(prSha, "origin", "refs/heads/one", new[] { originRemote, upstreamRemote }); AddRemoteReferences(repo, originRemote, new Dictionary <string, string> { { "refs/heads/one", prSha } }); AddRemoteReferences(repo, upstreamRemote, new Dictionary <string, string> { { $"refs/pull/{number}/head", prSha } }); var target = new GitPullRequestService(); var gitHubRepositories = target.GetGitHubRepositories(repo); var prs = target.FindPullRequests(gitHubRepositories, repo.Head); var pr = prs.FirstOrDefault(); Assert.That(pr.Repository.Url, Is.EqualTo(upstreamUrl)); Assert.That(pr.Repository.RemoteName, Is.EqualTo(upstreamRemoteName)); Assert.That(pr.Number, Is.EqualTo(number)); }
void BrowsePullRequest(GitPullRequestService service, Repository repo) { var gitHubRepositories = service.GetGitHubRepositories(repo); var prs = service.FindPullRequests(gitHubRepositories, repo.Head); if (prs.Count > 0) { foreach (var pr in prs) { var prUrl = service.GetPullRequestUrl(pr.Repository, pr.Number); Browse(prUrl); } return; } var compareUrl = service.FindCompareUrl(gitHubRepositories, repo); if (compareUrl != null) { Browse(compareUrl); return; } Console.WriteLine("Couldn't find pull request or remote branch"); }
public void No_Pull_Request() { var repo = CreateRepository("sha", null, null, Array.Empty <Remote>()); var target = new GitPullRequestService(); var gitHubRepositories = target.GetGitHubRepositories(repo); var prs = target.FindPullRequests(gitHubRepositories, repo.Head); Assert.That(prs, Is.Empty); }
public void FindCompareUrl(string remoteName, string remoteUrl, string upstreamBranchCanonicalName, string referenceCanonicalName, string expectUrl) { var remote = remoteName != null?CreateRemote(remoteName, remoteUrl) : null; var remotes = remoteName != null ? new[] { remote } : Array.Empty <Remote>(); var repo = CreateRepository("headSha", remoteName, upstreamBranchCanonicalName, remotes); if (remote != null) { AddRemoteReferences(repo, remote, new Dictionary <string, string> { { referenceCanonicalName, "refSha" } }); } var target = new GitPullRequestService(); var gitHubRepositories = target.GetGitHubRepositories(repo); var compareUrl = target.FindCompareUrl(gitHubRepositories, repo); Assert.That(compareUrl, Is.EqualTo(expectUrl)); }
void ListBranches(GitPullRequestService service, Repository repo) { var gitHubRepositories = service.GetGitHubRepositories(repo); foreach (var branch in repo.Branches) { if (branch.IsRemote) { continue; } var prs = service.FindPullRequests(gitHubRepositories, branch); var pr = prs.FirstOrDefault(); if (pr == default) { continue; } var remotePrefix = pr.Repository.RemoteName != "origin" ? pr.Repository.RemoteName : ""; var remotePostfix = branch.RemoteName != "origin" ? $" ({branch.RemoteName})" : ""; Console.WriteLine($"{remotePrefix}#{pr.Number} {branch.FriendlyName}{remotePostfix}"); } }
public void Live_Pull_Request(string headSha, string prSha) { var number = 777; var remoteName = "origin"; var remoteUrl = "https://github.com/owner/repo"; var remote = CreateRemote(remoteName, remoteUrl); var repo = CreateRepository(headSha, "origin", "refs/heads/one", new[] { remote }); AddRemoteReferences(repo, remote, new Dictionary <string, string> { { "refs/heads/one", prSha }, { $"refs/pull/{number}/head", prSha } }); var target = new GitPullRequestService(); var gitHubRepositories = target.GetGitHubRepositories(repo); var prs = target.FindPullRequests(gitHubRepositories, repo.Head); var pr = prs.FirstOrDefault(); Assert.That(pr.Repository.RemoteName, Is.EqualTo(remoteName)); Assert.That(pr.Repository.Url, Is.EqualTo(remoteUrl)); Assert.That(pr.Number, Is.EqualTo(number)); }