public async Task<PullRequest> CreatePullRequest(string branchToMerge, string prTitleHalfway, string description, string targetUsername, string targetRepository, string targetBranch, string shortTargetBranchName) { var user = await this.client.User.Current(); var username = user.Login; var headRef = username + ":" + branchToMerge; var baseRef = targetBranch; var title = prTitleHalfway + " (" + shortTargetBranchName + ")"; var newPR = new NewPullRequest(title, headRef, baseRef); newPR.Body = description; try { var pullRequest = await this.client.Repository.PullRequest.Create(targetUsername, targetRepository, newPR); MessageBox.Show("Success! Created PR #" + pullRequest.Number + ": " + pullRequest.Title); return pullRequest; } catch (Octokit.ApiValidationException e) { MessageBox.Show(e.Message + "\n\n" + e.HttpResponse.Body); throw; } catch (Exception) { MessageBox.Show("Error!"); throw; } }
/// <summary> /// Create a pull request for the specified repository. /// </summary> /// <remarks>http://developer.github.com/v3/pulls/#create-a-pull-request</remarks> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="newPullRequest">A <see cref="NewPullRequest"/> instance describing the new PullRequest to create</param> /// <returns>A <see cref="PullRequest"/> result which was created on the server</returns> public Task<PullRequest> Create(string owner, string name, NewPullRequest newPullRequest) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(newPullRequest, "newPullRequest"); return ApiConnection.Post<PullRequest>(ApiUrls.PullRequests(owner, name), newPullRequest); }
public async Task CanCreate() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); Assert.Equal("a pull request", result.Title); }
public async Task CanCreate() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", "my-branch", "master"); var result = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); Assert.Equal("a pull request", result.Title); Assert.False(result.Merged); }
public async Task IgnoresOpenPullRequest() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var openPullRequests = new PullRequestRequest { State = ItemState.Closed }; var pullRequests = await _fixture.GetForRepository(Helper.UserName, _repository.Name, openPullRequests); Assert.Empty(pullRequests); }
public async Task CanGetForRepository() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var result = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var pullRequests = await _fixture.GetForRepository(Helper.UserName, _repository.Name); Assert.Equal(1, pullRequests.Count); Assert.Equal(result.Title, pullRequests[0].Title); }
public async Task CanGetOpenPullRequest() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var openPullRequests = new PullRequestRequest { State = ItemState.Open }; var pullRequests = await _fixture.GetAllForRepository(Helper.UserName, _context.RepositoryName, openPullRequests); Assert.Equal(1, pullRequests.Count); Assert.Equal(result.Title, pullRequests[0].Title); }
public static BuildTargetResult CreatePR(BuildTargetContext c) { string remoteBranchName = c.GetRemoteBranchName(); NewPullRequest prInfo = new NewPullRequest( PullRequestTitle, s_config.GitHubOriginOwner + ":" + remoteBranchName, s_config.GitHubUpstreamBranch); GitHubClient gitHub = new GitHubClient(new ProductHeaderValue("dotnetDependencyUpdater")); gitHub.Credentials = new Credentials(s_config.Password); PullRequest createdPR = gitHub.PullRequest.Create(s_config.GitHubUpstreamOwner, s_config.GitHubProject, prInfo).Result; c.Info($"Created Pull Request: {createdPR.HtmlUrl}"); return c.Success(); }
public async Task ReturnsCorrectCountOfPullRequestsWithoutStart() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var options = new ApiOptions { PageSize = 3, PageCount = 1 }; var pullRequests = await _fixture.GetAllForRepository(Helper.UserName, _context.RepositoryName, options); Assert.Equal(1, pullRequests.Count); Assert.Equal(result.Title, pullRequests[0].Title); }
public async Task CanClose() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var updatePullRequest = new PullRequestUpdate { State = ItemState.Closed }; var result = await _fixture.Update(Helper.UserName, _repository.Name, pullRequest.Number, updatePullRequest); Assert.Equal(ItemState.Closed, result.State); Assert.Equal(pullRequest.Title, result.Title); Assert.Equal(pullRequest.Body, result.Body); }
/// <summary> /// Create a pull request for the specified repository. /// </summary> /// <remarks>http://developer.github.com/v3/pulls/#create-a-pull-request</remarks> /// <param name="repositoryId">The Id of the repository</param> /// <param name="newPullRequest">A <see cref="NewPullRequest"/> instance describing the new PullRequest to create</param> public Task <PullRequest> Create(long repositoryId, NewPullRequest newPullRequest) { Ensure.ArgumentNotNull(newPullRequest, "newPullRequest"); return(ApiConnection.Post <PullRequest>(ApiUrls.PullRequests(repositoryId), newPullRequest)); }
public async Task CanBrowseCommits() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var result = await _fixture.Commits(Helper.UserName, _repository.Name, pullRequest.Number); Assert.Equal(1, result.Count); Assert.Equal("this is the commit to merge into the pull request", result[0].Commit.Message); }
public async Task CanBeMerged() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var merge = new MergePullRequest("thing the thing"); var result = await _fixture.Merge(Helper.UserName, _repository.Name, pullRequest.Number, merge); Assert.True(result.Merged); }
public async Task CanSpecifyDirectionOfSort() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var newPullRequest2 = new NewPullRequest("another pull request", otherBranchName, "master"); var anotherPullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest2); var pullRequests = await _fixture.GetForRepository(Helper.UserName, _repository.Name, new PullRequestRequest { SortDirection = SortDirection.Ascending }); Assert.Equal(pullRequest.Title, pullRequests[0].Title); var pullRequestsDescending = await _fixture.GetForRepository(Helper.UserName, _repository.Name, new PullRequestRequest()); Assert.Equal(anotherPullRequest.Title, pullRequestsDescending[0].Title); }
public async Task ReturnsDistinctPullRequestsBasedOnStartPage() { await CreateTheWorld(); var newPullRequest1 = new NewPullRequest("a pull request 1", branchName, "master"); var newPullRequest2 = new NewPullRequest("a pull request 2", otherBranchName, "master"); await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest1); await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest2); var startOptions = new ApiOptions { PageSize = 1, PageCount = 1 }; var firstPage = await _fixture.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, startOptions); var skipStartOptions = new ApiOptions { PageSize = 1, PageCount = 1, StartPage = 2 }; var secondPage = await _fixture.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, skipStartOptions); Assert.NotEqual(firstPage[0].Title, secondPage[0].Title); }
public async Task UpdatesMaster() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var merge = new MergePullRequest { CommitMessage = "thing the thing" }; var result = await _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge); var master = await _github.Git.Reference.Get(Helper.UserName, _context.RepositoryName, "heads/master"); Assert.Equal(result.Sha, master.Object.Sha); }
public async Task CannotBeMergedDueNotInMergeableState() { await CreateTheWorld(); var master = await _github.Git.Reference.Get(Helper.UserName, _context.RepositoryName, "heads/master"); var newMasterTree = await CreateTree(new Dictionary<string, string> { { "README.md", "Hello World, we meet again!" } }); var masterCommit = await CreateCommit("Commit in master", newMasterTree.Sha, master.Object.Sha); await _github.Git.Reference.Update(Helper.UserName, _context.RepositoryName, "heads/master", new ReferenceUpdate(masterCommit.Sha)); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); await Task.Delay(TimeSpan.FromSeconds(5)); var updatedPullRequest = await _fixture.Get(Helper.UserName, _context.RepositoryName, pullRequest.Number); Assert.False(updatedPullRequest.Mergeable); var merge = new MergePullRequest { Sha = pullRequest.Head.Sha }; var ex = await Assert.ThrowsAsync<PullRequestNotMergeableException>(() => _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge)); Assert.True(ex.Message.Equals("Pull Request is not mergeable")); }
public async Task CanBeMergedWithSquashCommit() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("squash commit pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var merge = new MergePullRequest { CommitMessage = "fake commit message", CommitTitle = "fake title", Squash = true }; var result = await _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge); var commit = await _github.Repository.Commit.Get(_context.RepositoryOwner, _context.RepositoryName, result.Sha); var message = commit.Commit.Message; Assert.True(result.Merged); Assert.Equal("fake title\n\nfake commit message", commit.Commit.Message); }
public async Task CanFindClosedPullRequest() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var updatePullRequest = new PullRequestUpdate { State = ItemState.Closed }; await _fixture.Update(Helper.UserName, _repository.Name, pullRequest.Number, updatePullRequest); var closedPullRequests = new PullRequestRequest { State = ItemState.Closed }; var pullRequests = await _fixture.GetForRepository(Helper.UserName, _repository.Name, closedPullRequests); Assert.Equal(1, pullRequests.Count); }
/// <summary> /// Creates the base state for testing (creates a repo, a commit in master, a branch, a commit in the branch and a pull request) /// </summary> /// <returns></returns> async Task<PullRequestData> CreatePullRequest(RepositoryContext context) { var repoName = context.RepositoryName; // Creating a commit in master var createdCommitInMaster = await CreateCommit(repoName, "Hello World!", "README.md", "heads/master", "A master commit message"); // Creating a branch var newBranch = new NewReference(branchRef, createdCommitInMaster.Sha); await _github.Git.Reference.Create(Helper.UserName, repoName, newBranch); // Creating a commit in the branch var createdCommitInBranch = await CreateCommit(repoName, "Hello from the fork!", path, branchHead, "A branch commit message"); // Creating a pull request var pullRequest = new NewPullRequest("Nice title for the pull request", branchName, "master"); var createdPullRequest = await _github.PullRequest.Create(Helper.UserName, repoName, pullRequest); var data = new PullRequestData { Sha = createdCommitInBranch.Sha, Number = createdPullRequest.Number, }; return data; }
public async Task CanSortPullRequests() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var newPullRequest2 = new NewPullRequest("another pull request", otherBranchName, "master"); var anotherPullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest2); var updatePullRequest = new PullRequestUpdate { Body = "This is the body" }; await _fixture.Update(Helper.UserName, _repository.Name, pullRequest.Number, updatePullRequest); var sortPullRequestsByUpdated = new PullRequestRequest { SortProperty = PullRequestSort.Updated, SortDirection = SortDirection.Ascending }; var pullRequests = await _fixture.GetForRepository(Helper.UserName, _repository.Name, sortPullRequestsByUpdated); Assert.Equal(anotherPullRequest.Title, pullRequests[0].Title); var sortPullRequestsByLongRunning = new PullRequestRequest { SortProperty = PullRequestSort.LongRunning }; var pullRequestsByLongRunning = await _fixture.GetForRepository(Helper.UserName, _repository.Name, sortPullRequestsByLongRunning); Assert.Equal(pullRequest.Title, pullRequestsByLongRunning[0].Title); }
public async Task CanUpdateWithRepositoryId() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var updatePullRequest = new PullRequestUpdate { Title = "updated title", Body = "Hello New Body", Base = "my-other-branch" }; var result = await _fixture.Update(_context.Repository.Id, pullRequest.Number, updatePullRequest); Assert.Equal(updatePullRequest.Title, result.Title); Assert.Equal(updatePullRequest.Body, result.Body); Assert.Equal(updatePullRequest.Base, result.Base.Ref); }
public async Task IsNotMergedInitially() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var result = await _fixture.Merged(Helper.UserName, _repository.Name, pullRequest.Number); Assert.False(result); }
public async Task CanUpdate() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var updatePullRequest = new PullRequestUpdate { Title = "updated title", Body = "Hello New Body" }; var result = await _fixture.Update(Helper.UserName, _repository.Name, pullRequest.Number, updatePullRequest); Assert.Equal(updatePullRequest.Title, result.Title); Assert.Equal(updatePullRequest.Body, result.Body); }
public async Task UpdatesMaster() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); var merge = new MergePullRequest("thing the thing"); var result = await _fixture.Merge(Helper.UserName, _repository.Name, pullRequest.Number, merge); var master = await _client.GitDatabase.Reference.Get(Helper.UserName, _repository.Name, "heads/master"); Assert.Equal(result.Sha, master.Object.Sha); }
/// <summary> /// Create a pull request for the specified repository. /// </summary> /// <remarks>http://developer.github.com/v3/pulls/#create-a-pull-request</remarks> /// <param name="repositoryId">The Id of the repository</param> /// <param name="newPullRequest">A <see cref="NewPullRequest"/> instance describing the new PullRequest to create</param> public Task<PullRequest> Create(long repositoryId, NewPullRequest newPullRequest) { Ensure.ArgumentNotNull(newPullRequest, "newPullRequest"); return ApiConnection.Post<PullRequest>(ApiUrls.PullRequests(repositoryId), newPullRequest); }
public async Task CanGetCommitsAndCommentCount() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _repository.Name, newPullRequest); // create new commit for branch const string commitMessage = "Another commit in branch"; var branch = await _client.GitDatabase.Reference.Get(Helper.UserName, _repository.Name, "heads/" + branchName); var newTree = await CreateTree(new Dictionary<string, string> { { "README.md", "Hello World!" } }); var newCommit = await CreateCommit(commitMessage, newTree.Sha, branch.Object.Sha); await _client.GitDatabase.Reference.Update(Helper.UserName, _repository.Name, "heads/" + branchName, new ReferenceUpdate(newCommit.Sha)); await _repositoryCommentsClient.Create(Helper.UserName, _repository.Name, newCommit.Sha, new NewCommitComment("I am a nice comment") { Path = "README.md", Position = 1 }); // don't try this at home await Task.Delay(TimeSpan.FromSeconds(5)); var result = await _fixture.Commits(Helper.UserName, _repository.Name, pullRequest.Number); Assert.Equal(2, result.Count); Assert.Equal("this is the commit to merge into the pull request", result[0].Commit.Message); Assert.Equal(0, result[0].Commit.CommentCount); Assert.Equal(commitMessage, result[1].Commit.Message); Assert.Equal(1, result[1].Commit.CommentCount); }
public async Task CannotBeMerged() { await CreateTheWorld(); var fakeSha = new string('f', 40); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var merge = new MergePullRequest { Sha = fakeSha }; var ex = await Assert.ThrowsAsync<ApiException>(() => _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge)); Assert.True(ex.ApiError.Message.StartsWith("Head branch was modified")); }
public async Task CanBeMergedWithNoOptionalInput() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var merge = new MergePullRequest(); var result = await _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge); Assert.True(result.Merged); }
public async Task ReturnsCorrectCountOfPullRequestsWithStartParameterized() { await CreateTheWorld(); var newPullRequest1 = new NewPullRequest("a pull request 1", branchName, "master"); var newPullRequest2 = new NewPullRequest("a pull request 2", otherBranchName, "master"); await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest1); var result = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest2); var options = new ApiOptions { PageSize = 1, PageCount = 1, StartPage = 1 }; var openPullRequests = new PullRequestRequest { State = ItemStateFilter.Open }; var pullRequests = await _fixture.GetAllForRepository(Helper.UserName, _context.RepositoryName, openPullRequests, options); Assert.Equal(1, pullRequests.Count); Assert.Equal(result.Title, pullRequests[0].Title); }
public Task <PullRequest> Create(long repositoryId, NewPullRequest newPullRequest) { Ensure.ArgumentNotNull(newPullRequest, nameof(newPullRequest)); return(ApiConnection.Post <PullRequest>(ApiUrls.PullRequests(repositoryId), newPullRequest, AcceptHeaders.DraftPullRequestApiPreview)); }
public async Task CanBeMergedWithShaSpecified() { await CreateTheWorld(); var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var merge = new MergePullRequest { CommitMessage = "thing the thing", Sha = pullRequest.Head.Sha }; var result = await _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge); Assert.True(result.Merged); }