Beispiel #1
0
        private CacheMessages buildCacheMessage()
        {
            var cache   = BootStrapper.Services.Locate <IRunResultCache>();
            var delta   = cache.PopDeltas();
            var message = new CacheMessages();

            foreach (var error in delta.AddedErrors)
            {
                message.AddError(new CacheBuildMessage(error.Key, error.Value));
            }
            foreach (var error in delta.RemovedErrors)
            {
                message.RemoveError(new CacheBuildMessage(error.Key, error.Value));
            }

            foreach (var warning in delta.AddedWarnings)
            {
                message.AddWarning(new CacheBuildMessage(warning.Key, warning.Value));
            }
            foreach (var warning in delta.RemovedWarnings)
            {
                message.RemoveWarning(new CacheBuildMessage(warning.Key, warning.Value));
            }

            foreach (var failed in getTests(delta.AddedTests, TestRunStatus.Failed))
            {
                message.AddFailed(new CacheTestMessage(failed.Key, failed.Value));
            }
            foreach (var ignored in getTests(delta.AddedTests, TestRunStatus.Ignored))
            {
                message.AddIgnored(new CacheTestMessage(ignored.Key, ignored.Value));
            }

            foreach (var test in delta.RemovedTests)
            {
                message.RemoveTest(new CacheTestMessage(test.Key, test.Value));
            }

            return(message);
        }
        public void Should_serialize_Cache_message()
        {
            var message = new CacheMessages();

            message.AddError(new CacheBuildMessage("project1", new BuildMessage()
            {
                ErrorMessage = "message", File = "file", LineNumber = 1, LinePosition = 2
            }));
            message.RemoveError(new CacheBuildMessage("project1", new BuildMessage()
            {
                ErrorMessage = "message to remove", File = "file", LineNumber = 1, LinePosition = 2
            }));
            message.AddError(new CacheBuildMessage("project2", new BuildMessage()
            {
                ErrorMessage = "message2", File = "file2", LineNumber = 1, LinePosition = 2
            }));
            message.AddWarning(new CacheBuildMessage("project3", new BuildMessage()
            {
                ErrorMessage = "warning message", File = "warning file", LineNumber = 3, LinePosition = 4
            }));
            message.RemoveWarning(new CacheBuildMessage("project3", new BuildMessage()
            {
                ErrorMessage = "warning message to remove", File = "warning file", LineNumber = 3, LinePosition = 4
            }));

            var failed = new TestResult(TestRunner.Any, TestRunStatus.Failed, "test name");

            failed.Message    = "message";
            failed.StackTrace = new StackLineMessage[] { new StackLineMessage("stackmethod", "stack file", 5) };
            message.AddFailed(new CacheTestMessage("assembly1", failed));

            var failed2 = new TestResult(TestRunner.Any, TestRunStatus.Failed, "test name");

            failed2.Message    = "message";
            failed2.StackTrace = new StackLineMessage[] { new StackLineMessage("stackmethod", "stack file", 5) };
            message.AddFailed(new CacheTestMessage("assembly2", failed2));

            var ignored = new TestResult(TestRunner.Any, TestRunStatus.Ignored, "test name ignored");

            ignored.Message    = "message ignored";
            ignored.StackTrace = new StackLineMessage[] { new StackLineMessage("stackmethod ignored", "", 6) };
            message.AddIgnored(new CacheTestMessage("assembly2", ignored));

            ignored            = new TestResult(TestRunner.Any, TestRunStatus.Ignored, "test name ignored");
            ignored.Message    = "message ignored to remove";
            ignored.StackTrace = new StackLineMessage[] { new StackLineMessage("stackmethod ignored", "", 6) };
            message.RemoveTest(new CacheTestMessage("assembly2", ignored));

            var output = serializeDeserialize(message);

            Assert.AreEqual(2, output.ErrorsToAdd.Length);
            Assert.AreEqual("project1", output.ErrorsToAdd[0].Project);
            Assert.AreEqual("message", output.ErrorsToAdd[0].BuildItem.ErrorMessage);
            Assert.AreEqual("file", output.ErrorsToAdd[0].BuildItem.File);
            Assert.AreEqual(1, output.ErrorsToAdd[0].BuildItem.LineNumber);
            Assert.AreEqual(2, output.ErrorsToAdd[0].BuildItem.LinePosition);

            Assert.AreEqual(1, output.ErrorsToRemove.Length);
            Assert.AreEqual("message to remove", output.ErrorsToRemove[0].BuildItem.ErrorMessage);

            Assert.AreEqual(1, output.WarningsToAdd.Length);
            Assert.AreEqual("project3", output.WarningsToAdd[0].Project);
            Assert.AreEqual("warning message", output.WarningsToAdd[0].BuildItem.ErrorMessage);
            Assert.AreEqual("warning file", output.WarningsToAdd[0].BuildItem.File);
            Assert.AreEqual(3, output.WarningsToAdd[0].BuildItem.LineNumber);
            Assert.AreEqual(4, output.WarningsToAdd[0].BuildItem.LinePosition);

            Assert.AreEqual(1, output.WarningsToRemove.Length);
            Assert.AreEqual("warning message to remove", output.WarningsToRemove[0].BuildItem.ErrorMessage);

            Assert.AreEqual(2, output.FailedToAdd.Length);
            Assert.AreEqual("assembly1", output.FailedToAdd[0].Assembly);
            Assert.AreEqual(TestRunStatus.Failed, output.FailedToAdd[0].Test.Status);
            Assert.AreEqual("test name", output.FailedToAdd[0].Test.Name);
            Assert.AreEqual("message", output.FailedToAdd[0].Test.Message);
            Assert.AreEqual("stackmethod", output.FailedToAdd[0].Test.StackTrace[0].Method);
            Assert.AreEqual("stack file", output.FailedToAdd[0].Test.StackTrace[0].File);
            Assert.AreEqual(5, output.FailedToAdd[0].Test.StackTrace[0].LineNumber);

            Assert.AreEqual(1, output.IgnoredToAdd.Length);
            Assert.AreEqual("assembly2", output.IgnoredToAdd[0].Assembly);
            Assert.AreEqual(TestRunStatus.Ignored, output.IgnoredToAdd[0].Test.Status);
            Assert.AreEqual("test name ignored", output.IgnoredToAdd[0].Test.Name);
            Assert.AreEqual("message ignored", output.IgnoredToAdd[0].Test.Message);
            Assert.AreEqual("stackmethod ignored", output.IgnoredToAdd[0].Test.StackTrace[0].Method);
            Assert.AreEqual("", output.IgnoredToAdd[0].Test.StackTrace[0].File);
            Assert.AreEqual(6, output.IgnoredToAdd[0].Test.StackTrace[0].LineNumber);

            Assert.AreEqual(1, output.TestsToRemove.Length);
            Assert.AreEqual("message ignored to remove", output.TestsToRemove[0].Test.Message);
        }