From 9c077598a0efe353e6f5fe41337891aa37286417 Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Wed, 17 May 2023 09:56:47 +0200 Subject: [PATCH] fix(manager/nuget): return null for no deps --- lib/modules/manager/nuget/extract.spec.ts | 14 ++++++++++---- lib/modules/manager/nuget/extract.ts | 11 ++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/modules/manager/nuget/extract.spec.ts b/lib/modules/manager/nuget/extract.spec.ts index ba8b9b84e7af84..5156a9fbd406b1 100644 --- a/lib/modules/manager/nuget/extract.spec.ts +++ b/lib/modules/manager/nuget/extract.spec.ts @@ -22,10 +22,10 @@ describe('modules/manager/nuget/extract', () => { GlobalConfig.reset(); }); - it('returns empty for invalid csproj', async () => { - expect(await extractPackageFile('nothing here', 'bogus', config)).toEqual( - { deps: [] } - ); + it('returns null for invalid csproj', async () => { + expect( + await extractPackageFile('nothing here', 'bogus', config) + ).toBeNull(); }); it('extracts package version dependency', async () => { @@ -347,6 +347,12 @@ describe('modules/manager/nuget/extract', () => { ).toBeNull(); }); + it('returns null for no deps', async () => { + expect( + await extractPackageFile('{"version": 1}', packageFile, config) + ).toBeNull(); + }); + it('does not throw', async () => { expect(await extractPackageFile('{{', packageFile, config)).toBeNull(); }); diff --git a/lib/modules/manager/nuget/extract.ts b/lib/modules/manager/nuget/extract.ts index 5fafd4c6598f57..2e329f9f387406 100644 --- a/lib/modules/manager/nuget/extract.ts +++ b/lib/modules/manager/nuget/extract.ts @@ -74,7 +74,7 @@ function extractDepsFromXml(xmlNode: XmlDocument): PackageDependency[] { export async function extractPackageFile( content: string, packageFile: string, - config: ExtractConfig + _config: ExtractConfig ): Promise { logger.trace({ packageFile }, 'nuget.extractPackageFile()'); @@ -99,7 +99,7 @@ export async function extractPackageFile( return null; } - for (const depName of Object.keys(manifest.tools)) { + for (const depName of Object.keys(manifest.tools ?? {})) { const tool = manifest.tools[depName]; const currentValue = tool.version; const dep: PackageDependency = { @@ -115,7 +115,7 @@ export async function extractPackageFile( deps.push(dep); } - return { deps }; + return deps.length ? { deps } : null; } if (packageFile.endsWith('global.json')) { @@ -134,6 +134,11 @@ export async function extractPackageFile( } catch (err) { logger.debug({ err }, `Failed to parse ${packageFile}`); } + + if (!deps.length) { + return null; + } + const res: PackageFileContent = { deps, packageFileVersion }; const lockFileName = getSiblingFileName(packageFile, 'packages.lock.json'); // istanbul ignore if