Skip to content

Commit 3c02496

Browse files
committed
Fix positional binding, increase code cov by adding ContentType to a test
1 parent c9fb588 commit 3c02496

File tree

3 files changed

+73
-31
lines changed

3 files changed

+73
-31
lines changed

GitHubCore.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ function Invoke-GHRestMethod
283283
$params.Add("UseDefaultCredentials", $true)
284284
$params.Add("UseBasicParsing", $true)
285285
$params.Add("TimeoutSec", (Get-GitHubConfiguration -Name WebRequestTimeoutSec))
286-
if (-not [String]::IsNullOrWhiteSpace($InFile)) { $params.Add('InFile', $InFile) }
286+
if ($PSBoundParameters.ContainsKey('InFile')) { $params.Add('InFile', $InFile) }
287287
if (-not [String]::IsNullOrWhiteSpace($outFile)) { $params.Add('OutFile', $outFile) }
288288

289289
if (($Method -in $ValidBodyContainingRequestMethods) -and (-not [String]::IsNullOrEmpty($Body)))

GitHubReleases.ps1

Lines changed: 71 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,8 @@ filter New-GitHubRelease
309309
#>
310310
[CmdletBinding(
311311
SupportsShouldProcess,
312-
DefaultParameterSetName='Elements')]
312+
DefaultParameterSetName='Elements',
313+
PositionalBinding = $false)]
313314
[OutputType({$script:GitHubReleaseTypeName})]
314315
param(
315316
[Parameter(ParameterSetName='Elements')]
@@ -321,11 +322,14 @@ filter New-GitHubRelease
321322
[Parameter(
322323
Mandatory,
323324
ValueFromPipelineByPropertyName,
324-
ParameterSetName='Uri')]
325+
ParameterSetName='Uri',
326+
Position = 1)]
325327
[Alias('RepositoryUrl')]
326328
[string] $Uri,
327329

328-
[Parameter(Mandatory)]
330+
[Parameter(
331+
Mandatory,
332+
Position = 2)]
329333
[string] $Tag,
330334

331335
[Alias('Sha')]
@@ -476,7 +480,8 @@ filter Set-GitHubRelease
476480
#>
477481
[CmdletBinding(
478482
SupportsShouldProcess,
479-
DefaultParameterSetName='Elements')]
483+
DefaultParameterSetName='Elements',
484+
PositionalBinding = $false)]
480485
[OutputType({$script:GitHubReleaseTypeName})]
481486
param(
482487
[Parameter(ParameterSetName='Elements')]
@@ -488,13 +493,15 @@ filter Set-GitHubRelease
488493
[Parameter(
489494
Mandatory,
490495
ValueFromPipelineByPropertyName,
491-
ParameterSetName='Uri')]
496+
ParameterSetName='Uri',
497+
Position = 1)]
492498
[Alias('RepositoryUrl')]
493499
[string] $Uri,
494500

495501
[Parameter(
496502
Mandatory,
497-
ValueFromPipelineByPropertyName)]
503+
ValueFromPipelineByPropertyName,
504+
Position = 2)]
498505
[Alias('ReleaseId')]
499506
[int64] $Release,
500507

@@ -633,6 +640,7 @@ filter Remove-GitHubRelease
633640
[CmdletBinding(
634641
SupportsShouldProcess,
635642
DefaultParameterSetName='Elements',
643+
PositionalBinding = $false,
636644
ConfirmImpact='High')]
637645
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSReviewUnusedParameter", "", Justification="One or more parameters (like NoStatus) are only referenced by helper methods which get access to it from the stack via Get-Variable -Scope 1.")]
638646
[Alias('Delete-GitHubRelease')]
@@ -646,13 +654,15 @@ filter Remove-GitHubRelease
646654
[Parameter(
647655
Mandatory,
648656
ValueFromPipelineByPropertyName,
649-
ParameterSetName='Uri')]
657+
ParameterSetName='Uri',
658+
Position = 1)]
650659
[Alias('RepositoryUrl')]
651660
[string] $Uri,
652661

653662
[Parameter(
654663
Mandatory,
655-
ValueFromPipelineByPropertyName)]
664+
ValueFromPipelineByPropertyName,
665+
Position = 2)]
656666
[Alias('ReleaseId')]
657667
[int64] $Release,
658668

