Enable support for Edge for the CrashCauser test app. Additionally update the EndToEnd unit tests to reflect the changes made to the crashcauser js files.
This commit is contained in:
Родитель
b68a9dd545
Коммит
9bd34440b8
|
@ -13,7 +13,10 @@ window["foo"]["bar2"] = mynamespace.objectWithMethods.propertyMethodLevel2;
|
|||
window["bar"] = GlobalFunction;
|
||||
|
||||
window.onerror = function (message, source, lineno, colno, error) {
|
||||
document.getElementById("callstackdisplay").innerText = error.stack;
|
||||
if (error)
|
||||
document.getElementById("callstackdisplay").innerText = error.stack;
|
||||
else if (window.event.error)
|
||||
document.getElementById("callstackdisplay").innerText = window.event.error.stack;
|
||||
}
|
||||
|
||||
window.onload = function (event) {
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
}
|
||||
|
||||
window.onerror = function (message, source, lineno, colno, error) {
|
||||
document.getElementById("callstackdisplay").innerText = error.stack;
|
||||
if (error)
|
||||
document.getElementById("callstackdisplay").innerText = error.stack;
|
||||
else if (window.event.error)
|
||||
document.getElementById("callstackdisplay").innerText = window.event.error.stack;
|
||||
}
|
||||
|
||||
level1();
|
||||
|
|
|
@ -8,17 +8,17 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
[TestClass]
|
||||
public class StackTraceDeminifierClosureEndToEndTests
|
||||
{
|
||||
private const string GeneratedCodeString = "function a(){}window.foo=a;a.prototype={b:function(){return a.a(void 0)}};a.a=function(b){return b.length};function c(){return(new a).b()}window.foo.bar=a.b;window.foo.bar2=a.a;window.bar=c;window.onerror=function(b,e,f,g,d){document.getElementById(\"callstackdisplay\").innerText=d.stack};window.onload=function(){document.getElementById(\"crashbutton\").addEventListener(\"click\",function(){console.log(c())})};";
|
||||
private const string SourceMapString = "{\r\n\"version\":3,\r\n\"file\":\"crashcauser.min.js\",\r\n\"lineCount\":1,\r\n\"mappings\":\"AAEgCA,QAAA,EAAS,EAAG,EAC5CC,MAAA,IAAA,CAAgBD,CAChBA,EAAAE,UAAA,CAA0C,CAAEC,EAAuBA,QAAQ,EAAG,CAAS,MAAOC,EAAAC,EAAA,CAAVC,IAAAA,EAAU,CAAhB,CAApC,CAE1CF,EAAAC,EAAA,CAAqDD,QAAS,CAACG,CAAD,CAAI,CAAE,MAAOA,EAAAC,OAAT,CAElEC,SAASA,EAAc,EAAG,CAAgD,MAAON,CAA7CG,IAAIN,CAAyCG,GAAA,EAAvD,CAE1BF,MAAA,IAAA,IAAA,CAAuBS,CAAAP,EACvBF,OAAA,IAAA,KAAA,CAAwBG,CAAAC,EACxBJ,OAAA,IAAA,CAAgBQ,CAEhBR,OAAAU,QAAA,CAAiBC,QAAS,CAACC,CAAD,CAAUC,CAAV,CAAkBC,CAAlB,CAA0BC,CAA1B,CAAiCC,CAAjC,CAAwC,CAC1DC,QAAAC,eAAA,CAAwB,kBAAxB,CAAAC,UAAA,CAAwDH,CAAAI,MADE,CAIlEpB,OAAAqB,OAAA,CAAgBC,QAAS,EAAQ,CAC7BL,QAAAC,eAAA,CAAwB,aAAxB,CAAAK,iBAAA,CAAwD,OAAxD,CAAiE,QAAS,EAAG,CAC1EC,OAAAC,IAAA,CAAYjB,CAAA,EAAZ,CAD0E,CAA7E,CAD6B;\",\r\n\"sources\":[\"crashcauser.js\"],\r\n\"names\":[\"mynamespace.objectWithMethods\",\"window\",\"prototype\",\"prototypeMethodLevel1\",\"mynamespace.objectWithMethods.propertyMethodLevel2\",\"propertyMethodLevel2\",\"x\",\"e\",\"length\",\"GlobalFunction\",\"mynamespace.objectWithMethods.prototypeMethodLevel1\",\"onerror\",\"window.onerror\",\"message\",\"source\",\"lineno\",\"colno\",\"error\",\"document\",\"getElementById\",\"innerText\",\"stack\",\"onload\",\"window.onload\",\"addEventListener\",\"console\",\"log\"]\r\n}\r\n";
|
||||
private const string GeneratedCodeString = "function a(){}window.foo=a;a.prototype={b:function(){return a.a(void 0)}};a.a=function(b){return b.length};function c(){return(new a).b()}window.foo.bar=a.b;window.foo.bar2=a.a;window.bar=c;window.onerror=function(b,e,f,g,d){d?document.getElementById(\"callstackdisplay\").innerText=d.stack:window.event.error&&(document.getElementById(\"callstackdisplay\").innerText=window.event.error.stack)};window.onload=function(){document.getElementById(\"crashbutton\").addEventListener(\"click\",function(){console.log(c())})};";
|
||||
private const string SourceMapString = "{\r\n\"version\":3,\r\n\"file\":\"\",\r\n\"lineCount\":1,\r\n\"mappings\":\"AAEgCA,QAAA,EAAS,EAAG,EAC5CC,MAAA,IAAA,CAAgBD,CAChBA,EAAAE,UAAA,CAA0C,CAAEC,EAAuBA,QAAS,EAAG,CAAS,MAAOC,EAAAC,EAAA,CAAVC,IAAAA,EAAU,CAAhB,CAArC,CAE1CF,EAAAC,EAAA,CAAqDD,QAAS,CAACG,CAAD,CAAI,CAAE,MAAOA,EAAAC,OAAT,CAElEC,SAASA,EAAc,EAAG,CAA+C,MAAON,CAA5CG,IAAIN,CAAwCG,GAAA,EAAtD,CAE1BF,MAAA,IAAA,IAAA,CAAuBS,CAAAP,EACvBF,OAAA,IAAA,KAAA,CAAwBG,CAAAC,EACxBJ,OAAA,IAAA,CAAgBQ,CAEhBR,OAAAU,QAAA,CAAiBC,QAAS,CAACC,CAAD,CAAUC,CAAV,CAAkBC,CAAlB,CAA0BC,CAA1B,CAAiCC,CAAjC,CAAwC,CAC1DA,CAAJ,CACIC,QAAAC,eAAA,CAAwB,kBAAxB,CAAAC,UADJ,CAC4DH,CAAAI,MAD5D,CAESpB,MAAAqB,MAAAL,MAFT,GAGIC,QAAAC,eAAA,CAAwB,kBAAxB,CAAAC,UAHJ,CAG4DnB,MAAAqB,MAAAL,MAAAI,MAH5D,CAD8D,CAOlEpB,OAAAsB,OAAA,CAAgBC,QAAS,EAAQ,CAC7BN,QAAAC,eAAA,CAAwB,aAAxB,CAAAM,iBAAA,CAAwD,OAAxD,CAAiE,QAAS,EAAG,CACzEC,OAAAC,IAAA,CAAYlB,CAAA,EAAZ,CADyE,CAA7E,CAD6B;\",\r\n\"sources\":[\"//officefile/public/thomabr/closurecrashcauser.js\"],\r\n\"names\":[\"mynamespace.objectWithMethods\",\"window\",\"prototype\",\"prototypeMethodLevel1\",\"mynamespace.objectWithMethods.propertyMethodLevel2\",\"propertyMethodLevel2\",\"x\",\"e\",\"length\",\"GlobalFunction\",\"mynamespace.objectWithMethods.prototypeMethodLevel1\",\"onerror\",\"window.onerror\",\"message\",\"source\",\"lineno\",\"colno\",\"error\",\"document\",\"getElementById\",\"innerText\",\"stack\",\"event\",\"onload\",\"window.onload\",\"addEventListener\",\"console\",\"log\"]\r\n}\r\n";
|
||||
|
||||
|
||||
private StackTraceDeminifier GetStackTraceDeminifierWithDependencies()
|
||||
{
|
||||
ISourceMapProvider sourceMapProvider = MockRepository.GenerateStrictMock<ISourceMapProvider>();
|
||||
sourceMapProvider.Stub(x => x.GetSourceMapContentsForCallstackUrl("http://localhost:11323/crashcauser.js")).Return(UnitTestUtils.StreamReaderFromString(SourceMapString));
|
||||
sourceMapProvider.Stub(x => x.GetSourceMapContentsForCallstackUrl("http://localhost:11323/closurecrashcauser.min.js")).Return(UnitTestUtils.StreamReaderFromString(SourceMapString));
|
||||
|
||||
ISourceCodeProvider sourceCodeProvider = MockRepository.GenerateStrictMock<ISourceCodeProvider>();
|
||||
sourceCodeProvider.Stub(x => x.GetSourceCode("http://localhost:11323/crashcauser.js")).Return(UnitTestUtils.StreamReaderFromString(GeneratedCodeString));
|
||||
sourceCodeProvider.Stub(x => x.GetSourceCode("http://localhost:11323/closurecrashcauser.min.js")).Return(UnitTestUtils.StreamReaderFromString(GeneratedCodeString));
|
||||
|
||||
return StackTraceDeminfierFactory.GetStackTraceDeminfier(sourceMapProvider, sourceCodeProvider);
|
||||
}
|
||||
|
@ -39,10 +39,10 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
// Arrange
|
||||
StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
|
||||
string callstack = @"TypeError: Cannot read property 'length' of undefined
|
||||
at Function.a.a (http://localhost:11323/crashcauser.js:1:99)
|
||||
at Object.b (http://localhost:11323/crashcauser.js:1:63)
|
||||
at c (http://localhost:11323/crashcauser.js:1:135)
|
||||
at HTMLButtonElement.<anonymous> (http://localhost:11323/crashcauser.js:1:401)";
|
||||
at Function.a.a (http://localhost:11323/closurecrashcauser.min.js:1:99)
|
||||
at a.b (http://localhost:11323/closurecrashcauser.min.js:1:63)
|
||||
at c (http://localhost:11323/closurecrashcauser.min.js:1:135)
|
||||
at HTMLButtonElement.<anonymous> (http://localhost:11323/closurecrashcauser.min.js:1:504)";
|
||||
|
||||
// Act
|
||||
DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);
|
||||
|
@ -56,10 +56,10 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
{
|
||||
// Arrange
|
||||
StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
|
||||
string callstack = @"a.a@http://localhost:11323/crashcauser.js:1:91
|
||||
a.prototype.b@http://localhost:11323/crashcauser.js:1:61
|
||||
c@http://localhost:11323/crashcauser.js:1:128
|
||||
window.onload/<@http://localhost:11323/crashcauser.js:1:401";
|
||||
string callstack = @"a.a@http://localhost:11323/closurecrashcauser.min.js:1:91
|
||||
a.prototype.b@http://localhost:11323/closurecrashcauser.min.js:1:61
|
||||
c@http://localhost:11323/closurecrashcauser.min.js:1:128
|
||||
window.onload/<@http://localhost:11323/closurecrashcauser.min.js:1:504";
|
||||
|
||||
// Act
|
||||
DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);
|
||||
|
@ -74,10 +74,10 @@ window.onload/<@http://localhost:11323/crashcauser.js:1:401";
|
|||
// Arrange
|
||||
StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
|
||||
string callstack = @"TypeError: Unable to get property 'length' of undefined or null reference
|
||||
at a.a (http://localhost:11323/crashcauser.js:1:91)
|
||||
at a.prototype.b (http://localhost:11323/crashcauser.js:1:54)
|
||||
at c (http://localhost:11323/crashcauser.js:1:121)
|
||||
at Anonymous function (http://localhost:11323/crashcauser.js:1:389)";
|
||||
at a.a (http://localhost:11323/closurecrashcauser.min.js:1:91)
|
||||
at a.prototype.b (http://localhost:11323/closurecrashcauser.min.js:1:54)
|
||||
at c (http://localhost:11323/closurecrashcauser.min.js:1:121)
|
||||
at Anonymous function (http://localhost:11323/closurecrashcauser.min.js:1:492)";
|
||||
|
||||
// Act
|
||||
DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);
|
||||
|
@ -85,5 +85,23 @@ window.onload/<@http://localhost:11323/crashcauser.js:1:401";
|
|||
// Assert
|
||||
ValidateDeminifyStackTraceResults(results);
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
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.min.js:1:91)
|
||||
at a.prototype.b (http://localhost:11323/closurecrashcauser.min.js:1:54)
|
||||
at c (http://localhost:11323/closurecrashcauser.min.js:1:121)
|
||||
at Anonymous function (http://localhost:11323/closurecrashcauser.min.js:1:492)";
|
||||
|
||||
// Act
|
||||
DeminifyStackTraceResult results = stackTraceDeminifier.DeminifyStackTrace(callstack);
|
||||
|
||||
// Assert
|
||||
ValidateDeminifyStackTraceResults(results);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,10 +7,11 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
[TestClass]
|
||||
public class StackTraceDeminifierEndToEndTests
|
||||
{
|
||||
private const string GeneratedCodeString = "function causeCrash(){function n(){var n=16;n+=2;t(n)}function t(n){n=n+2;i(n)}function i(n){var t;console.log(t.length+n)}window.onerror=function(n,t,i,r,u){document.getElementById(\"callstackdisplay\").innerText=u.stack};n()}window.onload=function(){document.getElementById(\"crashbutton\").addEventListener(\"click\",function(){causeCrash()})};";
|
||||
private const string SourceMapString = "{\r\n\"version\":3,\r\n\"file\":\"crashcauser.min.js\",\r\n\"lineCount\":1,\r\n\"mappings\":\"AAAAA,SAASA,UAAU,CAAA,CACnB,CACIC,SAASA,CAAM,CAAA,CAAG,CACd,IAAIC,EAAwB,EAAE,CAC9BA,CAAsB,EAAG,CAAC,CAC1BC,CAAM,CAACD,CAAD,CAHQ,CAMlBC,SAASA,CAAM,CAACC,CAAD,CAAQ,CACnBA,CAAM,CAAEA,CAAM,CAAE,CAAC,CACjBC,CAAM,CAACD,CAAD,CAFa,CAKvBC,SAASA,CAAM,CAACD,CAAD,CAAQ,CACnB,IAAIE,CAAC,CACLC,OAAOC,IAAI,CAACF,CAACG,OAAQ,CAAEL,CAAZ,CAFQ,CAKvBM,MAAMC,QAAS,CAAEC,QAAS,CAACC,CAAO,CAAEC,CAAM,CAAEC,CAAM,CAAEC,CAAK,CAAEC,CAAjC,CAAwC,CAC9DC,QAAQC,eAAe,CAAC,kBAAD,CAAoBC,UAAW,CAAEH,CAAKI,MADC,C,CAIlEpB,CAAM,CAAA,CArBV,CAwBAS,MAAMY,OAAQ,CAAEC,QAAS,CAAA,CAAQ,CAC7BL,QAAQC,eAAe,CAAC,aAAD,CAAeK,iBAAiB,CAAC,OAAO,CAAE,QAAS,CAAA,CAAG,CACzExB,UAAU,CAAA,CAD+D,CAAtB,CAD1B,C\",\r\n\"sources\":[\"crashcauser.js\"],\r\n\"names\":[\"causeCrash\",\"level1\",\"longLocalVariableName\",\"level2\",\"input\",\"level3\",\"x\",\"console\",\"log\",\"length\",\"window\",\"onerror\",\"window.onerror\",\"message\",\"source\",\"lineno\",\"colno\",\"error\",\"document\",\"getElementById\",\"innerText\",\"stack\",\"onload\",\"window.onload\",\"addEventListener\"]\r\n}\r\n";
|
||||
private const string GeneratedCodeString = "function causeCrash(){function n(){var n=16;n+=2;t(n)}function t(n){n=n+2;i(n)}function i(n){(function(){var t;console.log(t.length+n)})()}window.onerror=function(n,t,i,r,u){u?document.getElementById(\"callstackdisplay\").innerText=u.stack:window.event.error&&(document.getElementById(\"callstackdisplay\").innerText=window.event.error.stack)};n()}window.onload=function(){document.getElementById(\"crashbutton\").addEventListener(\"click\",function(){causeCrash()})};";
|
||||
private const string SourceMapString = "{\r\n\"version\":3,\r\n\"file\":\"crashcauser.min.js\",\r\n\"lineCount\":1,\r\n\"mappings\":\"AAAAA,SAASA,UAAU,CAAA,CACnB,CACIC,SAASA,CAAM,CAAA,CAAG,CACd,IAAIC,EAAwB,EAAE,CAC9BA,CAAsB,EAAG,CAAC,CAC1BC,CAAM,CAACD,CAAD,CAHQ,CAMlBC,SAASA,CAAM,CAACC,CAAD,CAAQ,CACnBA,CAAM,CAAEA,CAAM,CAAE,CAAC,CACjBC,CAAM,CAACD,CAAD,CAFa,CAKvBC,SAASA,CAAM,CAACD,CAAD,CAAQ,EAClB,QAAQ,CAAA,CAAG,CACR,IAAIE,CAAC,CACLC,OAAOC,IAAI,CAACF,CAACG,OAAQ,CAAEL,CAAZ,CAFH,EAGX,CAAA,CAJkB,CAOvBM,MAAMC,QAAS,CAAEC,QAAS,CAACC,CAAO,CAAEC,CAAM,CAAEC,CAAM,CAAEC,CAAK,CAAEC,CAAjC,CAAwC,CAC1DA,CAAJ,CACIC,QAAQC,eAAe,CAAC,kBAAD,CAAoBC,UAAW,CAAEH,CAAKI,MADjE,CAESX,MAAMY,MAAML,M,GACjBC,QAAQC,eAAe,CAAC,kBAAD,CAAoBC,UAAW,CAAEV,MAAMY,MAAML,MAAMI,OAJhB,C,CAOlEpB,CAAM,CAAA,CA1BV,CA6BAS,MAAMa,OAAQ,CAAEC,QAAS,CAAA,CAAQ,CAC7BN,QAAQC,eAAe,CAAC,aAAD,CAAeM,iBAAiB,CAAC,OAAO,CAAE,QAAS,CAAA,CAAG,CACzEzB,UAAU,CAAA,CAD+D,CAAtB,CAD1B,C\",\r\n\"sources\":[\"crashcauser.js\"],\r\n\"names\":[\"causeCrash\",\"level1\",\"longLocalVariableName\",\"level2\",\"input\",\"level3\",\"x\",\"console\",\"log\",\"length\",\"window\",\"onerror\",\"window.onerror\",\"message\",\"source\",\"lineno\",\"colno\",\"error\",\"document\",\"getElementById\",\"innerText\",\"stack\",\"event\",\"onload\",\"window.onload\",\"addEventListener\"]\r\n}";
|
||||
|
||||
private StackTraceDeminifier GetStackTraceDeminifierWithDependencies()
|
||||
|
||||
private StackTraceDeminifier GetStackTraceDeminifierWithDependencies()
|
||||
{
|
||||
ISourceMapProvider sourceMapProvider = MockRepository.GenerateStrictMock<ISourceMapProvider>();
|
||||
sourceMapProvider.Stub(x => x.GetSourceMapContentsForCallstackUrl("http://localhost:11323/crashcauser.min.js")).Return(UnitTestUtils.StreamReaderFromString(SourceMapString));
|
||||
|
@ -23,13 +24,14 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
|
||||
private static void ValidateDeminifyStackTraceResults(DeminifyStackTraceResult results)
|
||||
{
|
||||
Assert.AreEqual(5, results.DeminifiedStackFrameResults.Count);
|
||||
Assert.AreEqual(6, results.DeminifiedStackFrameResults.Count);
|
||||
Assert.AreEqual(DeminificationError.None, results.DeminifiedStackFrameResults[0].DeminificationError);
|
||||
Assert.AreEqual("level3", results.DeminifiedStackFrameResults[0].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("level2", results.DeminifiedStackFrameResults[1].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("level1", results.DeminifiedStackFrameResults[2].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("causeCrash", results.DeminifiedStackFrameResults[3].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("window", results.DeminifiedStackFrameResults[4].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("level3", results.DeminifiedStackFrameResults[0].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("level3", results.DeminifiedStackFrameResults[1].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("level2", results.DeminifiedStackFrameResults[2].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("level1", results.DeminifiedStackFrameResults[3].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("causeCrash", results.DeminifiedStackFrameResults[4].DeminifiedStackFrame.MethodName);
|
||||
Assert.AreEqual("window", results.DeminifiedStackFrameResults[5].DeminifiedStackFrame.MethodName);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
@ -38,11 +40,12 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
// Arrange
|
||||
StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
|
||||
string chromeStackTrace = @"TypeError: Cannot read property 'length' of undefined
|
||||
at i (http://localhost:11323/crashcauser.min.js:1:113)
|
||||
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:222)
|
||||
at HTMLButtonElement.<anonymous> (http://localhost:11323/crashcauser.min.js:1:326)";
|
||||
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);
|
||||
|
@ -56,11 +59,12 @@ namespace SourcemapToolkit.CallstackDeminifier.UnitTests
|
|||
{
|
||||
// Arrange
|
||||
StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
|
||||
string fireFoxStackTrace = @"i @http://localhost:11323/crashcauser.min.js:1:100
|
||||
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:222
|
||||
window.onload/<@http://localhost:11323/crashcauser.min.js:1:326";
|
||||
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);
|
||||
|
@ -75,11 +79,12 @@ window.onload/<@http://localhost:11323/crashcauser.min.js:1:326";
|
|||
// Arrange
|
||||
StackTraceDeminifier stackTraceDeminifier = GetStackTraceDeminifierWithDependencies();
|
||||
string ieStackTrace = @"TypeError: Unable to get property 'length' of undefined or null reference
|
||||
at i (http://localhost:11323/crashcauser.min.js:1:100)
|
||||
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:222)
|
||||
at Anonymous function (http://localhost:11323/crashcauser.min.js:1:326)";
|
||||
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(ieStackTrace);
|
||||
|
@ -87,5 +92,25 @@ window.onload/<@http://localhost:11323/crashcauser.min.js:1:326";
|
|||
// Assert
|
||||
ValidateDeminifyStackTraceResults(results);
|
||||
}
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче