module_tests/package_required.tests.ps1
|
[CmdletBinding()] Param( [Parameter(Mandatory)] [String] $PackagePath ) BeforeAll { $packageData = Get-ChildItem $PackagePath -Recurse -Force } Describe 'Required Package Contents Tests' { Context 'Illegal files in package' { It 'Does not contain [Content_Types].xml' { $packageData | Where-Object Name -eq '[Content_Types].xml' | Should -BeNullOrEmpty -Because 'CPMR0004 - Do Not Package Internal Files (package)' } It 'Does not contain a _rels directory' { $packageData | Where-Object Name -eq '_rels' | Should -BeNullOrEmpty -Because 'CPMR0004 - Do Not Package Internal Files (package)' } It 'Does not contain files ending in .rels' { $packageData | Where-Object { $_.Extension -eq '.rels' } | Should -BeNullOrEmpty -Because 'CPMR0004 - Do Not Package Internal Files (package)' } It 'Does not contain files ending in .psmdcp' { $packageData | Where-Object { $_.Extension -eq '.psmdcp' } | Should -BeNullOrEmpty -Because 'CPMR0004 - Do Not Package Internal Files (package)' } It 'Does not contain source files' { '.git' -in $packageData.Name | Should -Be $false -Because 'CPMR0013 - Source Control Files Are Packaged (package)' } It 'Does not contain a .gitignore file' { '.gitignore' -in $packageData.Name | Should -Be $false -Because 'CPMR0025 - Source Control Ignore Files Are Packaged (package)' } } Context 'Scripts have been named properly' { BeforeDiscovery { $installScript = $packageData | Where-Object Name -eq 'chocolateyInstall.ps1' $uninstallScript = $packageData | Where-Object Name -eq 'chocolateyUninstall.ps1' } It 'Install script has the correct name' { 'chocolateyInstall.ps1' | Should -BeIn $packageData.Name -Because 'CPMR0003 - Install Script Named Incorrectly (package)' } It 'Uninstall script has the correct name' { 'chocolateyUninstall.ps1' | Should -BeIn $packageData.Name -Because 'CPMR0015 - Uninstall Script Named Incorrectly (script)' } } BeforeDiscovery { $matcher = '\.exe|\.msi' $binaries = $packageData | Where-Object { $_.Extension -match $matcher } } Context 'License.txt and Verification.txt exists for included binaries' { if ($binaries) { It 'LICENSE.txt is present' { 'LICENSE.txt' -in $packageData.Name | Should -Be $true -Because 'CPMR0005 - LICENSE.txt file missing when binaries included (package)' } It 'Verification.txt is present' { 'Verification.txt' -in $packageData.Name | Should -Be $true -Because 'CPMR0006 - VERIFICATION.txt file missing when binaries included (package)' } } } } |