@@ -773,7 +783,9 @@ filter Get-GitHubReleaseAsset
773783
Downloads the asset 1234567890 to 'c:\users\PowerShellForGitHub\downloads\asset.zip' and
774784
overwrites the file that may already be there.
775785
#>
776-
[CmdletBinding(DefaultParameterSetName='Elements-List')]
786+
[CmdletBinding(
787+
DefaultParameterSetName='Elements-List',
788+
PositionalBinding = $false)]
777789
[OutputType({$script:GitHubReleaseAssetTypeName})]
778790
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSReviewUnusedParameter", "", Justification="One or more parameters (like NoStatus) are only referenced by helper methods which get access to it from the stack via Get-Variable -Scope 1.")]
779791
param(
@@ -790,54 +802,65 @@ filter Get-GitHubReleaseAsset
790802
[Parameter(
791803
Mandatory,
792804
ValueFromPipelineByPropertyName,
793-
ParameterSetName='Uri-Info')]
805+
ParameterSetName='Uri-Info',
806+
Position = 1)]
794807
[Parameter(
795808
Mandatory,
796809
ValueFromPipelineByPropertyName,
797-
ParameterSetName='Uri-Download')]
810+
ParameterSetName='Uri-Download',
811+
Position = 1)]
798812
[Parameter(
799813
Mandatory,
800814
ValueFromPipelineByPropertyName,
801-
ParameterSetName='Uri-List')]
815+
ParameterSetName='Uri-List',
816+
Position = 1)]
802817
[Alias('RepositoryUrl')]
803818
[string] $Uri,
804819

805820
[Parameter(
806821
Mandatory,
807822
ValueFromPipelineByPropertyName,
808-
ParameterSetName='Elements-List')]
823+
ParameterSetName='Elements-List',
824+
Position = 1)]
809825
[Parameter(
810826
Mandatory,
811827
ValueFromPipelineByPropertyName,
812-
ParameterSetName='Uri-List')]
828+
ParameterSetName='Uri-List',
829+
Position = 2)]
813830
[Alias('ReleaseId')]
814831
[int64] $Release,
815832

816833
[Parameter(
817834
Mandatory,
818835
ValueFromPipelineByPropertyName,
819-
ParameterSetName='Elements-Info')]
836+
ParameterSetName='Elements-Info',
837+
Position = 1)]
820838
[Parameter(
821839
Mandatory,
822840
ValueFromPipelineByPropertyName,
823-
ParameterSetName='Elements-Download')]
841+
ParameterSetName='Elements-Download',
842+
Position = 1)]
824843
[Parameter(
825844
Mandatory,
826845
ValueFromPipelineByPropertyName,
827-
ParameterSetName='Uri-Info')]
846+
ParameterSetName='Uri-Info',
847+
Position = 2)]
828848
[Parameter(
829849
Mandatory,
830850
ValueFromPipelineByPropertyName,
831-
ParameterSetName='Uri-Download')]
851+
ParameterSetName='Uri-Download',
852+
Position = 2)]
832853
[Alias('AssetId')]
833854
[int64] $Asset,
834855

835856
[Parameter(
836857
Mandatory,
837-
ParameterSetName='Elements-Download')]
858+
ParameterSetName='Elements-Download',
859+
Position = 2)]
838860
[Parameter(
839861
Mandatory,
840-
ParameterSetName='Uri-Download')]
862+
ParameterSetName='Uri-Download',
863+
Position = 3)]
841864
[string] $Path,
842865

843866
[Parameter(ParameterSetName='Elements-Download')]
@@ -1000,7 +1023,8 @@ filter New-GitHubReleaseAsset
10001023
#>
10011024
[CmdletBinding(
10021025
SupportsShouldProcess,
1003-
DefaultParameterSetName='Elements')]
1026+
DefaultParameterSetName='Elements',
1027+
PositionalBinding = $false)]
10041028
[OutputType({$script:GitHubReleaseAssetTypeName})]
10051029
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSReviewUnusedParameter", "", Justification="One or more parameters (like NoStatus) are only referenced by helper methods which get access to it from the stack via Get-Variable -Scope 1.")]
10061030
param(
@@ -1013,7 +1037,8 @@ filter New-GitHubReleaseAsset
10131037
[Parameter(
10141038
Mandatory,
10151039
ValueFromPipelineByPropertyName,
1016-
ParameterSetName='Uri')]
1040+
ParameterSetName='Uri',
1041+
Position = 1)]
10171042
[Parameter(
10181043
ValueFromPipelineByPropertyName,
10191044
ParameterSetName='UploadUrl')]
@@ -1022,14 +1047,25 @@ filter New-GitHubReleaseAsset
10221047

