From 1fb03402eab70fd02e33aa8a70399f0c01faa7b8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Aug 2023 14:03:24 +0200 Subject: [PATCH] backend-app-api: make sure DependencyGraph.findUnsatisfiedDeps doesn't break on circular deps Signed-off-by: Patrik Oldsberg --- .../src/lib/DependencyGraph.test.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/packages/backend-app-api/src/lib/DependencyGraph.test.ts b/packages/backend-app-api/src/lib/DependencyGraph.test.ts index 9fd6219ab3..65efac0252 100644 --- a/packages/backend-app-api/src/lib/DependencyGraph.test.ts +++ b/packages/backend-app-api/src/lib/DependencyGraph.test.ts @@ -109,6 +109,29 @@ describe('DependencyGraph', () => { ).toEqual([{ value: '1', unsatisfied: ['a'] }]); }); + it('should handle circular dependencies', async () => { + expect( + DependencyGraph.fromMap({ + 1: { consumes: ['a'], provides: ['a'] }, + }).findUnsatisfiedDeps(), + ).toEqual([]); + + expect( + DependencyGraph.fromMap({ + 1: { consumes: ['a'], provides: ['b'] }, + 2: { consumes: ['b'], provides: ['a'] }, + }).findUnsatisfiedDeps(), + ).toEqual([]); + + expect( + DependencyGraph.fromMap({ + 1: { consumes: ['a'] }, + 2: { consumes: ['b'], provides: ['c'] }, + 3: { consumes: ['c'], provides: ['a', 'b'] }, + }).findUnsatisfiedDeps(), + ).toEqual([]); + }); + it('should find multiple unsatisfied deps for one node', async () => { expect( DependencyGraph.fromMap({