# Copyright (c) .NET Foundation and contributors. All rights reserved. # Licensed under the MIT license. See LICENSE file in the project root for full license information. param( [string]$InputMsi, [string]$DotnetDir, [string]$TestDir ) . "$PSScriptRoot\..\..\scripts\common\_common.ps1" $RepoRoot = Convert-Path "$PSScriptRoot\..\.." function CopyInstaller([string]$destination) { # Copy both the .msi and the .exe to the testBin directory so # the tests running in the docker container have access to them. Copy-Item $inputMsi -Destination:$destination $BundlePath = [System.IO.Path]::ChangeExtension($inputMsi, "exe") Copy-Item $BundlePath -Destination:$destination } function CopyTestXUnitRunner([string]$destination) { $XUnitRunnerDir = Join-Path $env:NUGET_PACKAGES xunit.runner.console\2.1.0\tools Copy-Item $XUnitRunnerDir\xunit.console.exe -Destination:$destination Copy-Item $XUnitRunnerDir\xunit.runner.utility.desktop.dll -Destination:$destination } Write-Output "Running tests for MSI installer at $inputMsi." if(!(Test-Path $inputMsi)) { throw "$inputMsi not found" } $testName = "Microsoft.DotNet.Cli.Msi.Tests" $testProj="$PSScriptRoot\$testName\$testName.csproj" $testBin="$TestDir\$testName" pushd "$DotnetDir" try { .\dotnet restore ` $testProj | Out-Host if($LastExitCode -ne 0) { throw "dotnet restore failed with exit code $LastExitCode." } .\dotnet publish ` --framework net46 ` --output $testBin ` $testProj | Out-Host if($LastExitCode -ne 0) { throw "dotnet publish failed with exit code $LastExitCode." } if($env:RunInstallerTestsInDocker) { CopyInstaller $testBin CopyTestXUnitRunner $testBin Write-Output "Running installer tests in Windows Container" # --net="none" works around a networking issue on the containers on the CI machines. # Since our installer tests don't require the network, it is fine to shut it off. $MsiFileName = [System.IO.Path]::GetFileName($inputMsi) docker run ` --rm ` -v "$testBin\:D:" ` -e "CLI_MSI=D:\$MsiFileName" ` --net="none" ` windowsservercore ` D:\xunit.console.exe D:\$testName.dll | Out-Host if($LastExitCode -ne 0) { throw "xunit runner failed with exit code $LastExitCode." } } } finally { popd } Exit 0