public static void LogsTestNameWithExceptionAndStackTraceAndOutput() { var testFailed = Substitute.For <ITestFailed>(); var test = Mocks.Test(null, "???"); testFailed.Test.Returns(test); testFailed.ExecutionTime.Returns(1.2345M); testFailed.Messages.Returns(new[] { "This is my message \t\r\n" }); testFailed.StackTraces.Returns(new[] { "Line 1\r\nLine 2\r\nLine 3" }); testFailed.ExceptionTypes.Returns(new[] { "ExceptionType" }); testFailed.ExceptionParentIndices.Returns(new[] { -1 }); testFailed.Output.Returns("This is\t\r\noutput"); var formatter = Substitute.For <TeamCityDisplayNameFormatter>(); formatter.DisplayName(test).Returns("This is my display name \t\r\n"); var logger = SpyLogger.Create(); using (var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId", formatter)) { visitor.OnMessage(testFailed); Assert.Collection(logger.Messages, msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFailed name='This is my display name \t|r|n' details='ExceptionType : This is my message \t|r|n|r|nLine 1|r|nLine 2|r|nLine 3' flowId='myFlowId']", msg), msg => Assert.Equal("MESSAGE[High]: ##teamcity[testStdOut name='This is my display name \t|r|n' out='This is\t|r|noutput']", msg), msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFinished name='This is my display name \t|r|n' duration='1234' flowId='myFlowId']", msg) ); } }
public static void LogsMessageWithStatitics() { var assembly = Mocks.TestAssembly(@"C:\Assembly\File.dll"); var assemblyStarting = Substitute.For <ITestAssemblyStarting>(); assemblyStarting.TestAssembly.Returns(assembly); var assemblyFinished = Substitute.For <ITestAssemblyFinished>(); assemblyFinished.TestAssembly.Returns(assembly); assemblyFinished.TestsRun.Returns(2112); assemblyFinished.TestsFailed.Returns(42); assemblyFinished.TestsSkipped.Returns(6); assemblyFinished.ExecutionTime.Returns(123.4567M); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(assemblyStarting); visitor.OnMessage(assemblyFinished); Assert.Collection(logger.Messages, message => Assert.Equal(message, "MESSAGE[High]: Starting: File"), message => Assert.Equal(message, "MESSAGE[High]: Finished: File") ); }
public void NoOutputWhenNotInVerboseMode() { var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testStarting); Assert.Empty(logger.Messages); }
public void OutputStartMessageWhenInVerboseMode() { var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, true, null); visitor.OnMessage(testStarting); Assert.Single(logger.Messages, "MESSAGE[Normal]: START: This is my display name \\t\\r\\n"); }
public void AddsPassToLogWhenInVerboseMode() { var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, true, null); visitor.OnMessage(testPassed); Assert.Single(logger.Messages, "MESSAGE[Normal]: PASS: This is my display name \\t\\r\\n"); }
public void LogsTestName() { var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testPassed); Assert.Single(logger.Messages, "MESSAGE[Normal]: This is my display name \\t\\r\\n"); }
public static void LogsMessage(IMessageSinkMessage message, string messageType) { var logger = SpyLogger.Create(); using (var visitor = new TeamCityVisitor(logger, null, null)) { visitor.OnMessage(message); var msg = Assert.Single(logger.Messages); Assert.Equal(String.Format("MESSAGE[High]: ##teamcity[message text='|[{0}|] ExceptionType: ExceptionType : This is my message \t|r|n' errorDetails='Line 1|r|nLine 2|r|nLine 3' status='ERROR']", messageType), msg); } }
public void LogsTestName() { var testStarting = Substitute.For <ITestStarting>(); testStarting.TestDisplayName.Returns("This is my display name \t\r\n"); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId"); visitor.OnMessage(testStarting); Assert.Single(logger.Messages, "MESSAGE[High]: ##teamcity[testStarted name='This is my display name \t|r|n' flowId='myFlowId']"); }
public static void LogsMessage(IMessageSinkMessage message, string messageType) { var logger = SpyLogger.Create(); using (var visitor = new StandardOutputVisitor(logger, null, false, null)) { visitor.OnMessage(message); Assert.Collection(logger.Messages, msg => Assert.Equal(String.Format("ERROR: [{0}] ExceptionType : This is my message \\t\\r\\n", messageType), msg), msg => Assert.Equal("ERROR: Line 1\r\nLine 2\r\nLine 3", msg)); } }
public void LogsMessage() { var collectionStarting = Substitute.For <ITestCollectionStarting>(); collectionStarting.TestCollection.DisplayName.Returns("Display Name"); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId"); visitor.OnMessage(collectionStarting); Assert.Collection(logger.Messages, msg => Assert.Equal(@"MESSAGE[High]: ##teamcity[testSuiteStarted name='Display Name' flowId='myFlowId']", msg)); }
public static void LogsTestNameAsWarning() { var testSkipped = Substitute.For <ITestSkipped>(); testSkipped.TestDisplayName.Returns("This is my display name \t\r\n"); testSkipped.Reason.Returns("This is my skip reason \t\r\n"); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testSkipped); Assert.Single(logger.Messages, "WARNING: This is my display name \\t\\r\\n: This is my skip reason \\t\\r\\n"); }
public static void IncludesSourceLineNumberFromTopOfStack(IMessageSinkMessage message, string messageType) { ((IFailureInformation)message).StackTraces.Returns(new[] { @" at FixtureAcceptanceTests.Constructors.TestClassMustHaveSinglePublicConstructor() in d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs:line 16" }); var logger = SpyLogger.Create(includeSourceInformation: true); using (var visitor = new StandardOutputVisitor(logger, null, false, null)) { visitor.OnMessage(message); Assert.Collection(logger.Messages, msg => Assert.Equal(String.Format(@"ERROR: [FILE d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs][LINE 16] [{0}] ExceptionType : This is my message \t\r\n", messageType), msg), msg => Assert.Equal(@"ERROR: [FILE d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs][LINE 16] at FixtureAcceptanceTests.Constructors.TestClassMustHaveSinglePublicConstructor() in d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs:line 16", msg)); } }
public static void IncludesSourceLineNumberOfFirstStackFrameWithSourceInformation(IMessageSinkMessage message, string messageType) { ((IFailureInformation)message).StackTraces.Returns(new[] { @" at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)" + Environment.NewLine + @" at FixtureAcceptanceTests.ClassFixture.TestClassWithExtraArgumentToConstructorResultsInFailedTest() in d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs:line 76" }); var logger = SpyLogger.Create(includeSourceInformation: true); using (var visitor = new StandardOutputVisitor(logger, null, false, null)) { visitor.OnMessage(message); Assert.Collection(logger.Messages, msg => Assert.Equal(String.Format(@"ERROR: [FILE d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs][LINE 76] [{0}] ExceptionType : This is my message \t\r\n", messageType), msg), msg => Assert.Equal(String.Format(@"ERROR: [FILE d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs][LINE 76] at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source){0} at FixtureAcceptanceTests.ClassFixture.TestClassWithExtraArgumentToConstructorResultsInFailedTest() in d:\Dev\xunit\xunit\test\test.xunit.execution\Acceptance\FixtureAcceptanceTests.cs:line 76", Environment.NewLine), msg)); } }
public void NullStackTraceDoesNotLogStackTrace() { var testFailed = Substitute.For <ITestFailed>(); testFailed.TestDisplayName.Returns("1"); testFailed.Message.Returns("2"); testFailed.StackTrace.Returns((string)null); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testFailed); Assert.Collection(logger.Messages, msg => Assert.Equal("ERROR: 1: 2", msg)); }
public void LogsTestName() { var testPassed = Substitute.For <ITestPassed>(); testPassed.TestDisplayName.Returns("This is my display name \t\r\n"); testPassed.ExecutionTime.Returns(1.2345M); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId"); visitor.OnMessage(testPassed); Assert.Collection(logger.Messages, msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFinished name='This is my display name \t|r|n' duration='1234' flowId='myFlowId']", msg) ); }
public void LogsMessage() { var collectionFinished = Substitute.For <ITestCollectionFinished>(); collectionFinished.TestsRun.Returns(2112); collectionFinished.TestsFailed.Returns(42); collectionFinished.TestsSkipped.Returns(6); collectionFinished.ExecutionTime.Returns(123.4567M); collectionFinished.TestCollection.DisplayName.Returns("Display Name"); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId"); visitor.OnMessage(collectionFinished); Assert.Single(logger.Messages, @"MESSAGE[High]: ##teamcity[testSuiteFinished name='Display Name' flowId='myFlowId']"); }
public void LogsMessage() { var errorMessage = Substitute.For <IErrorMessage>(); errorMessage.ExceptionTypes.Returns(new[] { "ExceptionType" }); errorMessage.Messages.Returns(new[] { "This is my message \t\r\n" }); errorMessage.StackTraces.Returns(new[] { "Line 1\r\nLine 2\r\nLine 3" }); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null); var result = visitor.OnMessage(errorMessage); Assert.Collection(logger.Messages, msg => Assert.Equal("ERROR: ExceptionType : This is my message \\t\\r\\n", msg), msg => Assert.Equal("ERROR: Line 1\r\nLine 2\r\nLine 3", msg)); }
public void LogsTestNameWithExceptionAndStackTrace() { var testFailed = Substitute.For <ITestFailed>(); testFailed.TestDisplayName.Returns("This is my display name \t\r\n"); testFailed.Message.Returns("This is my message \t\r\n"); testFailed.StackTrace.Returns("Line 1\r\nLine 2\r\nLine 3"); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testFailed); Assert.Collection(logger.Messages, msg => Assert.Equal("ERROR: This is my display name \\t\\r\\n: This is my message \\t\\r\\n", msg), msg => Assert.Equal("ERROR: Line 1\r\nLine 2\r\nLine 3", msg)); }
public void LogsMessage() { var errorMessage = Substitute.For <IErrorMessage>(); errorMessage.ExceptionType.Returns("ExceptionType"); errorMessage.Message.Returns("This is my message \t\r\n"); errorMessage.StackTrace.Returns("Line 1\r\nLine 2\r\nLine 3"); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(errorMessage); Assert.Collection(logger.Messages, msg => Assert.Equal("ERROR: ExceptionType: This is my message \\t\\r\\n", msg), msg => Assert.Equal("ERROR: Line 1\r\nLine 2\r\nLine 3", msg)); }
public void LogsTestNameAsWarning() { var testSkipped = Substitute.For <ITestSkipped>(); testSkipped.TestDisplayName.Returns("This is my display name \t\r\n"); testSkipped.Reason.Returns("This is my skip reason \t\r\n"); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId"); visitor.OnMessage(testSkipped); Assert.Collection(logger.Messages, msg => Assert.Equal("MESSAGE[High]: ##teamcity[testIgnored name='This is my display name \t|r|n' message='This is my skip reason \t|r|n' flowId='myFlowId']", msg), msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFinished name='This is my display name \t|r|n' duration='0' flowId='myFlowId']", msg) ); }
public static void NullStackTraceDoesNotLogStackTrace() { var testFailed = Substitute.For <ITestFailed>(); testFailed.TestDisplayName.Returns("1"); testFailed.Messages.Returns(new[] { "2" }); testFailed.StackTraces.Returns(new[] { (string)null }); testFailed.ExceptionTypes.Returns(new[] { "ExceptionType" }); testFailed.ExceptionParentIndices.Returns(new[] { -1 }); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testFailed); Assert.Collection(logger.Messages, msg => Assert.Equal("ERROR: 1: ExceptionType : 2", msg)); }
public static void LogsTestName() { var testStarting = Substitute.For <ITestStarting>(); var test = Mocks.Test(null, "???"); testStarting.Test.Returns(test); var formatter = Substitute.For <TeamCityDisplayNameFormatter>(); formatter.DisplayName(test).Returns("This is my display name \t\r\n"); var logger = SpyLogger.Create(); using (var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId", formatter)) { visitor.OnMessage(testStarting); Assert.Single(logger.Messages, "MESSAGE[High]: ##teamcity[testStarted name='This is my display name \t|r|n' flowId='myFlowId']"); } }
public void LogsTestNameWithExceptionAndStackTrace() { var testFailed = Substitute.For <ITestFailed>(); testFailed.TestDisplayName.Returns("This is my display name \t\r\n"); testFailed.ExecutionTime.Returns(1.2345M); testFailed.Message.Returns("This is my message \t\r\n"); testFailed.StackTrace.Returns("Line 1\r\nLine 2\r\nLine 3"); var logger = SpyLogger.Create(); var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId"); visitor.OnMessage(testFailed); Assert.Collection(logger.Messages, msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFailed name='This is my display name \t|r|n' details='This is my message \t|r|n|r|nLine 1|r|nLine 2|r|nLine 3' flowId='myFlowId']", msg), msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFinished name='This is my display name \t|r|n' duration='1234' flowId='myFlowId']", msg) ); }
public async Task ShouldReturnItemsAsync() { // Arrange var mockRepo = new Mock <IMyTimeRepo>(); mockRepo.Setup(r => r.GetTimesAsync(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(new List <TimeModel> { new TimeModel { Id = "id-1", UserId = "111", TimeGroup = "Test", Start = new DateTime(2020, 1, 1, 5, 10, 0), End = new DateTime(2020, 1, 1, 5, 12, 20), Notes = "Test Note One" }, new TimeModel { Id = "id-2", UserId = "111", TimeGroup = "Test", Start = new DateTime(2020, 1, 1, 6, 10, 0), End = new DateTime(2020, 1, 1, 7, 12, 20), Notes = "Test Note Two" } }); var logger = new SpyLogger <TimeController>(); var controller = new TimeController(mockRepo.Object, logger); // Act var items = await controller.GetByGroupAsync("Test"); // Assert Assert.NotNull(items); var enumerator = items.GetEnumerator(); Assert.True(enumerator.MoveNext()); Assert.Equal("id-1", enumerator.Current.Id); Assert.Equal("111", enumerator.Current.UserId); Assert.Equal("Test", enumerator.Current.TimeGroup); Assert.Equal(new DateTime(2020, 1, 1, 5, 10, 0), enumerator.Current.Start); Assert.Equal(new DateTime(2020, 1, 1, 5, 12, 20), enumerator.Current.End); Assert.Equal("Test Note One", enumerator.Current.Notes); Assert.True(enumerator.MoveNext()); Assert.Equal("id-2", enumerator.Current.Id); Assert.Equal("111", enumerator.Current.UserId); Assert.Equal("Test", enumerator.Current.TimeGroup); Assert.Equal(new DateTime(2020, 1, 1, 6, 10, 0), enumerator.Current.Start); Assert.Equal(new DateTime(2020, 1, 1, 7, 12, 20), enumerator.Current.End); Assert.Equal("Test Note Two", enumerator.Current.Notes); }
public static void LogsTestNameWithExceptionAndStackTrace() { var testFailed = Substitute.For <ITestFailed>(); var test = Mocks.Test(null, "This is my display name \t\r\n"); testFailed.Test.Returns(test); testFailed.Messages.Returns(new[] { "This is my message \t\r\n" }); testFailed.StackTraces.Returns(new[] { "Line 1\r\nLine 2\r\nLine 3" }); testFailed.ExceptionTypes.Returns(new[] { "ExceptionType" }); testFailed.ExceptionParentIndices.Returns(new[] { -1 }); var logger = SpyLogger.Create(); var visitor = new StandardOutputVisitor(logger, null, false, null); visitor.OnMessage(testFailed); Assert.Collection(logger.Messages, msg => Assert.Equal("ERROR: This is my display name \\t\\r\\n: ExceptionType : This is my message \\t\\r\\n", msg), msg => Assert.Equal("ERROR: Line 1\r\nLine 2\r\nLine 3", msg)); }
public async Task AddSecretStore_WithLogger_UsesLogger() { // Arrange var services = new ServiceCollection(); var spyLogger = new SpyLogger(); services.AddLogging(logging => logging.AddProvider(new TestLoggerProvider(spyLogger))); const string secretName = "MySecret"; var stubProvider = new InMemorySecretProvider((secretName, $"secret-{Guid.NewGuid()}")); // Act services.AddSecretStore(stores => stores.AddProvider(stubProvider)); // Assert IServiceProvider serviceProvider = services.BuildServiceProvider(); var secretProvider = serviceProvider.GetRequiredService <ISecretProvider>(); await secretProvider.GetRawSecretAsync(secretName); Assert.True(spyLogger.IsCalled); }
public static void LogsTestNameAndOutput() { var testPassed = Substitute.For <ITestPassed>(); var test = Mocks.Test(null, "???"); testPassed.Test.Returns(test); testPassed.ExecutionTime.Returns(1.2345M); testPassed.Output.Returns("This is\t\r\noutput"); var formatter = Substitute.For <TeamCityDisplayNameFormatter>(); formatter.DisplayName(test).Returns("This is my display name \t\r\n"); var logger = SpyLogger.Create(); using (var visitor = new TeamCityVisitor(logger, null, null, _ => "myFlowId", formatter)) { visitor.OnMessage(testPassed); Assert.Collection(logger.Messages, msg => Assert.Equal("MESSAGE[High]: ##teamcity[testStdOut name='This is my display name \t|r|n' out='This is\t|r|noutput']", msg), msg => Assert.Equal("MESSAGE[High]: ##teamcity[testFinished name='This is my display name \t|r|n' duration='1234' flowId='myFlowId']", msg) ); } }