mirror of
				https://github.com/actions/setup-dotnet.git
				synced 2025-10-31 16:03:45 +00:00 
			
		
		
		
	Update e2e tests
This commit is contained in:
		
							parent
							
								
									920b830bd1
								
							
						
					
					
						commit
						b72f430d36
					
				
							
								
								
									
										37
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							| @ -33,7 +33,7 @@ jobs: | ||||
|             3.0.x | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 2.2.402 3.1.404 '3.0' | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 2.2.402, 3.1.404, 3.0 | ||||
| 
 | ||||
|   test-setup-full-version: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -60,13 +60,9 @@ jobs: | ||||
|           source-url: https://api.nuget.org/v3/index.json | ||||
|         env: | ||||
|           NUGET_AUTH_TOKEN: NOTATOKEN | ||||
|       - name: Verify nuget config file | ||||
|         shell: pwsh | ||||
|         run: | | ||||
|           if (-Not (Test-Path "../nuget.config")) { throw "nuget file not generated correctly" } | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 3.1.201 2.2.402 | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 3.1.201, 2.2.402 -CheckNugetConfig | ||||
| 
 | ||||
|   test-setup-without-patch-version: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -91,7 +87,7 @@ jobs: | ||||
|           dotnet-version: '2.2' | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 3.1 2.2 | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 3.1, 2.2 | ||||
| 
 | ||||
|   test-setup-prerelease-version: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -105,17 +101,13 @@ jobs: | ||||
|       - name: Clear toolcache | ||||
|         shell: pwsh | ||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||
|       - name: Setup dotnet '2.2' | ||||
|         uses: ./ | ||||
|         with: | ||||
|           dotnet-version: '2.2' | ||||
|       - name: Setup dotnet '3.1.100-preview1-014459' | ||||
|         uses: ./ | ||||
|         with: | ||||
|           dotnet-version: '3.1.100-preview1-014459' | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 3.1.100-preview1-014459 | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 3.1.100-preview1-014459 | ||||
| 
 | ||||
|   test-setup-latest-patch-version: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -139,7 +131,7 @@ jobs: | ||||
|           dotnet-version: 2.2.X | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 '2.2' '3.1' | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 2.2, 3.1 | ||||
| 
 | ||||
|   test-setup-with-wildcard: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -163,7 +155,7 @@ jobs: | ||||
|           dotnet-version: 2.2.* | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 3.1 2.2 | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 3.1, 2.2 | ||||
| 
 | ||||
|   test-setup-global-json-specified-and-version: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -181,7 +173,7 @@ jobs: | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir subdirectory | ||||
|           echo '{"sdk":{"version": "2.2","rollForward": "latestFeature"}}' > ./subdirectory/global.json | ||||
|           echo '{"sdk":{"version": "2.2.207","rollForward": "latestFeature"}}' > ./subdirectory/global.json | ||||
|       - name: Setup dotnet | ||||
|         uses: ./ | ||||
|         with: | ||||
| @ -189,7 +181,7 @@ jobs: | ||||
|           global-json-file: ./subdirectory/global.json | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 2.2 3.1 | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 2.2.207, 3.1 | ||||
| 
 | ||||
|   test-setup-with-dotnet-quality: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -209,12 +201,9 @@ jobs: | ||||
|         with: | ||||
|           dotnet-version: '7.0' | ||||
|           dotnet-quality: 'preview' | ||||
|       - name: Verify preview version | ||||
|       - name: Verify dotnet | ||||
|         shell: pwsh | ||||
|         run: | | ||||
|           $version = & dotnet --version | ||||
|           Write-Host "Installed version: $version" | ||||
|           if (-not ($version.Contains("preview") -or $version.Contains("rc"))) { throw "Unexpected version" } | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 7.0 -ContainedPattern "preview" | ||||
| 
 | ||||
|   test-dotnet-version-output-during-single-version-installation: | ||||
|     runs-on: ${{ matrix.operating-system }} | ||||
| @ -300,7 +289,8 @@ jobs: | ||||
|         env: | ||||
|           NUGET_AUTH_TOKEN: NOTATOKEN | ||||
|       - name: Verify dotnet | ||||
|         run: __tests__/verify-dotnet.sh 3.1.201 | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 3.1.201 -CheckNugetConfig | ||||
| 
 | ||||
|   test-bypass-proxy: | ||||
|     runs-on: ubuntu-latest | ||||
| @ -320,4 +310,5 @@ jobs: | ||||
|         env: | ||||
|           NUGET_AUTH_TOKEN: NOTATOKEN | ||||
|       - name: Verify dotnet | ||||
|         run: __tests__/verify-dotnet.sh 3.1.201 | ||||
|         shell: pwsh | ||||
|         run: __tests__/verify-dotnet.ps1 -Patterns 3.1.201 -CheckNugetConfig | ||||
|  | ||||
							
								
								
									
										14
									
								
								__tests__/e2e-test-csproj/Test.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								__tests__/e2e-test-csproj/Test.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | ||||
| 
 | ||||
