/
TestPlatformNugetPackageTests.cs
102 lines (80 loc) · 4.37 KB
/
TestPlatformNugetPackageTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
namespace Microsoft.TestPlatform.AcceptanceTests
{
using System;
using System.IO;
using System.IO.Compression;
using System.Linq;
using Microsoft.TestPlatform.TestUtilities;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class TestPlatformNugetPackageTests : CodeCoverageAcceptanceTestBase
{
private static string nugetPackageFolder;
private string resultsDirectory;
[ClassInitialize]
public static void ClassInit(TestContext testContext)
{
var packageLocation = Path.Combine(IntegrationTestEnvironment.TestPlatformRootDirectory, "artifacts", IntegrationTestEnvironment.BuildConfiguration, "packages");
var nugetPackage = Directory.EnumerateFiles(packageLocation, "Microsoft.TestPlatform.*.nupkg").OrderBy(a => a).FirstOrDefault();
nugetPackageFolder = Path.Combine(packageLocation, Path.GetFileNameWithoutExtension(nugetPackage));
ZipFile.ExtractToDirectory(nugetPackage, nugetPackageFolder);
Directory.Move(Path.Combine(nugetPackageFolder, "tools", "net451", "Team%20Tools"), Path.Combine(nugetPackageFolder, "tools", "net451", "Team Tools"));
Directory.Move(Path.Combine(nugetPackageFolder, "tools", "net451", "Team Tools", "Dynamic%20Code%20Coverage%20Tools"), Path.Combine(nugetPackageFolder, "tools", "net451", "Team Tools", "Dynamic Code Coverage Tools"));
}
[ClassCleanup]
public static void ClassCleanup()
{
//Directory.Delete(nugetPackageFolder, true);
}
[TestInitialize]
public void SetUp()
{
this.resultsDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
}
[TestCleanup]
public void CleanUp()
{
//Directory.Delete(resultsDirectory, true);
}
[TestMethod]
[NetFullTargetFrameworkDataSource(useCoreRunner: false)]
[NetCoreTargetFrameworkDataSource(useCoreRunner: false)]
public void RunMultipleTestAssembliesWithCodeCoverage(RunnerInfo runnerInfo)
{
AcceptanceTestBase.SetTestEnvironment(this.testEnvironment, runnerInfo);
var assemblyPaths = this.BuildMultipleAssemblyPath("SimpleTestProject.dll", "SimpleTestProject2.dll").Trim('\"');
var arguments = CreateCodeCoverageArguments(runnerInfo, assemblyPaths, out var trxFilePath);
this.InvokeVsTest(arguments);
this.ExitCodeEquals(1); // failing tests
var actualCoverageFile = CodeCoverageTests.GetCoverageFileNameFromTrx(trxFilePath, resultsDirectory);
Console.WriteLine($@"Coverage file: {actualCoverageFile} Results directory: {resultsDirectory} trxfile: {trxFilePath}");
Assert.IsTrue(File.Exists(actualCoverageFile), "Coverage file not found: {0}", actualCoverageFile);
Directory.Delete(this.resultsDirectory, true);
}
public override string GetConsoleRunnerPath()
{
string consoleRunnerPath = string.Empty;
if (this.IsDesktopRunner())
{
consoleRunnerPath = Path.Combine(nugetPackageFolder, "tools", "net451", "Common7", "IDE", "Extensions", "TestPlatform", "vstest.console.exe");
}
Assert.IsTrue(File.Exists(consoleRunnerPath), "GetConsoleRunnerPath: Path not found: {0}", consoleRunnerPath);
return consoleRunnerPath;
}
private string CreateCodeCoverageArguments(
RunnerInfo runnerInfo,
string assemblyPaths,
out string trxFilePath)
{
string diagFileName = Path.Combine(this.resultsDirectory, "diaglog.txt");
var arguments = PrepareArguments(assemblyPaths, this.GetTestAdapterPath(), string.Empty,
this.FrameworkArgValue, runnerInfo.InIsolationValue);
arguments = string.Concat(arguments, $" /ResultsDirectory:{resultsDirectory}", $" /Diag:{diagFileName}", $" /EnableCodeCoverage");
trxFilePath = Path.Combine(this.resultsDirectory, Guid.NewGuid() + ".trx");
arguments = string.Concat(arguments, " /logger:trx;logfilename=" + trxFilePath);
return arguments;
}
}
}