Example #1
0
        static IFailureInformation ConvertToFailureInformation(string outermostExceptionType, string nestedExceptionMessages, string nestedStackTraces)
        {
            var failureInformation = new FailureInformation();

            var exceptionTypes = new List <string>();
            var messages       = new List <string>();

            var match = NestedMessagesRegex.Match(nestedExceptionMessages);

            for (int i = 0; match.Success; i++, match = match.NextMatch())
            {
                exceptionTypes.Add(match.Groups["type"].Value);
                messages.Add(match.Groups["message"].Value);
            }

            if (exceptionTypes.Count > 0 && exceptionTypes[0] == "")
            {
                exceptionTypes[0] = outermostExceptionType;
            }

            failureInformation.ExceptionTypes = exceptionTypes.ToArray();
            failureInformation.Messages       = messages.ToArray();
            failureInformation.StackTraces    = NestedStackTracesRegex.Split(nestedStackTraces);

            failureInformation.ExceptionParentIndices = new int[failureInformation.StackTraces.Length];
            for (int i = 0; i < failureInformation.ExceptionParentIndices.Length; i++)
            {
                failureInformation.ExceptionParentIndices[i] = i - 1;
            }

            return(failureInformation);
        }
        public void AggregateException()
        {
            Action inner1TestCode = () => { throw new DivideByZeroException(); };
            var    inner1         = Record.Exception(inner1TestCode);
            Action inner2TestCode = () => { throw new NotImplementedException("inner #2"); };
            var    inner2         = Record.Exception(inner2TestCode);
            Action inner3TestCode = () => { throw new XunitException("this is crazy"); };
            var    inner3         = Record.Exception(inner3TestCode);
            Action outerTestCode  = () => { throw new AggregateException(inner1, inner2, inner3); };
            var    outer          = Record.Exception(outerTestCode);
            var    failureInfo    = new FailureInformation {
                { outer, -1 }, { inner1, 0 }, { inner2, 0 }, { inner3, 0 }
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Collection(result.Split(new[] { Environment.NewLine }, StringSplitOptions.None),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace #1 (System.DivideByZeroException) -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace #2 (System.NotImplementedException) -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace #3 (Xunit.Sdk.XunitException) -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line)
                              );
        }
        static IFailureInformation ConvertToFailureInformation(string outermostExceptionType, string nestedExceptionMessages, string nestedStackTraces)
        {
            var failureInformation = new FailureInformation();

            var exceptionTypes = new List<string>();
            var messages = new List<string>();

            var match = NestedMessagesRegex.Match(nestedExceptionMessages);
            for (int i = 0; match.Success; i++, match = match.NextMatch())
            {
                exceptionTypes.Add(match.Groups["type"].Value);
                messages.Add(match.Groups["message"].Value);
            }

            if (exceptionTypes.Count > 0 && exceptionTypes[0] == "")
                exceptionTypes[0] = outermostExceptionType;

            failureInformation.ExceptionTypes = exceptionTypes.ToArray();
            failureInformation.Messages = messages.ToArray();
            failureInformation.StackTraces = NestedStackTracesRegex.Split(nestedStackTraces);

            failureInformation.ExceptionParentIndices = new int[failureInformation.StackTraces.Length];
            for (int i = 0; i < failureInformation.ExceptionParentIndices.Length; i++)
                failureInformation.ExceptionParentIndices[i] = i - 1;

            return failureInformation;
        }
        public void XunitException()
        {
            var failureInfo = new FailureInformation { new XunitException("This is the message") };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("This is the message", result);
        }
        public void NonXunitException()
        {
            var failureInfo = new FailureInformation {
                new Exception("This is the message")
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : This is the message", result);
        }
        public void NonXunitExceptionWithInnerExceptions()
        {
            var failureInfo = new FailureInformation {
                { new Exception("outer exception"), -1 },
                { new DivideByZeroException("inner exception"), 0 },
                { new XunitException("inner inner exception"), 1 }
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : outer exception" + Environment.NewLine +
                         "---- System.DivideByZeroException : inner exception" + Environment.NewLine +
                         "-------- inner inner exception", result);
        }
        public void NonXunitExceptionWithInnerExceptions()
        {
            var failureInfo = new FailureInformation {
                { new Exception("outer exception"), -1 },
                { new DivideByZeroException("inner exception"), 0 },
                { new XunitException("inner inner exception"), 1 }
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : outer exception" + Environment.NewLine +
                         "---- System.DivideByZeroException : inner exception" + Environment.NewLine +
                         "-------- inner inner exception", result);
        }
        public void NonXunitException()
        {
            Action testCode    = () => { throw new Exception(); };
            var    ex          = Record.Exception(testCode);
            var    failureInfo = new FailureInformation {
                ex
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.DoesNotContain(typeof(Record).FullName, result);
            Assert.DoesNotContain(typeof(XunitException).FullName, result);
            Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", result);
        }
        public void AggregateException()
        {
            var failureInfo = new FailureInformation {
                { new AggregateException(), -1 },
                { new DivideByZeroException("inner #1"), 0 },
                { new NotImplementedException("inner #2"), 0 },
                { new XunitException("this is crazy"), 0 },
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.AggregateException : One or more errors occurred." + Environment.NewLine
                       + "---- System.DivideByZeroException : inner #1" + Environment.NewLine
                       + "---- System.NotImplementedException : inner #2" + Environment.NewLine
                       + "---- this is crazy", result);
        }
Example #10
0
        public void XunitException()
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

            Action testCode    = () => { throw new XunitException(); };
            var    ex          = Record.Exception(testCode);
            var    failureInfo = new FailureInformation {
                ex
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.DoesNotContain(typeof(Record).FullName, result);
            Assert.DoesNotContain(typeof(XunitException).FullName, result);
            Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", result);
        }
        public void AggregateException()
        {
            var failureInfo = new FailureInformation {
                { new AggregateException(), -1 },
                { new DivideByZeroException("inner #1"), 0 },
                { new NotImplementedException("inner #2"), 0 },
                { new XunitException("this is crazy"), 0 },
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.AggregateException : One or more errors occurred." + Environment.NewLine
                         + "---- System.DivideByZeroException : inner #1" + Environment.NewLine
                         + "---- System.NotImplementedException : inner #2" + Environment.NewLine
                         + "---- this is crazy", result);
        }
        public void NonXunitExceptionWithInnerExceptions()
        {
            Action innerTestCode = () => { throw new DivideByZeroException(); };
            var    inner         = Record.Exception(innerTestCode);
            Action outerTestCode = () => { throw new Exception("message", inner); };
            var    outer         = Record.Exception(outerTestCode);
            var    failureInfo   = new FailureInformation {
                { outer, -1 }, { inner, 0 }
            };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Collection(result.Split(new[] { Environment.NewLine }, StringSplitOptions.None),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                              line => Assert.Equal("----- Inner Stack Trace -----", line),
                              line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line)
                              );
        }
Example #13
0
        public void MissingExceptionTypes()
        {
            var failureInfo = new FailureInformation();

            failureInfo.AddMessage("Message 1");
            failureInfo.AddMessage("Message 2");
            failureInfo.AddMessage("Message 3");
            failureInfo.AddIndex(-1);
            failureInfo.AddIndex(0);
            failureInfo.AddIndex(0);
            failureInfo.AddExceptionType("ExceptionType1");
            failureInfo.AddExceptionType("Xunit.Sdk.ExceptionType2");

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("ExceptionType1 : Message 1" + Environment.NewLine +
                         "---- Message 2" + Environment.NewLine +
                         "----  : Message 3", result);
        }
Example #14
0
        public void MissingStackTracesAndExceptionTypes()
        {
            var failureInfo = new FailureInformation();

            failureInfo.AddMessage("Message 1");
            failureInfo.AddMessage("Message 2");
            failureInfo.AddMessage("Message 3");
            failureInfo.AddIndex(-1);
            failureInfo.AddIndex(0);
            failureInfo.AddIndex(0);
            failureInfo.AddExceptionType("ExceptionType1");
            failureInfo.AddExceptionType("Xunit.Sdk.ExceptionType2");
            failureInfo.AddStackTrace("Stack Trace 1");
            failureInfo.AddStackTrace("Stack Trace 2");

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Equal("Stack Trace 1" + Environment.NewLine +
                         "----- Inner Stack Trace #1 (Xunit.Sdk.ExceptionType2) -----" + Environment.NewLine +
                         "Stack Trace 2" + Environment.NewLine +
                         "----- Inner Stack Trace #2 () -----" + Environment.NewLine, result);
        }
        public void NonXunitExceptionWithInnerExceptions()
        {
            Action innerTestCode = () => { throw new DivideByZeroException(); };
            var inner = Record.Exception(innerTestCode);
            Action outerTestCode = () => { throw new Exception("message", inner); };
            var outer = Record.Exception(outerTestCode);
            var failureInfo = new FailureInformation { { outer, -1 }, { inner, 0 } };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Collection(result.Split(new[] { Environment.NewLine }, StringSplitOptions.None),
                line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                line => Assert.Equal("----- Inner Stack Trace -----", line),
                line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line)
            );
        }
        public void AggregateException()
        {
            Action inner1TestCode = () => { throw new DivideByZeroException(); };
            var inner1 = Record.Exception(inner1TestCode);
            Action inner2TestCode = () => { throw new NotImplementedException("inner #2"); };
            var inner2 = Record.Exception(inner2TestCode);
            Action inner3TestCode = () => { throw new XunitException("this is crazy"); };
            var inner3 = Record.Exception(inner3TestCode);
            Action outerTestCode = () => { throw new AggregateException(inner1, inner2, inner3); };
            var outer = Record.Exception(outerTestCode);
            var failureInfo = new FailureInformation { { outer, -1 }, { inner1, 0 }, { inner2, 0 }, { inner3, 0 } };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.Collection(result.Split(new[] { Environment.NewLine }, StringSplitOptions.None),
                line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                line => Assert.Equal("----- Inner Stack Trace #1 (System.DivideByZeroException) -----", line),
                line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                line => Assert.Equal("----- Inner Stack Trace #2 (System.NotImplementedException) -----", line),
                line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line),
                line => Assert.Equal("----- Inner Stack Trace #3 (Xunit.Sdk.XunitException) -----", line),
                line => Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", line)
            );
        }
        public void XunitException()
        {
            Action testCode = () => { throw new XunitException(); };
            var ex = Record.Exception(testCode);
            var failureInfo = new FailureInformation { ex };

            var result = ExceptionUtility.CombineStackTraces(failureInfo);

            Assert.DoesNotContain(typeof(Record).FullName, result);
            Assert.DoesNotContain(typeof(XunitException).FullName, result);
            Assert.Contains("at ExceptionUtilityTests.CombineStackTraces", result);
        }