@@ -199,4 +199,36 @@ suite('Pip Utils - getProjectInstallable', () => {
199199 assert . ok ( firstResult . uri , 'Should have a URI' ) ;
200200 assert . ok ( firstResult . uri . fsPath . startsWith ( workspacePath ) , 'Should be in workspace directory' ) ;
201201 } ) ;
202+
203+ test ( 'should sort shallower files before deeper ones' , async ( ) => {
204+ // Arrange: Return files at different depths, with deeper ones discovered first
205+ findFilesStub . callsFake ( ( pattern : string ) => {
206+ const workspacePath = Uri . file ( '/test/path/root' ) . fsPath ;
207+ if ( pattern === '**/*requirements*.txt' ) {
208+ return Promise . resolve ( [
209+ Uri . file ( path . join ( workspacePath , 'deep' , 'nested' , 'sub' , 'requirements.txt' ) ) ,
210+ Uri . file ( path . join ( workspacePath , 'subdir' , 'dev-requirements.txt' ) ) ,
211+ ] ) ;
212+ } else if ( pattern === '*requirements*.txt' ) {
213+ return Promise . resolve ( [ Uri . file ( path . join ( workspacePath , 'requirements.txt' ) ) ] ) ;
214+ } else if ( pattern === '**/requirements/*.txt' ) {
215+ return Promise . resolve ( [ ] ) ;
216+ } else if ( pattern === '**/pyproject.toml' ) {
217+ return Promise . resolve ( [ ] ) ;
218+ }
219+ return Promise . resolve ( [ ] ) ;
220+ } ) ;
221+
222+ // Act
223+ const workspacePath = Uri . file ( '/test/path/root' ) . fsPath ;
224+ const projects = [ { name : 'workspace' , uri : Uri . file ( workspacePath ) } ] ;
225+ const result = ( await getProjectInstallable ( mockApi as PythonEnvironmentApi , projects ) ) . installables ;
226+
227+ // Assert: root-level requirements.txt should come first
228+ assert . strictEqual ( result . length , 3 ) ;
229+ const names = result . map ( ( r ) => r . name ) ;
230+ assert . strictEqual ( names [ 0 ] , 'requirements.txt' , 'Root-level requirements.txt should be first' ) ;
231+ assert . strictEqual ( names [ 1 ] , 'dev-requirements.txt' , 'One-level-deep file should be second' ) ;
232+ assert . strictEqual ( names [ 2 ] , 'requirements.txt' , 'Deeply nested file should be last' ) ;
233+ } ) ;
202234} ) ;
0 commit comments