@@ -79,7 +79,9 @@ export function discoverTests(rootDirectory: string, args: string[], token: Canc
7979 // process the last entry
8080 parseNoseTestModuleCollectionResult ( rootDirectory , logOutputLines , testFiles ) ;
8181 // Exclude tests that don't have any functions or test suites
82- let indices = testFiles . filter ( testFile => testFile . suites . length === 0 && testFile . functions . length === 0 ) . map ( ( testFile , index ) => index ) ;
82+ let indices = testFiles . filter ( testFile => {
83+ return testFile . suites . length === 0 && testFile . functions . length === 0 ;
84+ } ) . map ( ( testFile , index ) => index ) ;
8385 indices . sort ( ) ;
8486
8587 indices . forEach ( ( indexToRemove , index ) => {
@@ -107,31 +109,47 @@ function parseNoseTestModuleCollectionResult(rootDirectory: string, lines: strin
107109
108110 // We need to display the path relative to the current directory
109111 fileName = fileName . substring ( rootDirectory . length + 1 ) ;
112+ // we don't care about the compiled file
113+ if ( path . extname ( fileName ) === '.pyc' ) {
114+ fileName = fileName . substring ( 0 , fileName . length - 1 ) ;
115+ }
110116 currentPackage = convertFileToPackage ( fileName ) ;
111- testFile = { functions : [ ] , suites : [ ] , name : fileName , rawName : fileName , xmlName : currentPackage , time : 0 , functionsFailed : 0 , functionsPassed : 0 } ;
117+ testFile = {
118+ functions : [ ] , suites : [ ] , name : fileName , nameToRun : fileName ,
119+ xmlName : currentPackage , time : 0 , functionsFailed : 0 , functionsPassed : 0
120+ } ;
112121 testFiles . push ( testFile ) ;
113122 return ;
114123 }
115124
116125 if ( line . startsWith ( 'nose.selector: DEBUG: wantClass <class \'' ) ) {
117126 let name = extractBetweenDelimiters ( line , 'nose.selector: DEBUG: wantClass <class \'' , '\'>? True' ) ;
118- const rawName = fileName + `:${ name } ` ;
119- const testSuite : TestSuite = { name : path . extname ( name ) . substring ( 1 ) , rawName : rawName , functions : [ ] , suites : [ ] , xmlName : name , time : 0 , isUnitTest : false , isInstance : false , functionsFailed : 0 , functionsPassed : 0 } ;
127+ const testSuite : TestSuite = {
128+ name : path . extname ( name ) . substring ( 1 ) , nameToRun : fileName + `:${ name } ` ,
129+ functions : [ ] , suites : [ ] , xmlName : name , time : 0 , isUnitTest : false ,
130+ isInstance : false , functionsFailed : 0 , functionsPassed : 0
131+ } ;
120132 testFile . suites . push ( testSuite ) ;
121133 return ;
122134 }
123135 if ( line . startsWith ( 'nose.selector: DEBUG: wantClass ' ) ) {
124136 let name = extractBetweenDelimiters ( line , 'nose.selector: DEBUG: wantClass ' , '? True' ) ;
125- const rawName = fileName + `:${ name } ` ;
126- const testSuite : TestSuite = { name : path . extname ( name ) . substring ( 1 ) , rawName : rawName , functions : [ ] , suites : [ ] , xmlName : name , time : 0 , isUnitTest : false , isInstance : false , functionsFailed : 0 , functionsPassed : 0 } ;
137+ const testSuite : TestSuite = {
138+ name : path . extname ( name ) . substring ( 1 ) , nameToRun : `${ fileName } :.${ name } ` ,
139+ functions : [ ] , suites : [ ] , xmlName : name , time : 0 , isUnitTest : false ,
140+ isInstance : false , functionsFailed : 0 , functionsPassed : 0
141+ } ;
127142 testFile . suites . push ( testSuite ) ;
128143 return ;
129144 }
130145 if ( line . startsWith ( 'nose.selector: DEBUG: wantMethod <unbound method ' ) ) {
131146 const name = extractBetweenDelimiters ( line , 'nose.selector: DEBUG: wantMethod <unbound method ' , '>? True' ) ;
132147 const fnName = path . extname ( name ) . substring ( 1 ) ;
133148 const clsName = path . basename ( name , path . extname ( name ) ) ;
134- const fn : TestFunction = { name : fnName , rawName : fnName , time : 0 , functionsFailed : 0 , functionsPassed : 0 } ;
149+ const fn : TestFunction = {
150+ name : fnName , nameToRun : `${ fileName } :${ clsName } .${ name } ` ,
151+ time : 0 , functionsFailed : 0 , functionsPassed : 0
152+ } ;
135153
136154 let cls = testFile . suites . find ( suite => suite . name === clsName ) ;
137155 if ( ! cls ) {
@@ -142,7 +160,10 @@ function parseNoseTestModuleCollectionResult(rootDirectory: string, lines: strin
142160 }
143161 if ( line . startsWith ( 'nose.selector: DEBUG: wantFunction <function ' ) ) {
144162 const name = extractBetweenDelimiters ( line , 'nose.selector: DEBUG: wantFunction <function ' , ' at ' ) ;
145- const fn : TestFunction = { name : name , rawName : name , time : 0 , functionsFailed : 0 , functionsPassed : 0 } ;
163+ const fn : TestFunction = {
164+ name : name , nameToRun : `${ fileName } :${ name } ` ,
165+ time : 0 , functionsFailed : 0 , functionsPassed : 0
166+ } ;
146167 if ( ! testFile ) {
147168 debugger ;
148169 }
0 commit comments