113 lines
6.7 KiB
PowerShell
113 lines
6.7 KiB
PowerShell
. $PSScriptRoot\..\..\Load-PesterModules.ps1
|
|
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.'
|
|
$functionPath = Join-Path -Path $here -ChildPath $sut
|
|
Write-Host "Overriding SUT: $functionPath"
|
|
Import-Module $functionPath -Force
|
|
$moduleForMock = ""
|
|
|
|
|
|
Describe "Invoke-ChocoInstallPackagesPrivate" {
|
|
Mock Invoke-Expression -ModuleName $moduleForMock { }
|
|
|
|
Context "build version" {
|
|
BeforeEach {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { return @{Name = "dummyPackage"; Version = "1.3.2" } }
|
|
}
|
|
|
|
It "null -> 1.3.3 should not contain --allow-downgrade --ignore-dependencies" {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { }
|
|
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "1.3.3" } -Verbose
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -notlike "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "1.3.2 -> 1.3.3 should not contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "1.3.3" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -notlike "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "1.3.2 -> 1.3.2 should contain--ignore-dependencies; not --allow-downgrade" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "1.3.2" } -forceSameVersion
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -like "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "1.3.2 -> 1.3.1 should contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "1.3.1" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -like "*--allow-downgrade*") -or ($command -like "*--ignore-dependencies*") }
|
|
}
|
|
}
|
|
|
|
Context "pre version" {
|
|
BeforeEach {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { return @{Name = "dummyPackage"; Version = "6.6.6-pre666" } }
|
|
}
|
|
|
|
It "null -> 6.6.6-pre666 should not contain --allow-downgrade --ignore-dependencies" {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { }
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "6.6.6-pre666" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -notlike "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "6.6.6-pre666 -> 6.6.6-pre777 should not contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "6.6.6-pre777" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -notlike "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "6.6.6-pre666 -> 6.6.6-pre666 should contain--ignore-dependencies; not --allow-downgrade " {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "6.6.6-pre666" } -forceSameVersion
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -like "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "6.6.6-pre666 -> 6.6.6-pre111 should contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "6.6.6-pre111" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -like "*--allow-downgrade*") -and ($command -like "*--ignore-dependencies*") }
|
|
}
|
|
}
|
|
Context "major minor version" {
|
|
BeforeEach {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { return @{Name = "dummyPackage"; Version = "7.7.7" } }
|
|
}
|
|
|
|
It "7.7.7 -> 8.8.8 should not contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "8.8.8" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -notlike "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "7.7.7 -> 2.2.2 should contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "2.2.2" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -like "*--allow-downgrade*") -and ($command -like "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "7.7.7 -> 8.9.8 should not contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "8.9.8" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -notlike "*--allow-downgrade*") -and ($command -notlike "*--ignore-dependencies*") }
|
|
}
|
|
|
|
It "7.7.7 -> 7.6.7 should contain --allow-downgrade --ignore-dependencies" {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "7.6.7" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -ParameterFilter { ($command -like "*--allow-downgrade*") -and ($command -like "*--ignore-dependencies*") }
|
|
}
|
|
}
|
|
|
|
Context "Skip Needless Installs" {
|
|
BeforeEach {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { return @{Name = "dummyPackage"; Version = "1.3.2" } }
|
|
}
|
|
It "Skips installing a package that already exists." {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "1.3.2" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -Times 0
|
|
}
|
|
}
|
|
|
|
Context "feat versions" {
|
|
BeforeEach {
|
|
Mock Get-ChocoState -ModuleName $moduleForMock { return @{Name = "dummyPackage"; Version = "1.3.2-feat-some-long-version-038" } }
|
|
}
|
|
It "1.3.2-feat-038 -> 1.3.2-feat-039 upgrade should trigger install." {
|
|
Invoke-ChocoInstallPackagesPrivate -packages @{Name = "dummyPackage"; Version = "1.3.2-feat-some-long-version-039" }
|
|
Assert-MockCalled Invoke-Expression -ModuleName $moduleForMock -Times 1
|
|
}
|
|
}
|
|
}
|