-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBuildOutputProcessorTests.cs
63 lines (54 loc) · 2.42 KB
/
BuildOutputProcessorTests.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
namespace CSharpInteractive.Tests;
using JetBrains.TeamCity.ServiceMessages;
using JetBrains.TeamCity.ServiceMessages.Read;
public class BuildOutputProcessorTests
{
private readonly Mock<IServiceMessageParser> _serviceMessageParser = new();
private readonly Mock<IStartInfo> _startInfo = new();
private readonly Mock<IBuildContext> _buildResult = new();
[Fact]
public void ShouldConvertMessages()
{
// Given
Mock<IServiceMessage> msg1 = new();
Mock<IServiceMessage> msg2 = new();
var output = new Output(_startInfo.Object, false, "Messages", 33);
BuildMessage buildMsg1 = new(output, BuildMessageState.StdOut);
BuildMessage buildMsg2 = new(output, BuildMessageState.StdOut);
BuildMessage buildMsg3 = new(output, BuildMessageState.StdOut);
_serviceMessageParser.Setup(i => i.ParseServiceMessages("Messages")).Returns([msg1.Object, msg2.Object]);
_buildResult.Setup(i => i.ProcessMessage(output, msg1.Object)).Returns([buildMsg1, buildMsg2]);
_buildResult.Setup(i => i.ProcessMessage(output, msg2.Object)).Returns([buildMsg3]);
var processor = CreateInstance();
// When
var messages = processor.Convert(output, _buildResult.Object).ToArray();
// Then
messages.ShouldBe(
[
new BuildMessage(output, BuildMessageState.ServiceMessage, msg1.Object),
buildMsg1,
buildMsg2,
new BuildMessage(output, BuildMessageState.ServiceMessage, msg2.Object),
buildMsg3
]);
}
[Theory]
[InlineData(true)]
[InlineData(false)]
public void ShouldConvertWhenHasNoServiceMessages(bool isError)
{
// Given
var output = new Output(_startInfo.Object, isError, "some output", 33);
_serviceMessageParser.Setup(i => i.ParseServiceMessages("some output")).Returns([]);
_buildResult.Setup(i => i.ProcessMessage(output, It.IsAny<IServiceMessage>())).Returns(Array.Empty<BuildMessage>());
BuildMessage buildMsg = new(output, BuildMessageState.StdOut);
_buildResult.Setup(i => i.ProcessOutput(output)).Returns([buildMsg]);
var processor = CreateInstance();
// When
var messages = processor.Convert(output, _buildResult.Object).ToArray();
// Then
messages.ShouldBe([buildMsg]);
}
private BuildOutputProcessor CreateInstance() =>
new(_serviceMessageParser.Object);
}