dotnet-installer/test/Installer/Microsoft.DotNet.Cli.Msi.Tests/InstallationTests.cs
Eric Erhardt d9adc9214a Running Windows installer tests on Docker.
Cleaning up the Installer tests
- rename project to conform to the rest of the tests
- convert to .xproj
- clean up unused usings
2016-02-19 16:45:37 -06:00

59 lines
2 KiB
C#

using System;
using System.IO;
using Xunit;
[assembly: CollectionBehavior(DisableTestParallelization = true)]
namespace Dotnet.Cli.Msi.Tests
{
public class InstallationTests : IDisposable
{
private MsiManager _msiMgr;
public InstallationTests()
{
// all the tests assume that the msi to be tested is available via environment variable %CLI_MSI%
var msiFile = Environment.GetEnvironmentVariable("CLI_MSI");
if(string.IsNullOrEmpty(msiFile))
{
throw new InvalidOperationException("%CLI_MSI% must point to the msi that is to be tested");
}
_msiMgr = new MsiManager(msiFile);
}
[Theory]
[InlineData("")]
[InlineData(@"%SystemDrive%\dotnet")]
public void InstallTest(string installLocation)
{
installLocation = Environment.ExpandEnvironmentVariables(installLocation);
string expectedInstallLocation = string.IsNullOrEmpty(installLocation) ?
Environment.ExpandEnvironmentVariables(@"%ProgramFiles%\dotnet") :
installLocation;
// make sure that the msi is not already installed, if so the machine is in a bad state
Assert.False(_msiMgr.IsInstalled, "The dotnet CLI msi is already installed");
Assert.False(Directory.Exists(expectedInstallLocation));
_msiMgr.Install(installLocation);
Assert.True(_msiMgr.IsInstalled);
Assert.True(Directory.Exists(expectedInstallLocation));
_msiMgr.UnInstall();
Assert.False(_msiMgr.IsInstalled);
Assert.False(Directory.Exists(expectedInstallLocation));
}
public void Dispose()
{
if (!_msiMgr.IsInstalled)
{
return;
}
_msiMgr.UnInstall();
Assert.False(_msiMgr.IsInstalled, "Unable to cleanup by uninstalling dotnet");
}
}
}