Skip to content

Commit

Permalink
Merge pull request chocolatey#2544 from corbob/2539_fix_script_signing
Browse files Browse the repository at this point in the history
(chocolatey#2539) Fix script signing issue
  • Loading branch information
gep13 authored Jan 25, 2022
2 parents 14f68c8 + df817e0 commit 6f3b2fb
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 3 deletions.
2 changes: 1 addition & 1 deletion GenerateDocs.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright © 2017 Chocolatey Software, Inc
# Copyright © 2017 Chocolatey Software, Inc
# Copyright © 2011 - 2017 RealDimensions Software, LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
Expand Down
75 changes: 75 additions & 0 deletions ScriptFormat.Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#Requires -Module @{ ModuleName = 'pester'; ModuleVersion = '5.3.1' }

Describe "Verifying integrity of module files" {
BeforeDiscovery {
$FilesToVerify = Get-ChildItem -Include '*.psm1', '*.ps1' -Recurse
$DirectoriesToExclude = @(
# These directories contain dependencies we bring in, we don't control their file formats
'lib'
'packages'
'.nuget'
# These directories contain output of builds, if there's anything in these with "bad" formatting it's likely an old build, or not relevant
'bin'
'obj'
# This directory currently contains scripts to assist in creating the docker container. It is not formatted and should not require signing (at this time)
'docker'
# These directories contain uppercut configurations. Here be dragons
'.build'
'.build.custom'
# GitHub/git configs. No PowerShell here?
'.github'
'.git'
)
$Slash = [System.IO.Path]::DirectorySeparatorChar
$FilesBeingTested = $FilesToVerify | Where-Object { $null -ne $env:CHOCO_TEST_ALL -or $_.FullName -notmatch "\$Slash($($DirectoriesToExclude -join '|'))\$Slash" }
}

BeforeAll {
function Get-FileEncoding {
<#
.SYNOPSIS
Tests a file for encoding.
.DESCRIPTION
Tests a file for encoding.
.PARAMETER Path
The file to test
#>
[CmdletBinding()]
Param (
[Parameter(Mandatory = $True, ValueFromPipelineByPropertyName = $True)]
[Alias('FullName')]
[string]
$Path
)

if ($PSVersionTable.PSVersion.Major -lt 6) {
[byte[]]$byte = get-content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $Path
}
else {
[byte[]]$byte = Get-Content -AsByteStream -ReadCount 4 -TotalCount 4 -Path $Path
}

if ($byte[0] -eq 0xef -and $byte[1] -eq 0xbb -and $byte[2] -eq 0xbf) { 'UTF8 BOM' }
elseif ($byte[0] -eq 0xfe -and $byte[1] -eq 0xff) { 'Unicode' }
elseif ($byte[0] -eq 0 -and $byte[1] -eq 0 -and $byte[2] -eq 0xfe -and $byte[3] -eq 0xff) { 'UTF32' }
elseif ($byte[0] -eq 0x2b -and $byte[1] -eq 0x2f -and $byte[2] -eq 0x76) { 'UTF7' }
else { 'Unknown' }
}
}

Context "Validating PowerShell file <_.FullName>" -Foreach $FilesBeingTested {
BeforeAll {
$FileUnderTest = $_
}

It "Should have Byte Order Mark" {
Get-FileEncoding -Path $FileUnderTest.FullName | Should -Be 'UTF8 BOM'
}

It "Should have 'CRLF' Line Endings" {
(Get-Content $FileUnderTest -Raw) -match '([^\r]\n|\r[^\n])' | Should -BeFalse
}
}
}
2 changes: 1 addition & 1 deletion setup.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### install chocolatey ###
### install chocolatey ###
if(-not $env:ChocolateyInstall -or -not (Test-Path "$env:ChocolateyInstall")){
iex ((new-object net.webclient).DownloadString("https://community.chocolatey.org/install.ps1"))
}
Expand Down
2 changes: 1 addition & 1 deletion src/chocolatey.resources/helpers/chocolateyInstaller.psm1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright © 2017 - 2021 Chocolatey Software, Inc.
# Copyright © 2017 - 2021 Chocolatey Software, Inc.
# Copyright © 2015 - 2017 RealDimensions Software, LLC
# Copyright © 2011 - 2015 RealDimensions Software, LLC & original authors/contributors from https://github.com/chocolatey/chocolatey
#
Expand Down

0 comments on commit 6f3b2fb

Please sign in to comment.