mirror of
https://github.com/aphrody-labs/NuGet.Client.git
synced 2026-10-14 21:39:05 +00:00
159 lines
5.5 KiB
PowerShell
159 lines
5.5 KiB
PowerShell
Set-Variable DefaultRestoreTimeoutInSeconds 20 -Option Constant
|
|
|
|
function Test-NetCoreProjectExecuteInitScriptOnInstall {
|
|
param($context)
|
|
|
|
Remove-Variable PackageInitPS1Var -Scope Global -Force -ErrorAction Ignore
|
|
|
|
$componentModel = Get-VSComponentModel
|
|
$restoreEvents = $componentModel.GetService([NuGet.VisualStudio.IRestoreEvents])
|
|
|
|
$restoreEvent = $null
|
|
|
|
Get-Event | Remove-Event
|
|
Register-ObjectEvent -InputObject $restoreEvents -EventName SolutionRestoreCompleted -SourceIdentifier RestoreEventSource
|
|
|
|
Try {
|
|
$p = New-NetCoreConsoleApp
|
|
|
|
# Wait for initial restore
|
|
$restoreEvent = Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
Assert-NotNull $restoreEvent
|
|
Assert-AreEqual 'Succeeded' $restoreEvent.SourceEventArgs.RestoreStatus
|
|
|
|
# Act
|
|
$p | Install-Package PackageInitPS1 -Source $context.RepositoryRoot
|
|
|
|
$restoreEvent = Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
Assert-NotNull $restoreEvent
|
|
Assert-AreEqual 'Succeeded' $restoreEvent.SourceEventArgs.RestoreStatus
|
|
Assert-AreEqual 1 $global:PackageInitPS1Var
|
|
}
|
|
Finally {
|
|
Unregister-Event RestoreEventSource
|
|
}
|
|
}
|
|
|
|
function Test-NetCoreProjectExecuteInitScriptOnlyOnce {
|
|
[SkipTest('https://github.com/NuGet/Home/issues/7891')]
|
|
param($context)
|
|
|
|
Remove-Variable PackageInitPS1Var -Scope Global -Force -ErrorAction Ignore
|
|
|
|
$componentModel = Get-VSComponentModel
|
|
$restoreEvents = $componentModel.GetService([NuGet.VisualStudio.IRestoreEvents])
|
|
|
|
$restoreEvent = $null
|
|
|
|
Get-Event | Remove-Event
|
|
Register-ObjectEvent -InputObject $restoreEvents -EventName SolutionRestoreCompleted -SourceIdentifier RestoreEventSource
|
|
|
|
Try {
|
|
$p = New-NetCoreConsoleApp
|
|
|
|
# Wait for initial restore
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
|
|
$p | Install-Package PackageInitPS1 -Source $context.RepositoryRoot
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
|
|
# Act
|
|
$p | Install-Package NuGet.Versioning -Version 3.5.0
|
|
|
|
$restoreEvent = Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
Assert-NotNull $restoreEvent
|
|
Assert-AreEqual 'Succeeded' $restoreEvent.SourceEventArgs.RestoreStatus
|
|
Assert-AreEqual 1 $global:PackageInitPS1Var
|
|
}
|
|
Finally {
|
|
Unregister-Event RestoreEventSource
|
|
}
|
|
}
|
|
|
|
function Test-NetCoreProjectExecuteInitScriptAfterReopen {
|
|
[SkipTest('Needs diagnostics event. NuGet/Home#5625')]
|
|
param($context)
|
|
|
|
$componentModel = Get-VSComponentModel
|
|
$restoreEvents = $componentModel.GetService([NuGet.VisualStudio.IRestoreEvents])
|
|
|
|
$restoreEvent = $null
|
|
|
|
Get-Event | Remove-Event
|
|
Register-ObjectEvent -InputObject $restoreEvents -EventName SolutionRestoreCompleted -SourceIdentifier RestoreEventSource
|
|
|
|
Try {
|
|
$p = New-NetCoreConsoleApp
|
|
|
|
# Wait for initial restore
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
|
|
$p | Install-Package PackageInitPS1 -Source $context.RepositoryRoot
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
|
|
$p.Save($p.FullName)
|
|
|
|
$solutionFile = Get-SolutionFullName
|
|
SaveAs-Solution $solutionFile
|
|
Close-Solution
|
|
|
|
Remove-Variable PackageInitPS1Var -Scope Global -Force -ErrorAction Ignore
|
|
|
|
# Reset script execution cache
|
|
New-NetCoreConsoleApp
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
Close-Solution
|
|
|
|
# Act
|
|
Open-Solution $solutionFile
|
|
Wait-ForSolutionLoad
|
|
|
|
$restoreEvent = Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
Assert-NotNull $restoreEvent
|
|
Assert-AreEqual 'Succeeded' $restoreEvent.SourceEventArgs.RestoreStatus
|
|
|
|
Write-Verbose "Sleeping to let the host execute init scripts..."
|
|
Start-Sleep -s 10
|
|
Assert-AreEqual 1 $global:PackageInitPS1Var
|
|
}
|
|
Finally {
|
|
Unregister-Event RestoreEventSource
|
|
}
|
|
}
|
|
|
|
function Test-NetCoreProjectExecuteInitScriptOnSolutionRestore {
|
|
[SkipTest('Needs diagnostics event. NuGet/Home#5625')]
|
|
param($context)
|
|
|
|
$componentModel = Get-VSComponentModel
|
|
$restoreEvents = $componentModel.GetService([NuGet.VisualStudio.IRestoreEvents])
|
|
|
|
$restoreEvent = $null
|
|
|
|
Get-Event | Remove-Event
|
|
Register-ObjectEvent -InputObject $restoreEvents -EventName SolutionRestoreCompleted -SourceIdentifier RestoreEventSource
|
|
|
|
Try {
|
|
$p = New-NetCoreConsoleApp
|
|
|
|
# Wait for initial restore
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
|
|
$p | Install-Package PackageInitPS1 -Source $context.RepositoryRoot
|
|
Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
|
|
Remove-Variable PackageInitPS1Var -Scope Global -Force -ErrorAction Ignore
|
|
|
|
# Act
|
|
Build-Solution
|
|
|
|
$restoreEvent = Wait-Event -SourceIdentifier RestoreEventSource -TimeoutSec $DefaultRestoreTimeoutInSeconds
|
|
Assert-NotNull $restoreEvent
|
|
Assert-AreEqual 'Succeeded' $restoreEvent.SourceEventArgs.RestoreStatus
|
|
Assert-Null $global:PackageInitPS1Var
|
|
}
|
|
Finally {
|
|
Unregister-Event RestoreEventSource
|
|
}
|
|
}
|