public void DeminifyResultToString_SuccessfullyDeminified_AllLinesDeminified()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string ieStackTrace = @"TypeError: Unable to get property 'length' of undefined or null reference
   at Anonymous function (http://localhost:11323/crashcauser.min.js:1:112)
   at i (http://localhost:11323/crashcauser.min.js:1:95)
   at t (http://localhost:11323/crashcauser.min.js:1:75)
   at n (http://localhost:11323/crashcauser.min.js:1:50)
   at causeCrash (http://localhost:11323/crashcauser.min.js:1:341)
   at http://localhost:11323/crashcauser.min.js:1:445";
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(ieStackTrace);
            string exectedResult             = @"TypeError: Unable to get property 'length' of undefined or null reference
  at Anonymous function in crashcauser.js:17:13
  at level3 in crashcauser.js:15:10
  at level2 in crashcauser.js:11:9
  at level1 in crashcauser.js:6:9
  at causeCrash in crashcauser.js:28:5
  at ? in crashcauser.js:33:9";

            // Act
            string formatted = results.ToString();

            // Assert
            Assert.Equal(exectedResult.Replace("\r", ""), formatted.Replace("\r", ""));
        }
示例#2
0
        public void DeminifyStackTrace_AbleToDeminifyStackTrace_ResultContainsDeminifiedFrame()
        {
            // Arrange
            IStackTraceParser stackTraceParser    = MockRepository.GenerateStrictMock <IStackTraceParser>();
            List <StackFrame> minifiedStackFrames = new List <StackFrame> {
                new StackFrame()
            };
            string stackTraceString = "foobar";

            stackTraceParser.Stub(x => x.ParseStackTrace(stackTraceString, out string message)).Return(minifiedStackFrames).OutRef("Error example");

            IStackFrameDeminifier          stackFrameDeminifier     = MockRepository.GenerateStrictMock <IStackFrameDeminifier>();
            StackFrameDeminificationResult stackFrameDeminification = new StackFrameDeminificationResult();

            stackFrameDeminifier.Stub(x => x.DeminifyStackFrame(minifiedStackFrames[0], null)).Return(stackFrameDeminification);

            StackTraceDeminifier stackTraceDeminifier = new StackTraceDeminifier(stackFrameDeminifier, stackTraceParser);

            // Act
            DeminifyStackTraceResult result = stackTraceDeminifier.DeminifyStackTrace(stackTraceString);

            // Assert
            Assert.Equal(1, result.DeminifiedStackFrameResults.Count);
            Assert.Equal(minifiedStackFrames[0], result.MinifiedStackFrames[0]);
            Assert.Equal(stackFrameDeminification, result.DeminifiedStackFrameResults[0]);
        }
示例#3
0
        public void DeminifyStackTrace_UnableToDeminifyStackTrace_ResultContainsNullDeminifiedFrame()
        {
            // Arrange
            IStackTraceParser stackTraceParser    = MockRepository.GenerateStrictMock <IStackTraceParser>();
            List <StackFrame> minifiedStackFrames = new List <StackFrame> {
                new StackFrame()
            };
            string stackTraceString = "foobar";

            stackTraceParser.Stub(x => x.ParseStackTrace(stackTraceString)).Return(minifiedStackFrames);

            IStackFrameDeminifier stackFrameDeminifier = MockRepository.GenerateStrictMock <IStackFrameDeminifier>();

            stackFrameDeminifier.Stub(x => x.DeminifyStackFrame(minifiedStackFrames[0])).Return(null);

            StackTraceDeminifier stackTraceDeminifier = new StackTraceDeminifier(stackFrameDeminifier, stackTraceParser);

            // Act
            DeminifyStackTraceResult result = stackTraceDeminifier.DeminifyStackTrace(stackTraceString);

            // Assert
            Assert.AreEqual(1, result.DeminifiedStackFrameResults.Count);
            Assert.AreEqual(minifiedStackFrames[0], result.MinifiedStackFrames[0]);
            Assert.IsNull(result.DeminifiedStackFrameResults[0]);
        }
示例#4
0
        public void DeminifyStackTrace_AbleToDeminifyStackTrace_ResultContainsDeminifiedFrame()
        {
            // Arrange
            var stackTraceParserMock = new Mock <IStackTraceParser>();
            var minifiedStackFrames  = new List <StackFrame> {
                new StackFrame(null, null, null)
            };
            var stackTraceString = "foobar";

            stackTraceParserMock
            .Setup(x => x.ParseStackTrace(stackTraceString))
            .Returns(minifiedStackFrames);

            var stackFrameDeminifierMock = new Mock <IStackFrameDeminifier>();
            var stackFrameDeminification = StackFrameDeminificationResult.Ok(null);

            stackFrameDeminifierMock
            .Setup(x => x.DeminifyStackFrame(minifiedStackFrames[0]))
            .Returns(stackFrameDeminification);

            var stackTraceDeminifier = new StackTraceDeminifier(
                stackFrameDeminifierMock.Object, stackTraceParserMock.Object);

            // Act
            var result = stackTraceDeminifier.DeminifyStackTrace(stackTraceString);

            // Assert
            Assert.AreEqual(1, result.DeminifiedStackFrameResults.Count);
            Assert.AreEqual(minifiedStackFrames[0], result.MinifiedStackFrames[0]);
            Assert.AreEqual(stackFrameDeminification, result.DeminifiedStackFrameResults[0]);
        }
示例#5
0
        public void DeminifyClosureStackTrace_FireFoxStackTraceString_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string callstack = @"a.a@http://localhost:11323/closurecrashcauser.minified.js:1:91
a.prototype.b@http://localhost:11323/closurecrashcauser.minified.js:1:61
c@http://localhost:11323/closurecrashcauser.minified.js:1:128
window.onload/<@http://localhost:11323/closurecrashcauser.minified.js:1:504";

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);

            // Assert
            ValidateDeminifyStackTraceResults(results);
        }
示例#6
0
        public void DeminifyClosureStackTrace_EdgeStackTraceString_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string callstack = @"TypeError: Unable to get property 'length' of undefined or null reference
   at a.a (http://localhost:11323/closurecrashcauser.minified.js:1:91)
   at a.prototype.b (http://localhost:11323/closurecrashcauser.minified.js:1:54)
   at c (http://localhost:11323/closurecrashcauser.minified.js:1:121)
   at Anonymous function (http://localhost:11323/closurecrashcauser.minified.js:1:492)";

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);

            // Assert
            ValidateDeminifyStackTraceResults(results);
        }
示例#7
0
        public void DeminifyClosureStackTrace_ChromeStackTraceString_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string callstack = @"TypeError: Cannot read property 'length' of undefined
    at Function.a.a (http://localhost:11323/closurecrashcauser.minified.js:1:99)
    at a.b (http://localhost:11323/closurecrashcauser.minified.js:1:63)
    at c (http://localhost:11323/closurecrashcauser.minified.js:1:135)
    at HTMLButtonElement.<anonymous> (http://localhost:11323/closurecrashcauser.minified.js:1:504)";

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);

            // Assert
            ValidateDeminifyStackTraceResults(results);
        }
        public void DeminifyStackTrace_FireFoxStackTraceString_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string fireFoxStackTrace = @"i/<@http://localhost:11323/crashcauser.min.js:1:112
i@http://localhost:11323/crashcauser.min.js:1:95
t@http://localhost:11323/crashcauser.min.js:1:75
n@http://localhost:11323/crashcauser.min.js:1:50
causeCrash@http://localhost:11323/crashcauser.min.js:1:341
window.onload/<@http://localhost:11323/crashcauser.min.js:1:445";

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(fireFoxStackTrace);

            // Assert
            ValidateDeminifyStackTraceResults(results);
        }
        public void DeminifyStackTrace_MinifiedStackTrace_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string chromeStackTrace     = @"TypeError: Cannot read property 'nonExistantmember' of undefined
    at t.onButtonClick (http://localhost:3000/js/bundle.ffe51781aee314a37903.min.js:1:3573)
    at Object.sh (https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.6/umd/react-dom.production.min.js:164:410)";
            string deminifiedStackTrace = @"TypeError: Cannot read property 'nonExistantmember' of undefined
  at _this.onButtonClick in webpack:///./components/App.tsx:11:46
  at Object.sh in https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.6/umd/react-dom.production.min.js:164:410";

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(chromeStackTrace);

            // Assert
            Assert.Equal(deminifiedStackTrace.Replace("\r", ""), results.ToString().Replace("\r", ""));
        }
        public void DeminifyStackTrace_EdgeStackTraceString_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string dgeStackTrace = @"TypeError: Unable to get property 'length' of undefined or null reference
   at Anonymous function (http://localhost:11323/crashcauser.min.js:1:112)
   at i (http://localhost:11323/crashcauser.min.js:1:95)
   at t (http://localhost:11323/crashcauser.min.js:1:75)
   at n (http://localhost:11323/crashcauser.min.js:1:50)
   at causeCrash (http://localhost:11323/crashcauser.min.js:1:341)
   at Anonymous function (http://localhost:11323/crashcauser.min.js:1:445)";

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(dgeStackTrace);

            // Assert
            ValidateDeminifyStackTraceResults(results);
        }
        public void DeminifyStackTrace_ChromeStackTraceString_CorrectDeminificationWhenPossible()
        {
            // Arrange
            StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
            string chromeStackTrace = @"TypeError: Cannot read property 'length' of undefined
	at http://localhost:11323/crashcauser.min.js:1:125
	at i (http://localhost:11323/crashcauser.min.js:1:137)
	at t (http://localhost:11323/crashcauser.min.js:1:75)
	at n (http://localhost:11323/crashcauser.min.js:1:50)
	at causeCrash (http://localhost:11323/crashcauser.min.js:1:341)
	at HTMLButtonElement.<anonymous> (http://localhost:11323/crashcauser.min.js:1:445)"    ;

            // Act
            DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(chromeStackTrace);

            // Assert
            ValidateDeminifyStackTraceResults(results);
        }
示例#12
0
        public void DeminifyStackTrace_UnableToParseStackTraceString_ReturnsEmptyList()
        {
            // Arrange
            IStackTraceParser stackTraceParser = MockRepository.GenerateStrictMock <IStackTraceParser>();
            string            stackTraceString = "foobar";

            stackTraceParser.Stub(x => x.ParseStackTrace(stackTraceString, out string message)).Return(new List <StackFrame>()).OutRef("Error example");

            IStackFrameDeminifier stackFrameDeminifier = MockRepository.GenerateStrictMock <IStackFrameDeminifier>();

            StackTraceDeminifier stackTraceDeminifier = new StackTraceDeminifier(stackFrameDeminifier, stackTraceParser);

            // Act
            DeminifyStackTraceResult result = stackTraceDeminifier.DeminifyStackTrace(stackTraceString);

            // Assert
            Assert.Equal(0, result.DeminifiedStackFrameResults.Count);
        }
示例#13
0
        public void DeminifyStackTrace_UnableToParseStackTraceString_ReturnsEmptyList()
        {
            // Arrange
            var stackTraceParserMock = new Mock <IStackTraceParser>();
            var stackTraceString     = "foobar";

            stackTraceParserMock
            .Setup(x => x.ParseStackTrace(stackTraceString))
            .Returns(new List <StackFrame>());

            var stackFrameDeminifierMock = new Mock <IStackFrameDeminifier>();

            var stackTraceDeminifier = new StackTraceDeminifier(
                stackFrameDeminifierMock.Object, stackTraceParserMock.Object);
            // Act
            var result = stackTraceDeminifier.DeminifyStackTrace(stackTraceString);

            // Assert
            Assert.AreEqual(0, result.DeminifiedStackFrameResults.Count);
        }