diff --git a/src/PackagesConfig/NugetPackage.ts b/src/PackagesConfig/NugetPackage.ts
index 04b88c0..f4bfb00 100644
--- a/src/PackagesConfig/NugetPackage.ts
+++ b/src/PackagesConfig/NugetPackage.ts
@@ -54,7 +54,7 @@ export class NugetPackage {
}
const depArray: any = lodash.get(metaDataDep, 'dependency');
if (depArray) {
- for (const dependency of depArray) {
+ for (const dependency of Array.isArray(depArray) ? depArray : [depArray]) {
this._dependencies?.set(dependency.id, true);
}
}
@@ -62,9 +62,9 @@ export class NugetPackage {
// Dependencies might be grouped.
const groupArray: any = lodash.get(metaDataDep, 'group');
if (groupArray) {
- for (const group of groupArray) {
+ for (const group of Array.isArray(groupArray) ? groupArray : [groupArray]) {
if (group.dependency) {
- for (const dependency of group.dependency) {
+ for (const dependency of Array.isArray(group.dependency) ? group.dependency : [group.dependency]) {
this._dependencies?.set(dependency.id, true);
}
}
diff --git a/test/PackagesConfig.spec.ts b/test/PackagesConfig.spec.ts
index b39ca6d..5e7fcac 100644
--- a/test/PackagesConfig.spec.ts
+++ b/test/PackagesConfig.spec.ts
@@ -1,8 +1,67 @@
import * as path from 'path';
import { PackagesExtractor } from '../src/PackagesConfig/Extractor';
import { DependencyDetails, CaseInsensitiveMap } from '../model';
+import { NugetPackage } from '../src/PackagesConfig/NugetPackage';
describe('Packages Config Tests', () => {
+ test('NugetPackage group.dependency handles array and single object', () => {
+ // Single dependency object
+ const nuspecSingle: string = `
+
+
+ testpkg
+ 1.0.0
+
+
+
+
+
+
+ `;
+ const pkgSingle: NugetPackage = new NugetPackage('testpkg', '1.0.0', nuspecSingle);
+ expect(pkgSingle.dependencies.has('dep1')).toBe(true);
+
+ // Multiple dependencies array
+ const nuspecArray: string = `
+
+
+ testpkg
+ 1.0.0
+
+
+
+
+
+
+
+ `;
+ const pkgArray: NugetPackage = new NugetPackage('testpkg', '1.0.0', nuspecArray);
+ expect(pkgArray.dependencies.has('dep1')).toBe(true);
+ expect(pkgArray.dependencies.has('dep2')).toBe(true);
+
+ // Multiple groups with mixed one/multiple dependencies
+ const nuspecMixed: string = `
+
+
+ testpkg
+ 1.0.0
+
+
+
+
+
+
+
+
+
+
+ `;
+ const pkgMixed: NugetPackage = new NugetPackage('testpkg', '1.0.0', nuspecMixed);
+ expect(pkgMixed.dependencies.has('dep1')).toBe(true);
+ expect(pkgMixed.dependencies.has('dep2')).toBe(true);
+ expect(pkgMixed.dependencies.has('dep3')).toBe(true);
+ });
+
const resources: string = path.join(__dirname, 'resources');
const packagesCache: string = path.join(resources, 'packagesconfig', 'packages');