public void VerifyTestRunTitleShouldNotBeModifiedWhenWhenOnlyOneResultFileIsPublished() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "file1.trx"); command.Properties.Add("type", "NUnit"); // Explicitly not merging it to check if the test run title is not modified when there's only one test file. command.Properties.Add("mergeResults", bool.FalseString); command.Properties.Add("runTitle", "TestRunTitle"); var resultsFiles = new List <string> { "file1.trx" }; var testRunData = new TestRunData(); testRunData.Results = new TestCaseResultData[] { new TestCaseResultData() }; testRunData.Attachments = new string[] { "attachment1" }; _mockTestRunPublisher.Setup(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>())) .Callback((TestRunData trd, CancellationToken cancellationToken) => { Assert.Equal("TestRunTitle", trd.Name); }); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(testRunData); resultCommand.ProcessCommand(_ec.Object, command); // Making sure that the callback is called. _mockTestRunPublisher.Verify(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>()), Times.Once); }
public void Publish_InvalidNUnitResultFile() { SetupMocks(); string jUnitFilePath = "NUnitSampleResults.txt"; File.WriteAllText(jUnitFilePath, "badformat", Encoding.UTF8); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", jUnitFilePath); command.Properties.Add("type", "NUnit"); try { resultCommand.ProcessCommand(_ec.Object, command); } finally { File.Delete(jUnitFilePath); } Assert.Equal(0, _errors.Count()); Assert.Equal(1, _warnings.Count()); }
public void VerifyTestRunTitleIsModifiedWhenPublishingToMultipleTestRun() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "file1.trx,file2.trx"); command.Properties.Add("type", "NUnit"); command.Properties.Add("mergeResults", bool.FalseString); command.Properties.Add("runTitle", "TestRunTitle"); var resultsFiles = new List <string> { "file1.trx", "file2.trx" }; var testRunData = new TestRunData(); testRunData.Results = new TestCaseResultData[] { new TestCaseResultData(), new TestCaseResultData() }; testRunData.Attachments = new string[] { "attachment1", "attachment2" }; int counter = 0; _mockTestRunPublisher.Setup(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>())) .Callback((TestRunData trd, CancellationToken cancellationToken) => { Assert.Equal(StringUtil.Format("{0}_{1}", "TestRunTitle", ++counter), trd.Name); }); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(testRunData); resultCommand.ProcessCommand(_ec.Object, command); // Making sure that the callback is called. _mockTestRunPublisher.Verify(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>()), Times.Exactly(2)); }
public void Publish_NullTestResultFiles() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); Assert.Throws <ArgumentException>(() => resultCommand.ProcessCommand(_ec.Object, command)); }
public void Publish_InvalidTestRunner() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "ResultFile.txt"); command.Properties.Add("type", "MyTestRunner"); Assert.Throws <ArgumentException>(() => resultCommand.ProcessCommand(_ec.Object, command)); }
public void Publish_NullTestRunner() { using (var _hc = SetupMocks()) { var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "ResultFile.txt"); Assert.Throws <ArgumentException>(() => resultCommand.ProcessCommand(_ec.Object, command, _policy)); } }
public void VerifyPublishTaskErrorIfFailTaskIsTrueAndThereAreFailedTestsInMultipleResultFiles() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "file1.trx,file2.trx"); command.Properties.Add("type", "NUnit"); command.Properties.Add("mergeResults", bool.TrueString); command.Properties.Add("failTaskOnFailedTests", bool.TrueString); var resultsFiles = new List <string> { "file1.trx", "file2.trx" }; var testRunDataPassed = new TestRunData(); var testRunDataFailed = new TestRunData(); var passedTest = new TestCaseResultData(); passedTest.Outcome = TestOutcome.Passed.ToString(); var failedTest = new TestCaseResultData(); failedTest.Outcome = TestOutcome.Failed.ToString(); testRunDataPassed.Results = new TestCaseResultData[] { passedTest }; testRunDataPassed.Attachments = new string[] { "attachment1", "attachment2" }; testRunDataFailed.Results = new TestCaseResultData[] { failedTest }; testRunDataPassed.Attachments = new string[] { "attachment1", "attachment2" }; _mockTestRunPublisher.Setup(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>())) .Callback((TestRunData trd, CancellationToken cancellationToken) => { Assert.Equal(resultsFiles.Count * testRunDataPassed.Attachments.Length, trd.Attachments.Length); }); _mockTestRunPublisher.Setup(q => q.AddResultsAsync(It.IsAny <TestRun>(), It.IsAny <TestCaseResultData[]>(), It.IsAny <CancellationToken>())) .Callback((TestRun testRun, TestCaseResultData[] tcrd, CancellationToken cancellationToken) => { Assert.Equal(resultsFiles.Count * testRunDataPassed.Results.Length, tcrd.Length); }); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), "file1.trx")) .Returns(testRunDataPassed); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), "file2.trx")) .Returns(testRunDataFailed); _mockTestRunPublisher.Setup(q => q.EndTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); resultCommand.ProcessCommand(_ec.Object, command); Assert.Equal(1, _errors.Count()); }
public void Publish_DataIsHonoredWhenTestResultsFieldIsNotSpecified() { using (var _hc = SetupMocks()) { var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("type", "mockResults"); command.Data = "testfile1,testfile2"; resultCommand.ProcessCommand(_ec.Object, command); Assert.Equal(0, _errors.Count()); } }
public void Publish_NonExistingTestResultFile() { _mockResultReader.Setup(x => x.ReadResults(It.IsAny <IExecutionContext>(), It.IsAny <string>(), It.IsAny <TestRunContext>())) .Throws(new IOException("Could not find file 'nonexisting.file'")); SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "nonexisting.file"); command.Properties.Add("type", "mockResults"); resultCommand.ProcessCommand(_ec.Object, command); Assert.Equal(0, _errors.Count()); Assert.Equal(1, _warnings.Count()); Assert.Equal(StringUtil.Loc("InvalidResultFiles", "Could not find file 'nonexisting.file'"), _warnings[0]); }
public void VerifyStartEndTestRunTimeWhenPublishingToSingleTestRun() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "file1.trx,file2.trx"); command.Properties.Add("type", "NUnit"); command.Properties.Add("mergeResults", bool.TrueString); var resultsFiles = new List <string> { "file1.trx", "file2.trx" }; var durationInMs = 10; var testRunData = new TestRunData(); var testCaseResultData = new TestCaseResultData(); testCaseResultData.DurationInMs = durationInMs; testRunData.Results = new TestCaseResultData[] { testCaseResultData, testCaseResultData }; testRunData.Attachments = new string[] { "attachment1", "attachment2" }; _mockTestRunPublisher.Setup(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>())) .Callback((TestRunData trd, CancellationToken cancellationToken) => { var startedDate = DateTime.Parse(trd.StartDate, null, DateTimeStyles.RoundtripKind); var endedDate = DateTime.Parse(trd.CompleteDate, null, DateTimeStyles.RoundtripKind); Assert.Equal(resultsFiles.Count * testRunData.Results.Length * durationInMs, (endedDate - startedDate).TotalMilliseconds); }); _mockTestRunPublisher.Setup(q => q.AddResultsAsync(It.IsAny <TestRun>(), It.IsAny <TestCaseResultData[]>(), It.IsAny <CancellationToken>())) .Callback((TestRun testRun, TestCaseResultData[] tcrd, CancellationToken cancellationToken) => { }); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), It.IsAny <string>())) .Returns(testRunData); _mockTestRunPublisher.Setup(q => q.EndTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); resultCommand.ProcessCommand(_ec.Object, command); }
public void VerifyResultsAreMergedWhenPublishingToSingleTestRun() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "file1.trx,file2.trx"); command.Properties.Add("type", "NUnit"); command.Properties.Add("mergeResults", bool.TrueString); var resultsFiles = new List <string> { "file1.trx", "file2.trx" }; var testRunData = new TestRunData(); testRunData.Results = new TestCaseResultData[] { new TestCaseResultData(), new TestCaseResultData() }; testRunData.Attachments = new string[] { "attachment1", "attachment2" }; _mockTestRunPublisher.Setup(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>())) .Callback((TestRunData trd, CancellationToken cancellationToken) => { Assert.Equal(resultsFiles.Count * testRunData.Attachments.Length, trd.Attachments.Length); }); _mockTestRunPublisher.Setup(q => q.AddResultsAsync(It.IsAny <TestRun>(), It.IsAny <TestCaseResultData[]>(), It.IsAny <CancellationToken>())) .Callback((TestRun testRun, TestCaseResultData[] tcrd, CancellationToken cancellationToken) => { Assert.Equal(resultsFiles.Count * testRunData.Results.Length, tcrd.Length); }); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), It.IsAny <string>())) .Returns(testRunData); _mockTestRunPublisher.Setup(q => q.EndTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); resultCommand.ProcessCommand(_ec.Object, command); }
public void VerifyTestRunSystemPropertyIsSentWhenPublishingToTestRunPerFile() { SetupMocks(); var resultCommand = new ResultsCommandExtension(); resultCommand.Initialize(_hc); var command = new Command("results", "publish"); command.Properties.Add("resultFiles", "file1.trx,file2.trx"); command.Properties.Add("type", "NUnit"); command.Properties.Add("mergeResults", bool.FalseString); command.Properties.Add("testRunSystem", "MAVEN"); var resultsFiles = new List <string> { "file1.trx", "file2.trx" }; var testRunData = new TestRunData(); testRunData.Results = new TestCaseResultData[] { new TestCaseResultData(), new TestCaseResultData() }; testRunData.Attachments = new string[] { "attachment1", "attachment2" }; _mockTestRunPublisher.Setup(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>())) .Callback((TestRunData trd, CancellationToken cancellationToken) => { Assert.NotNull(trd.CustomTestFields); Assert.NotEmpty(trd.CustomTestFields); Assert.Equal("testRunSystem", trd.CustomTestFields[0].FieldName); Assert.Equal("MAVEN", trd.CustomTestFields[0].Value); }); _mockTestRunPublisher.Setup(q => q.ReadResultsFromFile(It.IsAny <TestRunContext>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(testRunData); resultCommand.ProcessCommand(_ec.Object, command); // There should be two calls to startestrun _mockTestRunPublisher.Verify(q => q.StartTestRunAsync(It.IsAny <TestRunData>(), It.IsAny <CancellationToken>()), Times.Exactly(2)); }