From 1f09c4221da9a94edb7642b294d2cc664d283dd4 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 3 Oct 2016 08:35:58 +0300 Subject: [PATCH] CustomNodeAppender refactoring --- .../{variant-1.js => basic-1.js} | 2 +- .../{variant-2.js => basic-2.js} | 0 ...ariant-3.js => call-before-declaration.js} | 0 ...js => call-expression-of-object-member.js} | 0 .../deep-conditions-nesting.js | 27 +++++++++ .../{variant-5.js => no-call-expressions.js} | 0 .../{variant-6.js => only-call-expression.js} | 0 test/unit-tests/StackTraceAnalyzer-spec.ts | 59 +++++++++++++++---- 8 files changed, 75 insertions(+), 13 deletions(-) rename test/fixtures/stack-trace-analyzer/{variant-1.js => basic-1.js} (95%) rename test/fixtures/stack-trace-analyzer/{variant-2.js => basic-2.js} (100%) rename test/fixtures/stack-trace-analyzer/{variant-3.js => call-before-declaration.js} (100%) rename test/fixtures/stack-trace-analyzer/{variant-4.js => call-expression-of-object-member.js} (100%) create mode 100644 test/fixtures/stack-trace-analyzer/deep-conditions-nesting.js rename test/fixtures/stack-trace-analyzer/{variant-5.js => no-call-expressions.js} (100%) rename test/fixtures/stack-trace-analyzer/{variant-6.js => only-call-expression.js} (100%) diff --git a/test/fixtures/stack-trace-analyzer/variant-1.js b/test/fixtures/stack-trace-analyzer/basic-1.js similarity index 95% rename from test/fixtures/stack-trace-analyzer/variant-1.js rename to test/fixtures/stack-trace-analyzer/basic-1.js index 5d6ba3a7..6fdbd00f 100644 --- a/test/fixtures/stack-trace-analyzer/variant-1.js +++ b/test/fixtures/stack-trace-analyzer/basic-1.js @@ -10,7 +10,7 @@ function bar () { function inner2 () { var inner3 = function () { - } + }; inner3(); } diff --git a/test/fixtures/stack-trace-analyzer/variant-2.js b/test/fixtures/stack-trace-analyzer/basic-2.js similarity index 100% rename from test/fixtures/stack-trace-analyzer/variant-2.js rename to test/fixtures/stack-trace-analyzer/basic-2.js diff --git a/test/fixtures/stack-trace-analyzer/variant-3.js b/test/fixtures/stack-trace-analyzer/call-before-declaration.js similarity index 100% rename from test/fixtures/stack-trace-analyzer/variant-3.js rename to test/fixtures/stack-trace-analyzer/call-before-declaration.js diff --git a/test/fixtures/stack-trace-analyzer/variant-4.js b/test/fixtures/stack-trace-analyzer/call-expression-of-object-member.js similarity index 100% rename from test/fixtures/stack-trace-analyzer/variant-4.js rename to test/fixtures/stack-trace-analyzer/call-expression-of-object-member.js diff --git a/test/fixtures/stack-trace-analyzer/deep-conditions-nesting.js b/test/fixtures/stack-trace-analyzer/deep-conditions-nesting.js new file mode 100644 index 00000000..6eea7c0b --- /dev/null +++ b/test/fixtures/stack-trace-analyzer/deep-conditions-nesting.js @@ -0,0 +1,27 @@ +bar(); + +function foo () { + +} + +function bar () { + +} + +function baz () { + function inner1 () { + + } + + if (true) { + switch (true) { + case true: + while (true) { + inner1(); + } + } + } +} + +baz(); +foo(); diff --git a/test/fixtures/stack-trace-analyzer/variant-5.js b/test/fixtures/stack-trace-analyzer/no-call-expressions.js similarity index 100% rename from test/fixtures/stack-trace-analyzer/variant-5.js rename to test/fixtures/stack-trace-analyzer/no-call-expressions.js diff --git a/test/fixtures/stack-trace-analyzer/variant-6.js b/test/fixtures/stack-trace-analyzer/only-call-expression.js similarity index 100% rename from test/fixtures/stack-trace-analyzer/variant-6.js rename to test/fixtures/stack-trace-analyzer/only-call-expression.js diff --git a/test/unit-tests/StackTraceAnalyzer-spec.ts b/test/unit-tests/StackTraceAnalyzer-spec.ts index dfac2396..39047e9d 100644 --- a/test/unit-tests/StackTraceAnalyzer-spec.ts +++ b/test/unit-tests/StackTraceAnalyzer-spec.ts @@ -72,9 +72,9 @@ describe('StackTraceAnalyzer', () => { stackTraceData: IStackTraceData[], expectedStackTraceData: IStackTraceData[]; - it('should returns correct IStackTraceData - variant #1', () => { + it('should returns correct IStackTraceData - variant #1: basic-1', () => { astTree = NodeUtils.convertCodeToStructure( - readFileAsString('./test/fixtures/stack-trace-analyzer/variant-1.js'), + readFileAsString('./test/fixtures/stack-trace-analyzer/basic-1.js'), false ); @@ -118,9 +118,9 @@ describe('StackTraceAnalyzer', () => { assert.deepEqual(stackTraceData, expectedStackTraceData); }); - it('should returns correct BlockScopeTraceData - variant #2', () => { + it('should returns correct BlockScopeTraceData - variant #2: basic-2', () => { astTree = NodeUtils.convertCodeToStructure( - readFileAsString('./test/fixtures/stack-trace-analyzer/variant-2.js'), + readFileAsString('./test/fixtures/stack-trace-analyzer/basic-2.js'), false ); @@ -153,9 +153,44 @@ describe('StackTraceAnalyzer', () => { assert.deepEqual(stackTraceData, expectedStackTraceData); }); - it('should returns correct BlockScopeTraceData - variant #3', () => { + it('should returns correct BlockScopeTraceData - variant #3: deep conditions nesting', () => { astTree = NodeUtils.convertCodeToStructure( - readFileAsString('./test/fixtures/stack-trace-analyzer/variant-3.js'), + readFileAsString('./test/fixtures/stack-trace-analyzer/deep-conditions-nesting.js'), + false + ); + + expectedStackTraceData = [ + { + name: 'bar', + callee: (getFunctionDeclarationByName(astTree, 'bar')).body, + stackTrace: [] + }, + { + name: 'baz', + callee: (getFunctionDeclarationByName(astTree, 'baz')).body, + stackTrace: [ + { + name: 'inner1', + callee: (getFunctionDeclarationByName(astTree, 'inner1')).body, + stackTrace: [] + }, + ] + }, + { + name: 'foo', + callee: (getFunctionDeclarationByName(astTree, 'foo')).body, + stackTrace: [] + } + ]; + + stackTraceData = new StackTraceAnalyzer(astTree.body).analyze(); + + assert.deepEqual(stackTraceData, expectedStackTraceData); + }); + + it('should returns correct BlockScopeTraceData - variant #4: call before declaration', () => { + astTree = NodeUtils.convertCodeToStructure( + readFileAsString('./test/fixtures/stack-trace-analyzer/call-before-declaration.js'), false ); @@ -172,9 +207,9 @@ describe('StackTraceAnalyzer', () => { assert.deepEqual(stackTraceData, expectedStackTraceData); }); - it('should returns correct BlockScopeTraceData - variant #4', () => { + it('should returns correct BlockScopeTraceData - variant #5: call expression of object member', () => { astTree = NodeUtils.convertCodeToStructure( - readFileAsString('./test/fixtures/stack-trace-analyzer/variant-4.js'), + readFileAsString('./test/fixtures/stack-trace-analyzer/call-expression-of-object-member.js'), false ); @@ -185,9 +220,9 @@ describe('StackTraceAnalyzer', () => { assert.deepEqual(stackTraceData, expectedStackTraceData); }); - it('should returns correct BlockScopeTraceData - variant #5', () => { + it('should returns correct BlockScopeTraceData - variant #6: no call expressions', () => { astTree = NodeUtils.convertCodeToStructure( - readFileAsString('./test/fixtures/stack-trace-analyzer/variant-5.js'), + readFileAsString('./test/fixtures/stack-trace-analyzer/no-call-expressions.js'), false ); @@ -198,9 +233,9 @@ describe('StackTraceAnalyzer', () => { assert.deepEqual(stackTraceData, expectedStackTraceData); }); - it('should returns correct BlockScopeTraceData - variant #6', () => { + it('should returns correct BlockScopeTraceData - variant #7: only call expression', () => { astTree = NodeUtils.convertCodeToStructure( - readFileAsString('./test/fixtures/stack-trace-analyzer/variant-6.js'), + readFileAsString('./test/fixtures/stack-trace-analyzer/only-call-expression.js'), false );