Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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));
            }
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 8
0
        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());
            }
        }
Ejemplo n.º 9
0
        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]);
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
        }