| namespace test_csproj | ||||
| { | ||||
|     [TestClass] | ||||
|     public class Test | ||||
|     { | ||||
|         [TestMethod] | ||||
|         public void TestMethod() | ||||
|         { | ||||
|             Assert.AreEqual((1 + 1), 2); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								__tests__/e2e-test-csproj/test.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								__tests__/e2e-test-csproj/test.csproj
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
| 
 | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>$(TEST_TARGET_FRAMEWORK)</TargetFramework> | ||||
| 
 | ||||
|     <IsPackable>false</IsPackable> | ||||
|   </PropertyGroup> | ||||
| 
 | ||||
|   <ItemGroup> | ||||
|     <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> | ||||
| @ -1,15 +0,0 @@ | ||||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | ||||
| using System; | ||||
| 
 | ||||
| namespace sample_csproj | ||||
| { | ||||
|     [TestClass] | ||||
|     public class Program | ||||
|     { | ||||
|         [TestMethod] | ||||
|         public void TestMethod1() | ||||
|         { | ||||
|             Console.WriteLine("Hello, World!"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -1,18 +0,0 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
| 
 | ||||
|   <PropertyGroup> | ||||
|     <TargetFrameworks>netcoreapp3.1;netcoreapp3.0;netcoreapp2.2</TargetFrameworks> | ||||
|     <RootNamespace>sample_csproj</RootNamespace> | ||||
| 
 | ||||
|     <IsPackable>false</IsPackable> | ||||
|   </PropertyGroup> | ||||
| 
 | ||||
|   <ItemGroup> | ||||
|     <!-- These packages will be downloaded over the network for testing proxy settings --> | ||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" /> | ||||
|     <PackageReference Include="MSTest.TestAdapter" Version="2.1.0" /> | ||||
|     <PackageReference Include="MSTest.TestFramework" Version="2.1.0" /> | ||||
|     <PackageReference Include="coverlet.collector" Version="1.2.0" /> | ||||
|   </ItemGroup> | ||||
| 
 | ||||
| </Project> | ||||
| @ -1,73 +1,96 @@ | ||||
| if (!$args[0]) | ||||
| { | ||||
|   throw "Must supply dotnet version argument" | ||||
| } | ||||
| param( | ||||
|   [ValidateNotNullOrEmpty()] | ||||
|   [string[]]$Patterns, | ||||
|   [ValidateNotNullOrEmpty()] | ||||
|   [string]$ContainedPattern, | ||||
|   [switch]$CheckNugetConfig | ||||
| ) | ||||
| 
 | ||||
| $dotnet = Get-Command dotnet | Select-Object -First 1 | ForEach-Object { $_.Path } | ||||
| 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()))) | ||||
| if ($CheckNugetConfig.IsPresent) { | ||||
|   if (!(Test-Path "../nuget.config")) | ||||
|   { | ||||
|     Write-Host "PATH='$env:PATH'" | ||||
|     throw "Unexpected version" | ||||
|     throw "The nuget.config file is not generated correctly." | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| if ($args[1]) | ||||
| if (!$Patterns.Count) | ||||
| { | ||||
|   # 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) | ||||
|   throw "At least 1 dotnet-version pattern should be supplied to script." | ||||
| } | ||||
| 
 | ||||
| Write-Host "Those patterns were supplied to the script: $($Patterns -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) | ||||
| { | ||||
|   foreach ($version in $versions) | ||||
|   { | ||||
|     if ($ContainedPattern)  | ||||
|     { | ||||
|       if ($version.StartsWith($arg.ToString()))  | ||||
|       if ($version.StartsWith($pattern.ToString()) -and $version.Contains($ContainedPattern)) | ||||
|       { | ||||
|         $InstalledVersionCount++ | ||||
|       }  | ||||
|     }  | ||||
|       elseif ($version.StartsWith($pattern.ToString())) | ||||
|       { | ||||
|           $InstalledVersionCount++ | ||||
|       } | ||||
|     } | ||||
|    } | ||||
|   if ( $InstalledVersionCount -ne $args.Count) | ||||
|   { | ||||
|     Write-Host "PATH='$env:PATH'" | ||||
|     throw "Unexpected version" | ||||
|   } | ||||
| } | ||||
| if ( $InstalledVersionCount -ne $Patterns.Count) | ||||
| { | ||||
|   throw "An unexpected version of Dotnet is found on the machine, please check the script's dotnet-version patterns." | ||||
| } | ||||
| 
 | ||||
| Write-Host "Building sample csproj" | ||||
| & $dotnet build __tests__/sample-csproj/ --no-cache | ||||
| if ($LASTEXITCODE -ne 0) | ||||
| Write-Host "Changing directory to the ./__tests__/e2e-test-csproj" | ||||
| Set-Location ./__tests__/e2e-test-csproj | ||||
| 
 | ||||
| $targetFrameworkVersionMapping = @{ | ||||
|   "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"; | ||||
|  } | ||||
| 
 | ||||
| foreach ($version in $versions) | ||||
| { | ||||
|   throw "Unexpected exit code $LASTEXITCODE" | ||||
|   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)" | ||||
|   $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 "Building test C# project with $version .NET version." | ||||
|   & $dotnet build --no-cache | ||||
|   if ($LASTEXITCODE -ne 0) | ||||
|   { | ||||
|     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 temprary global.json file." | ||||
|   Remove-Item ./global.json | ||||
| } | ||||
| 
 | ||||
| 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]) | ||||
| { | ||||
|   if ($sample_output -notlike "*Test Run Successful.*Test Run Successful.*") | ||||
|   { | ||||
|     throw "Unexpected output" | ||||
|   } | ||||
| } | ||||
| if ($args[2]) | ||||
| { | ||||
|   if ($sample_output -notlike "*Test Run Successful.*Test Run Successful.*Test Run Successful.*") | ||||
|   { | ||||
|     throw "Unexpected output" | ||||
|   } | ||||
| } | ||||
| else | ||||
| { | ||||
|   if ($sample_output -notlike "*Test Run Successful.*") | ||||
|   { | ||||
|     throw "Unexpected output" | ||||
|   } | ||||
| } | ||||
| Set-Location ../.. | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user