@@ -42,9 +42,14 @@ describe('Nuget Utils Tests', async () => {
4242 before ( ( ) => {
4343 workspaceFolders = [
4444 {
45- uri : tmpDir ,
45+ uri : vscode . Uri . file ( path . join ( tmpDir . fsPath , 'assets' ) ) ,
4646 name : '' ,
4747 index : 0
48+ } as vscode . WorkspaceFolder ,
49+ {
50+ uri : vscode . Uri . file ( path . join ( tmpDir . fsPath , 'empty' ) ) ,
51+ name : '' ,
52+ index : 1
4853 } as vscode . WorkspaceFolder
4954 ] ;
5055 replacePackagesPathInAssets ( ) ;
@@ -86,6 +91,31 @@ describe('Nuget Utils Tests', async () => {
8691 assert . deepEqual ( node ?. children . length ?? 1 , 0 ) ;
8792 } ) ;
8893
94+ /**
95+ * Test that a solution with a .csproj count mismatch (orphaned .csproj in workspace not
96+ * referenced by the .sln) still scans the available projects instead of failing with [Not Installed].
97+ */
98+ it ( 'Create NuGet Dependencies Trees - tolerates .csproj count mismatch' , async ( ) => {
99+ const partialDir : vscode . Uri = vscode . Uri . file ( path . join ( tmpDir . fsPath , 'partial' ) ) ;
100+ const partialFolders : vscode . WorkspaceFolder [ ] = [ { uri : partialDir , name : '' , index : 0 } ] ;
101+ const packageDescriptors : Map < PackageType , vscode . Uri [ ] > = await ScanUtils . locatePackageDescriptors (
102+ partialFolders ,
103+ treesManager . logManager
104+ ) ;
105+ const solutions : vscode . Uri [ ] | undefined = packageDescriptors . get ( PackageType . Nuget ) ;
106+ assert . isDefined ( solutions ) ;
107+
108+ const parent : DependenciesTreeNode = new DependenciesTreeNode ( new GeneralInfo ( 'parent' , '1.0.0' , [ ] , '' , PackageType . Unknown ) ) ;
109+ // eslint-disable-next-line @typescript-eslint/no-empty-function
110+ await NugetUtils . createDependenciesTrees ( solutions , treesManager . logManager , ( ) => { } , parent ) ;
111+
112+ // 'included' project should be scanned; no [Not Installed] solution node
113+ assert . equal ( parent . children . length , 1 , 'Expected 1 child (included project), not a solution-level error node' ) ;
114+ const includedNode : DependenciesTreeNode = parent . children [ 0 ] ;
115+ assert . equal ( includedNode . label , 'included' , 'Expected the included project to be scanned' ) ;
116+ assert . equal ( includedNode . children . length , 0 , 'Expected 0 NuGet dependencies for included' ) ;
117+ } ) ;
118+
89119 async function runCreateNugetDependenciesTrees ( parent : DependenciesTreeNode ) : Promise < DependenciesTreeNode [ ] > {
90120 let packageDescriptors : Map < PackageType , vscode . Uri [ ] > = await ScanUtils . locatePackageDescriptors ( workspaceFolders , treesManager . logManager ) ;
91121 let solutions : vscode . Uri [ ] | undefined = packageDescriptors . get ( PackageType . Nuget ) ;
0 commit comments