-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDefaultBuildMessagesProcessorTests.cs
90 lines (75 loc) · 3.91 KB
/
DefaultBuildMessagesProcessorTests.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
namespace CSharpInteractive.Tests;
using JetBrains.TeamCity.ServiceMessages;
public class DefaultBuildMessagesProcessorTests
{
private static readonly ProcessInfo ProcessInfo = new(Mock.Of<IStartInfo>(), Mock.Of<IProcessMonitor>(), 1);
private static readonly Output Output = new(Mock.Of<IStartInfo>(), false, "", 99);
private readonly Mock<ICISettings> _teamCitySettings = new();
private readonly Mock<IProcessOutputWriter> _processOutputWriter = new();
private readonly Mock<IBuildMessageLogWriter> _buildMessageLogWriter = new();
private readonly Mock<IStartInfo> _startInfo = new();
[Theory]
[InlineData(BuildMessageState.ServiceMessage, true)]
[InlineData(BuildMessageState.TestResult, true)]
[InlineData(BuildMessageState.StdOut, false)]
[InlineData(BuildMessageState.StdError, false)]
[InlineData(BuildMessageState.BuildProblem, false)]
[InlineData(BuildMessageState.Failure, false)]
[InlineData(BuildMessageState.Warning, false)]
public void ShouldSendServiceMessagesToTeamCityViaProcessOutputWhenIsUnderTeamCityAndHasNayServiceMessage(BuildMessageState state, bool write)
{
// Given
var output = new Output(_startInfo.Object, false, "Output", 11);
var messages = new BuildMessage[]
{
new(Output, BuildMessageState.StdOut, null, "Msg1"),
new(Output, state, Mock.Of<IServiceMessage>())
};
_teamCitySettings.SetupGet(i => i.CIType).Returns(CIType.TeamCity);
var nextHandler = new Mock<Action<BuildMessage>>();
var processor = CreateInstance();
// When
processor.ProcessMessages(ProcessInfo, output, messages, nextHandler.Object);
// Then
_processOutputWriter.Verify(i => i.Write(output), Times.Exactly(write ? 1 : 0));
nextHandler.Verify(i => i(It.IsAny<BuildMessage>()), Times.Never);
}
[Fact]
public void ShouldProcessBuildMessageWhenIsNotUnderTeamCity()
{
// Given
var output = new Output(_startInfo.Object, false, "Output", 11);
var msg1 = new BuildMessage(Output, BuildMessageState.StdOut, null, "Msg1");
var msg2 = new BuildMessage(Output, BuildMessageState.ServiceMessage, Mock.Of<IServiceMessage>());
_teamCitySettings.SetupGet(i => i.CIType).Returns(CIType.Unknown);
var nextHandler = new Mock<Action<BuildMessage>>();
var processor = CreateInstance();
// When
processor.ProcessMessages(ProcessInfo, output, [msg1, msg2], nextHandler.Object);
// Then
_buildMessageLogWriter.Verify(i => i.Write(ProcessInfo, msg1));
_buildMessageLogWriter.Verify(i => i.Write(ProcessInfo, msg2));
_processOutputWriter.Verify(i => i.Write(It.IsAny<Output>()), Times.Never);
nextHandler.Verify(i => i(It.IsAny<BuildMessage>()), Times.Never);
}
[Fact]
public void ShouldProcessBuildMessageWhenHasNotTeamCityServiceMessages()
{
// Given
var output = new Output(_startInfo.Object, false, "Output", 11);
var msg1 = new BuildMessage(Output, BuildMessageState.StdOut, null, "Msg1");
var msg2 = new BuildMessage(Output, BuildMessageState.StdError, null, "Error");
_teamCitySettings.SetupGet(i => i.CIType).Returns(CIType.TeamCity);
var nextHandler = new Mock<Action<BuildMessage>>();
var processor = CreateInstance();
// When
processor.ProcessMessages(ProcessInfo, output, [msg1, msg2], nextHandler.Object);
// Then
_buildMessageLogWriter.Verify(i => i.Write(ProcessInfo, msg1));
_buildMessageLogWriter.Verify(i => i.Write(ProcessInfo, msg2));
_processOutputWriter.Verify(i => i.Write(It.IsAny<Output>()), Times.Never);
nextHandler.Verify(i => i(It.IsAny<BuildMessage>()), Times.Never);
}
private DefaultBuildMessagesProcessor CreateInstance() =>
new(_teamCitySettings.Object, _processOutputWriter.Object, _buildMessageLogWriter.Object);
}