public async Task <PullRequest> Merge(PullRequest pullRequest, string projectKey)
        {
            string requestUrl = UrlBuilder.FormatRestApiUrl(PULL_REQUEST_MERGE, null, projectKey,
                                                            pullRequest.FromRef.Repository.Slug, pullRequest.Id, pullRequest.Version);

            try
            {
                PullRequest pr = await _httpWorker.PostAsync <PullRequest>(requestUrl, null).ConfigureAwait(false);

                return(pr);
            }
            catch (Exception ex)
            {
                if (ex.Data["json"] != null)
                {
                    MergeErrorResponse error = JsonConvert.DeserializeObject <MergeErrorResponse>((string)ex.Data["json"]);
                    throw new StashMergeException("Merge failure", ex, error);
                }
                throw;
            }
        }
        public async Task Merge_PullRequest()
        {
            var pullrequests = await stashClient.PullRequests.Get(EXISTING_PROJECT, EXISTING_REPOSITORY);

            var request = pullrequests.Values.First();
            var status  = await stashClient.PullRequests.Status(request, EXISTING_PROJECT);

            Assert.IsNotNull(status);
            PullRequest        requestMerged = null;
            MergeErrorResponse stashError    = null;

            try
            {
                requestMerged = await stashClient.PullRequests.Merge(request, EXISTING_PROJECT);
            }
            catch (StashMergeException exc)
            {
                stashError = exc.ErrorResponse;
            }

            if (stashError == null)
            {
                Console.WriteLine("Pull Request Merged");
                Assert.IsNotNull(requestMerged);
                Assert.AreEqual(true, status.CanMerge);
                Assert.AreEqual(status.CanMerge, requestMerged.State == PullRequestState.MERGED);
            }
            else
            {
                Console.WriteLine("Pull Request failed to merge");
                Assert.AreEqual(false, status.CanMerge);
                foreach (var error in stashError.Errors)
                {
                    Assert.AreEqual(true, error.Conflicted);
                }
            }
        }
Exemple #3
0
 public StashMergeException(string message, MergeErrorResponse response) : base(message)
 {
     ErrorResponse = response;
 }