Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Merge branch 'update-e2e-tests' into add-latest-patch-syntax
Showing
10 changed files
with
167 additions
and
170 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
using System; | ||
|
||
namespace test_csproj | ||
{ | ||
[TestClass] | ||
public class Test | ||
{ | ||
[TestMethod] | ||
public void TestMethod() | ||
{ | ||
Console.WriteLine("TestMethod"); | ||
int calculatedResult = 1000 / 25; | ||
int expectedResult = 40; | ||
Assert.AreEqual(calculatedResult, expectedResult); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>$(TEST_TARGET_FRAMEWORK)</TargetFramework> | ||
<IsPackable>false</IsPackable> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<!-- These packages will be downloaded over the network for testing proxy settings --> | ||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0-preview-20170810-02" /> | ||
<PackageReference Include="MSTest.TestAdapter" Version="1.1.18" /> | ||
<PackageReference Include="MSTest.TestFramework" Version="1.1.18" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,73 +1,117 @@ | ||
if (!$args[0]) | ||
{ | ||
throw "Must supply dotnet version argument" | ||
<# | ||
.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, | ||
[switch]$CheckNugetConfig | ||
) | ||
|
||
$PatternsList = [System.Collections.ArrayList]($Patterns) | ||
|
||
if ($CheckNugetConfig.IsPresent -and !(Test-Path "../nuget.config")) { | ||
throw "The nuget.config file is not generated correctly." | ||
} | ||
|
||
Write-Host "These patterns were supplied to the script: $($PatternsList -join ', ')." | ||
$dotnet = Get-Command dotnet | Select-Object -First 1 | ForEach-Object { $_.Path } | ||
Write-Host "Found '$dotnet'" | ||
Write-Host "Found: '$dotnet'" | ||
|
||
if($args.count -eq 1) | ||
{ | ||
$version = & $dotnet --version | Out-String | ForEach-Object { $_.Trim() } | ||
Write-Host "Version $version" | ||
if (-not ($version.StartsWith($args[0].ToString()))) | ||
{ | ||
Write-Host "PATH='$env:PATH'" | ||
throw "Unexpected version" | ||
} | ||
} | ||
# 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 "Found installed versions: $($Versions -join ', ')." | ||
$InstalledVersionCount = $Versions.Count | ||
|
||
if ($args[1]) | ||
foreach($version in $Versions) | ||
{ | ||
# 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" | ||
$InstalledVersionCount = 0 | ||
foreach($arg in $args){ | ||
foreach ($version in $versions) | ||
{ | ||
if ($version.StartsWith($arg.ToString())) | ||
{ | ||
$InstalledVersionCount++ | ||
} | ||
} | ||
} | ||
if ( $InstalledVersionCount -ne $args.Count) | ||
foreach($pattern in $PatternsList) | ||
{ | ||
Write-Host "PATH='$env:PATH'" | ||
throw "Unexpected version" | ||
if ($version -match $pattern) | ||
{ | ||
$PatternsList.Remove($pattern) | ||
$InstalledVersionCount-- | ||
break | ||
} | ||
} | ||
} | ||
|
||
Write-Host "Building sample csproj" | ||
& $dotnet build __tests__/sample-csproj/ --no-cache | ||
if ($LASTEXITCODE -ne 0) | ||
if ( $InstalledVersionCount -ne 0) | ||
{ | ||
throw "Unexpected exit code $LASTEXITCODE" | ||
throw "An unexpected version of Dotnet is found on the machine, please check the correctness of the -Patterns input." | ||
} | ||
|
||
Write-Host "Testing compiled app" | ||
$sample_output = "$(dotnet test __tests__/sample-csproj/ --no-build)" | ||
Write-Host "Sample output: $sample_output" | ||
# For Side-by-Side installs we want to run the tests twice, for a single install the tests will run once | ||
if ($args[1]) | ||
$workingDir = Get-Location | ||
$testProjectDir = "./__tests__/e2e-test-csproj" | ||
Write-Host "Changing directory to the $testProjectDir" | ||
Set-Location $testProjectDir | ||
|
||
$targetFrameworkVersionMap = @{ | ||
"1.0" = "netcoreapp1.0"; | ||
"1.1" = "netcoreapp1.1"; | ||
"2.0" = "netcoreapp2.0"; | ||
"2.1" = "netcoreapp2.1"; | ||
"2.2" = "netcoreapp2.2"; | ||
"3.0" = "netcoreapp3.0"; | ||
"3.1" = "netcoreapp3.1"; | ||
"5.0" = "net5.0"; | ||
"6.0" = "net6.0"; | ||
"7.0" = "net7.0"; | ||
"8.0" = "net8.0"; | ||
} | ||
|
||
foreach ($version in $Versions) | ||
{ | ||
if ($sample_output -notlike "*Test Run Successful.*Test Run Successful.*") | ||
# 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 | Out-Null | ||
if (!(Test-Path "./global.json")) | ||
{ | ||
throw "Unexpected output" | ||
throw "An error occured while creating the global.json file. Exit code: $LASTEXITCODE" | ||
} | ||
} | ||
if ($args[2]) | ||
{ | ||
if ($sample_output -notlike "*Test Run Successful.*Test Run Successful.*Test Run Successful.*") | ||
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+)" | Out-Null | ||
if (!($targetFrameworkVersionMap.ContainsKey($Matches.key))) | ||
{ | ||
throw "Unexpected output" | ||
throw "The map with the framework targets doesn't contain a target name for the version $version." | ||
} | ||
} | ||
else | ||
{ | ||
if ($sample_output -notlike "*Test Run Successful.*") | ||
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 | ||
if ($LASTEXITCODE -ne 0) | ||
{ | ||
throw "Unexpected output" | ||
throw "Building process is not successful, exit code: $LASTEXITCODE" | ||
} | ||
|
||
Write-Host "Testing compiled C# project with $version .NET version." | ||
& $dotnet test --no-build | ||
if ($LASTEXITCODE -ne 0) | ||
{ | ||
throw "Testing process is not successful, exit code: $LASTEXITCODE" | ||
} | ||
|
||
Write-Host "Tests are completed successfully!" | ||
|
||
Write-Host "Removing temporary global.json file." | ||
Remove-Item ./global.json | ||
} | ||
|
||
Set-Location $workingDir |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters