From ab6975f6c52b91d24efd70769b4239cdab04b448 Mon Sep 17 00:00:00 2001 From: aghoward Date: Tue, 11 Feb 2025 20:21:25 -0500 Subject: [PATCH] fix: cannot run nested pytest test classes (#1138) --- src/parsers/testFramework.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/parsers/testFramework.ts b/src/parsers/testFramework.ts index bf2e4ea..07ba5ba 100644 --- a/src/parsers/testFramework.ts +++ b/src/parsers/testFramework.ts @@ -21,8 +21,10 @@ export class TestFrameworkWalker extends ParseTreeWalker { override visitFunction(node: FunctionNode): boolean { if (node.d.name.d.value.startsWith('test_')) { if (node.parent && printParseNodeType(node.parent.nodeType) === 'Suite') { - const parentSuiteNode = node.parent as SuiteNode; - if (parentSuiteNode.parent && printParseNodeType(parentSuiteNode.parent.nodeType) === 'Class') { + let fullyQualifiedTestName = ''; + let currentNode = node; + let parentSuiteNode = currentNode.parent as SuiteNode; + while (parentSuiteNode.parent && printParseNodeType(parentSuiteNode.parent.nodeType) === 'Class') { const classNode = parentSuiteNode.parent as ClassNode; let combineString: string | undefined = undefined; @@ -31,13 +33,15 @@ export class TestFrameworkWalker extends ParseTreeWalker { } else if (this.testFramework === 'pytest') { combineString = '::'; } - - this.featureItems.push({ - value: classNode.d.name.d.value + combineString + node.d.name.d.value, - startOffset: node.start, - endOffset: node.start + node.length - 1, - }); + fullyQualifiedTestName = classNode.d.name.d.value + combineString + fullyQualifiedTestName; + currentNode = currentNode.parent.parent; + parentSuiteNode = currentNode.parent as SuiteNode; } + this.featureItems.push({ + value: fullyQualifiedTestName + node.d.name.d.value, + startOffset: node.start, + endOffset: node.start + node.length - 1, + }); } else { if (this.testFramework === 'pytest') { this.featureItems.push({