Test: Ensure all scripts are not LE Unicode encoded
This commit is contained in:
parent
d1145e0540
commit
641eff706e
|
|
@ -0,0 +1,49 @@
|
|||
Set-StrictMode -Version Latest
|
||||
|
||||
$TestScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
|
||||
$ModuleRoot = Resolve-Path "$TestScriptRoot\.."
|
||||
|
||||
filter Assert-NotLittleEndianUnicode {
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(Mandatory = $True,
|
||||
ValueFromPipelineByPropertyName = $True,
|
||||
ValueFromPipeline = $True)]
|
||||
[Alias('FullName')]
|
||||
[String[]]
|
||||
$FilePath
|
||||
)
|
||||
|
||||
$LittleEndianMarker = 48111 # 0xBBEF
|
||||
|
||||
Write-Verbose "Current file: $FilePath"
|
||||
Write-Debug "Current file: $FilePath"
|
||||
|
||||
if ([System.IO.Directory]::Exists($FilePath)) {
|
||||
Write-Debug "File is a directory."
|
||||
return
|
||||
}
|
||||
|
||||
if (-not [System.IO.File]::Exists($FilePath)) {
|
||||
Write-Debug "File does not exist."
|
||||
return
|
||||
}
|
||||
|
||||
$FileBytes = Get-Content -TotalCount 3 -Encoding Byte -Path $FilePath
|
||||
|
||||
if ($FileBytes.Length -le 2) {
|
||||
Write-Debug "File must be at least 2 bytes in length."
|
||||
return
|
||||
}
|
||||
|
||||
if ([BitConverter]::ToUInt16($FileBytes, 0) -eq $LittleEndianMarker) {
|
||||
Write-Debug "File contains little endian unicode marker."
|
||||
throw "$_ is little-endian unicode encoded."
|
||||
}
|
||||
}
|
||||
|
||||
Describe 'ASCII encoding of all scripts' {
|
||||
It 'should not contain little-endian unicode encoded scripts or modules' {
|
||||
{ Get-ChildItem -Path $ModuleRoot -Recurse -Include *.ps1,*.psd1,*.psm1 | Assert-NotLittleEndianUnicode } | Should Not Throw
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue