Skip to content

Commit b976e95

Browse files
authored
New/Set-GitHubRepository: Add AllowAutoMerge Parameter
Adds the `AllowAutoMerge` parameter to the `New-GitHubRepository` and `Set-GitHubRepository` functions. Fixes #357 References: - https://docs.github.com./en/rest/repos/repos#create-an-organization-repository - https://docs.github.com./en/rest/repos/repos#update-a-repository
1 parent 3ccee43 commit b976e95

File tree

2 files changed

+60
-2
lines changed

2 files changed

+60
-2
lines changed

Diff for: GitHubRepositories.ps1

+12
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ filter New-GitHubRepository
8686
By default, rebase-merge pull requests will be allowed.
8787
Specify this to disallow.
8888
89+
.PARAMETER AllowAutoMerge
90+
Specifies whether to allow auto-merge on pull requests.
91+
8992
.PARAMETER DeleteBranchOnMerge
9093
Specifies the automatic deleting of head branches when pull requests are merged.
9194
@@ -165,6 +168,8 @@ filter New-GitHubRepository
165168

166169
[switch] $DisallowRebaseMerge,
167170

171+
[switch] $AllowAutoMerge,
172+
168173
[switch] $DeleteBranchOnMerge,
169174

170175
[switch] $IsTemplate,
@@ -211,6 +216,7 @@ filter New-GitHubRepository
211216
if ($PSBoundParameters.ContainsKey('DisallowSquashMerge')) { $hashBody['allow_squash_merge'] = (-not $DisallowSquashMerge.ToBool()) }
212217
if ($PSBoundParameters.ContainsKey('DisallowMergeCommit')) { $hashBody['allow_merge_commit'] = (-not $DisallowMergeCommit.ToBool()) }
213218
if ($PSBoundParameters.ContainsKey('DisallowRebaseMerge')) { $hashBody['allow_rebase_merge'] = (-not $DisallowRebaseMerge.ToBool()) }
219+
if ($PSBoundParameters.ContainsKey('AllowAutoMerge')) { $hashBody['allow_auto_merge'] = $AllowAutoMerge.ToBool() }
214220
if ($PSBoundParameters.ContainsKey('DeleteBranchOnMerge')) { $hashBody['delete_branch_on_merge'] = $DeleteBranchOnMerge.ToBool() }
215221
if ($PSBoundParameters.ContainsKey('IsTemplate')) { $hashBody['is_template'] = $IsTemplate.ToBool() }
216222

@@ -1066,6 +1072,9 @@ filter Set-GitHubRepository
10661072
By default, rebase-merge pull requests will be allowed.
10671073
Specify this to disallow.
10681074
1075+
.PARAMETER AllowAutoMerge
1076+
Specifies whether to allow auto-merge on pull requests.
1077+
10691078
.PARAMETER DeleteBranchOnMerge
10701079
Specifies the automatic deleting of head branches when pull requests are merged.
10711080
@@ -1170,6 +1179,8 @@ filter Set-GitHubRepository
11701179

11711180
[switch] $DisallowRebaseMerge,
11721181

1182+
[switch] $AllowAutoMerge,
1183+
11731184
[switch] $DeleteBranchOnMerge,
11741185

11751186
[switch] $IsTemplate,
@@ -1215,6 +1226,7 @@ filter Set-GitHubRepository
12151226
if ($PSBoundParameters.ContainsKey('DisallowSquashMerge')) { $hashBody['allow_squash_merge'] = (-not $DisallowSquashMerge.ToBool()) }
12161227
if ($PSBoundParameters.ContainsKey('DisallowMergeCommit')) { $hashBody['allow_merge_commit'] = (-not $DisallowMergeCommit.ToBool()) }
12171228
if ($PSBoundParameters.ContainsKey('DisallowRebaseMerge')) { $hashBody['allow_rebase_merge'] = (-not $DisallowRebaseMerge.ToBool()) }
1229+
if ($PSBoundParameters.ContainsKey('AllowAutoMerge')) { $hashBody['allow_auto_merge'] = $AllowAutoMerge.ToBool() }
12181230
if ($PSBoundParameters.ContainsKey('DeleteBranchOnMerge')) { $hashBody['delete_branch_on_merge'] = $DeleteBranchOnMerge.ToBool() }
12191231
if ($PSBoundParameters.ContainsKey('IsTemplate')) { $hashBody['is_template'] = $IsTemplate.ToBool() }
12201232
if ($PSBoundParameters.ContainsKey('Archived')) { $hashBody['archived'] = $Archived.ToBool() }

Diff for: Tests/GitHubRepositories.tests.ps1