10231048
[Parameter(
10241049
Mandatory,
1025-
ValueFromPipelineByPropertyName)]
1050+
ValueFromPipelineByPropertyName,
1051+
ParameterSetName='Elements',
1052+
Position = 1)]
1053+
[Parameter(
1054+
Mandatory,
1055+
ValueFromPipelineByPropertyName,
1056+
ParameterSetName='Uri',
1057+
Position = 2)]
1058+
[Parameter(
1059+
ValueFromPipelineByPropertyName,
1060+
ParameterSetName='UploadUrl')]
10261061
[Alias('ReleaseId')]
10271062
[int64] $Release,
10281063

10291064
[Parameter(
10301065
Mandatory,
10311066
ValueFromPipelineByPropertyName,
1032-
ParameterSetName='UploadUrl')]
1067+
ParameterSetName='UploadUrl',
1068+
Position = 1)]
10331069
[string] $UploadUrl,
10341070

10351071
[Parameter(
@@ -1189,7 +1225,8 @@ filter Set-GitHubReleaseAsset
11891225
#>
11901226
[CmdletBinding(
11911227
SupportsShouldProcess,
1192-
DefaultParameterSetName='Elements')]
1228+
DefaultParameterSetName='Elements',
1229+
PositionalBinding = $false)]
11931230
[OutputType({$script:GitHubReleaseAssetTypeName})]
11941231
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSReviewUnusedParameter", "", Justification="One or more parameters (like NoStatus) are only referenced by helper methods which get access to it from the stack via Get-Variable -Scope 1.")]
11951232
param(
@@ -1202,13 +1239,15 @@ filter Set-GitHubReleaseAsset
12021239
[Parameter(
12031240
Mandatory,
12041241
ValueFromPipelineByPropertyName,
1205-
ParameterSetName='Uri')]
1242+
ParameterSetName='Uri',
1243+
Position = 1)]
12061244
[Alias('RepositoryUrl')]
12071245
[string] $Uri,
12081246

12091247
[Parameter(
12101248
Mandatory,
1211-
ValueFromPipelineByPropertyName)]
1249+
ValueFromPipelineByPropertyName,
1250+
Position = 2)]
12121251
[Alias('AssetId')]
12131252
[int64] $Asset,
12141253

@@ -1324,6 +1363,7 @@ filter Remove-GitHubReleaseAsset
13241363
[CmdletBinding(
13251364
SupportsShouldProcess,
13261365
DefaultParameterSetName='Elements',
1366+
PositionalBinding = $false,
13271367
ConfirmImpact='High')]
13281368
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSReviewUnusedParameter", "", Justification="One or more parameters (like NoStatus) are only referenced by helper methods which get access to it from the stack via Get-Variable -Scope 1.")]
13291369
[Alias('Delete-GitHubReleaseAsset')]
@@ -1337,13 +1377,15 @@ filter Remove-GitHubReleaseAsset
13371377
[Parameter(
13381378
Mandatory,
13391379
ValueFromPipelineByPropertyName,
1340-
ParameterSetName='Uri')]
1380+
ParameterSetName='Uri',
1381+
Position = 1)]
13411382
[Alias('RepositoryUrl')]
13421383
[string] $Uri,
13431384

13441385
[Parameter(
13451386
Mandatory,
1346-
ValueFromPipelineByPropertyName)]
1387+
ValueFromPipelineByPropertyName,
1388+
Position = 2)]
13471389
[Alias('AssetId')]
13481390
[int64] $Asset,
13491391

Tests/GitHubReleases.tests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ try
725725
Remove-Item -Path $tempPath -Recurse -ErrorAction SilentlyContinue -Force
726726
}
727727

728-
$asset = $release | New-GitHubReleaseAsset -Path $zipFile
728+
$asset = $release | New-GitHubReleaseAsset -Path $zipFile -ContentType 'application/zip'
729729
It "Has the expected content inside" {
730730
$result = $asset | Get-GitHubReleaseAsset -Path $downloadedZipFile -Force
731731
Expand-Archive -Path $downloadedZipFile -DestinationPath $tempPath

0 commit comments

Comments
 (0)