/
MsBuildTest.cs
82 lines (68 loc) · 2.79 KB
/
MsBuildTest.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
using System;
using System.Diagnostics;
using System.IO;
using Xunit;
namespace Palmmedia.ReportGenerator.Core.Test
{
public class MsBuildTest
{
[Fact (Skip = "Not working with Github Action")]
public void ExecuteMSBuildScript_NetFull()
{
string configuration = "Release";
#if DEBUG
configuration = "Debug";
#endif
var paths = new[]
{
@"C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe",
@"C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\MSBuild.exe",
@"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe"
};
bool found = false;
for (int i = 0; i < paths.Length; i++)
{
if (File.Exists(paths[i]))
{
found = true;
var log = Path.Combine(
Environment.GetEnvironmentVariable("BUILD_ARTIFACTSTAGINGDIRECTORY") ?? FileManager.GetTestDirectory(),
nameof(ExecuteMSBuildScript_NetFull) + ".binlog");
var processStartInfo = new ProcessStartInfo(
paths[i],
$"MsBuildTestScript.proj /p:Configuration={configuration} /bl:{log}")
{
WorkingDirectory = FileManager.GetTestDirectory(),
RedirectStandardOutput = true
};
var process = Process.Start(processStartInfo);
Assert.True(process.WaitForExit(5000));
Assert.True(0 == process.ExitCode, process.StandardOutput.ReadToEnd());
break;
}
}
Assert.True(found, "MsBuild was not found");
}
[Fact]
public void ExecuteMSBuildScript_NetCore()
{
string configuration = "Release";
#if DEBUG
configuration = "Debug";
#endif
var log = Path.Combine(
Environment.GetEnvironmentVariable("BUILD_ARTIFACTSTAGINGDIRECTORY") ?? FileManager.GetTestDirectory(),
nameof(ExecuteMSBuildScript_NetCore) + ".binlog");
var processStartInfo = new ProcessStartInfo(
"dotnet",
$"msbuild MsBuildTestScript_NetCore.proj /p:Configuration={configuration} /bl:{log}")
{
WorkingDirectory = FileManager.GetTestDirectory(),
RedirectStandardOutput = true
};
var process = Process.Start(processStartInfo);
Assert.True(process.WaitForExit(5000));
Assert.True(0 == process.ExitCode, process.StandardOutput.ReadToEnd());
}
}
}