+48-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Describe 'GitHubRepositories\New-GitHubRepository' {
105105
}
106106
}
107107

108-
Context -Name 'When creating a repository with all possible settings' -Fixture {
108+
Context -Name 'When creating a public repository with all possible settings' -Fixture {
109109
BeforeAll -ScriptBlock {
110110
$repoName = ([Guid]::NewGuid().Guid)
111111
$testGitIgnoreTemplate = (Get-GitHubGitIgnore)[0]
@@ -122,6 +122,7 @@ Describe 'GitHubRepositories\New-GitHubRepository' {
122122
DisallowSquashMerge = $true
123123
DisallowMergeCommit = $true
124124
DisallowRebaseMerge = $false
125+
AllowAutoMerge = $true
125126
DeleteBranchOnMerge = $true
126127
GitIgnoreTemplate = $testGitIgnoreTemplate
127128
LicenseTemplate = $testLicenseTemplate
@@ -146,6 +147,7 @@ Describe 'GitHubRepositories\New-GitHubRepository' {
146147
$repo.allow_squash_merge | Should -BeFalse
147148
$repo.allow_merge_commit | Should -BeFalse
148149
$repo.allow_rebase_merge | Should -BeTrue
150+
$repo.allow_auto_merge | Should -BeTrue
149151
$repo.delete_branch_on_merge | Should -BeTrue
150152
$repo.is_template | Should -BeTrue
151153
}
@@ -166,14 +168,15 @@ Describe 'GitHubRepositories\New-GitHubRepository' {
166168
}
167169
}
168170

169-
Context -Name 'When creating a repository with alternative Merge settings' -Fixture {
171+
Context -Name 'When creating a public repository with alternative Merge settings' -Fixture {
170172
BeforeAll -ScriptBlock {
171173
$repoName = ([Guid]::NewGuid().Guid)
172174
$newGitHubRepositoryParms = @{
173175
RepositoryName = $repoName
174176
DisallowSquashMerge = $true
175177
DisallowMergeCommit = $false
176178
DisallowRebaseMerge = $true
179+
AllowAutoMerge = $false
177180
}
178181
$repo = New-GitHubRepository @newGitHubRepositoryParms
179182
}
@@ -187,6 +190,7 @@ Describe 'GitHubRepositories\New-GitHubRepository' {
187190
$repo.allow_squash_merge | Should -BeFalse
188191
$repo.allow_merge_commit | Should -BeTrue
189192
$repo.allow_rebase_merge | Should -BeFalse
193+
$repo.allow_auto_merge | Should -BeFalse
190194
}
191195

192196
AfterAll -ScriptBlock {
@@ -719,6 +723,48 @@ Describe 'GitHubRepositories\Set-GitHubRepository' {
719723
$repo = New-GitHubRepository -RepositoryName $repoName
720724
}
721725

726+
Context -Name 'When updating a public repository with auto-merge set to true' {
727+
BeforeAll -ScriptBlock {
728+
$updateGithubRepositoryParms = @{
729+
OwnerName = $repo.owner.login
730+
RepositoryName = $repoName
731+
AllowAutoMerge = $true
732+
}
733+
734+
$updatedRepo = Set-GitHubRepository @updateGithubRepositoryParms -PassThru
735+
}
736+
737+
It 'Should return an object of the correct type' {
738+
$updatedRepo | Should -BeOfType PSCustomObject
739+
}
740+
741+
It 'Should return the correct properties' {
742+
$updatedRepo.name | Should -Be $repoName
743+
$updatedRepo.allow_auto_merge | Should -BeTrue
744+
}
745+
}
746+
747+
Context -Name 'When updating a public repository with auto-merge set to false' {
748+
BeforeAll -ScriptBlock {
749+
$updateGithubRepositoryParms = @{
750+
OwnerName = $repo.owner.login
751+
RepositoryName = $repoName
752+
AllowAutoMerge = $false
753+
}
754+
755+
$updatedRepo = Set-GitHubRepository @updateGithubRepositoryParms -PassThru
756+
}
757+
758+
It 'Should return an object of the correct type' {
759+
$updatedRepo | Should -BeOfType PSCustomObject
760+
}
761+
762+
It 'Should return the correct properties' {
763+
$updatedRepo.name | Should -Be $repoName
764+
$updatedRepo.allow_auto_merge | Should -BeFalse
765+
}
766+
}
767+
722768
Context -Name 'When updating a repository with all possible settings' {
723769
BeforeAll -ScriptBlock {
724770
$updateGithubRepositoryParms = @{

0 commit comments

Comments
 (0)