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", "")); }
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]); }
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]); }
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]); }
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); }
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); }
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); }
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); }
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); }