mirror of
https://github.com/actions/setup-dotnet.git
synced 2025-04-08 00:09:47 +00:00
Update e2e test infrastructure
This commit is contained in:
@ -1,57 +1,68 @@
|
||||
<#
|
||||
.DESCRIPTION
|
||||
Verifies that installed on the machine .NET SDK versions match the input patterns.
|
||||
Optionally checks that the nuget.config file is generated correctly.
|
||||
|
||||
.PARAMETER Patterns
|
||||
Specifies the regular expression patterns that should be matched with the installed
|
||||
on the machine .NET SDK versions. The number of patterns should be equal to the number
|
||||
of installed .NET versions.
|
||||
|
||||
.PARAMETER CheckNugetConfig
|
||||
Switches the check for the existence of the nuget.config file.
|
||||
|
||||
.EXAMPLE
|
||||
PS> .\verify-dotnet.ps1 -Paterns "^3.1.200$", "^6.0" -CheckNugetConfig
|
||||
#>
|
||||
|
||||
param(
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string[]]$Patterns,
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$ContainedPattern,
|
||||
[switch]$CheckNugetConfig
|
||||
)
|
||||
|
||||
if ($CheckNugetConfig.IsPresent) {
|
||||
if (!(Test-Path "../nuget.config"))
|
||||
{
|
||||
throw "The nuget.config file is not generated correctly."
|
||||
}
|
||||
$PatternsList = [System.Collections.ArrayList]($Patterns)
|
||||
|
||||
if ($CheckNugetConfig.IsPresent -and !(Test-Path "../nuget.config")) {
|
||||
throw "The nuget.config file is not generated correctly."
|
||||
}
|
||||
|
||||
if (!$Patterns.Count)
|
||||
{
|
||||
throw "At least 1 dotnet-version pattern should be supplied to script."
|
||||
}
|
||||
$PatternsCount = $PatternsList.Count
|
||||
|
||||
Write-Host "Those patterns were supplied to the script: $($Patterns -join ', ')."
|
||||
Write-Host "Those patterns were supplied to the script: $($PatternsList -join ', ')."
|
||||
$dotnet = Get-Command dotnet | Select-Object -First 1 | ForEach-Object { $_.Path }
|
||||
Write-Host "Found: '$dotnet'"
|
||||
|
||||
# SDKs are listed on multiple lines with the path afterwards in square brackets
|
||||
$versions = & $dotnet --list-sdks | ForEach-Object { $_.SubString(0, $_.IndexOf('[')).Trim() }
|
||||
Write-Host "Installed versions: $($versions -join ', ')."
|
||||
$InstalledVersionCount = 0
|
||||
foreach($pattern in $Patterns)
|
||||
$Versions = & $dotnet --list-sdks | ForEach-Object { $_.SubString(0, $_.IndexOf('[')).Trim() }
|
||||
Write-Host "Found installed versions: $($Versions -join ', ')."
|
||||
$InstalledVersionCount = $Versions.Count
|
||||
|
||||
foreach($version in $Versions)
|
||||
{
|
||||
foreach ($version in $versions)
|
||||
foreach($pattern in $PatternsList)
|
||||
{
|
||||
if ($ContainedPattern)
|
||||
{
|
||||
if ($version.StartsWith($pattern.ToString()) -and $version.Contains($ContainedPattern))
|
||||
{
|
||||
$InstalledVersionCount++
|
||||
}
|
||||
}
|
||||
elseif ($version.StartsWith($pattern.ToString()))
|
||||
{
|
||||
$InstalledVersionCount++
|
||||
}
|
||||
if ($version -match $pattern)
|
||||
{
|
||||
$PatternsList.Remove($pattern)
|
||||
$InstalledVersionCount--
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( $InstalledVersionCount -ne $Patterns.Count)
|
||||
|
||||
if ( $InstalledVersionCount -ne 0)
|
||||
{
|
||||
throw "An unexpected version of Dotnet is found on the machine, please check the script's dotnet-version patterns."
|
||||
throw "An unexpected version of Dotnet is found on the machine, please check the correctness of the -Patterns input."
|
||||
}
|
||||
|
||||
Write-Host "Changing directory to the ./__tests__/e2e-test-csproj"
|
||||
Set-Location ./__tests__/e2e-test-csproj
|
||||
$workingDir = Get-Location
|
||||
$testProjectDir = "./__tests__/e2e-test-csproj"
|
||||
Set-Location $testProjectDir
|
||||
|
||||
$targetFrameworkVersionMapping = @{
|
||||
$targetFrameworkVersionMap = @{
|
||||
"1.0" = "netcoreapp1.0";
|
||||
"1.1" = "netcoreapp1.1";
|
||||
"2.0" = "netcoreapp2.0";
|
||||
@ -64,14 +75,17 @@ $targetFrameworkVersionMapping = @{
|
||||
"7.0" = "net7.0";
|
||||
}
|
||||
|
||||
foreach ($version in $versions)
|
||||
foreach ($version in $Versions)
|
||||
{
|
||||
# Creating temporary global.json file inside e2e-test-csproj dir and setting exact version of .NET inside allows to override default behavior of .NET and run build and tests on that exact version.
|
||||
Write-Host "Creating temporary global.json file for $version .NET version."
|
||||
& $dotnet new globaljson --sdk-version $version --force
|
||||
Write-Host "The global.json file for the version $version is created. Currently used .NET version is: $(& $dotnet --version)"
|
||||
Write-Host "The global.json file for the version $version is created. Currently used .NET version is: $(& $dotnet --version)."
|
||||
|
||||
# Environment variable TEST_TARGET_FRAMEWORK is used inside the test.csproj file to target required framework version
|
||||
$version -match "^(?<key>\d+\.\d+)"
|
||||
Write-Host "Setting the TEST_TARGET_FRAMEWORK environment variable to $($targetFrameworkVersionMapping[$Matches.key])"
|
||||
[Environment]::SetEnvironmentVariable('TEST_TARGET_FRAMEWORK', $($targetFrameworkVersionMapping[$Matches.key]))
|
||||
Write-Host "Setting the TEST_TARGET_FRAMEWORK environment variable to $($targetFrameworkVersionMap[$Matches.key])"
|
||||
[Environment]::SetEnvironmentVariable('TEST_TARGET_FRAMEWORK', $($targetFrameworkVersionMap[$Matches.key]))
|
||||
|
||||
Write-Host "Building test C# project with $version .NET version."
|
||||
& $dotnet build --no-cache
|
||||
@ -89,8 +103,8 @@ foreach ($version in $versions)
|
||||
|
||||
Write-Host "Tests are completed successfully!"
|
||||
|
||||
Write-Host "Removing temprary global.json file."
|
||||
Write-Host "Removing temporary global.json file."
|
||||
Remove-Item ./global.json
|
||||
}
|
||||
|
||||
Set-Location ../..
|
||||
Set-Location $workingDir
|
Reference in New Issue
Block a user