Exemple #1
0
        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");
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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}");
            }
        }
Exemple #6
0
        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));
        }