From 5ebf9b47c1894aae6acfbbbabef4991019e874f2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 2 Oct 2023 19:43:39 +0200 Subject: [PATCH] app-backend: refactor to avoid mock-fs Signed-off-by: Patrik Oldsberg --- plugins/app-backend/package.json | 1 - .../app-backend/src/service/appPlugin.test.ts | 41 ++++++++++++------- yarn.lock | 1 - 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index cdbb36d23c..d225cc0c38 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -69,7 +69,6 @@ "@backstage/cli": "workspace:^", "@backstage/types": "workspace:^", "@types/supertest": "^2.0.8", - "mock-fs": "^5.2.0", "msw": "^1.0.0", "node-fetch": "^2.6.7", "supertest": "^6.1.3" diff --git a/plugins/app-backend/src/service/appPlugin.test.ts b/plugins/app-backend/src/service/appPlugin.test.ts index 09061b287d..7bffdd00f6 100644 --- a/plugins/app-backend/src/service/appPlugin.test.ts +++ b/plugins/app-backend/src/service/appPlugin.test.ts @@ -14,33 +14,46 @@ * limitations under the License. */ -import mockFs from 'mock-fs'; -import { resolve as resolvePath } from 'path'; import fetch from 'node-fetch'; -import { mockServices, startTestBackend } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + mockServices, + startTestBackend, +} from '@backstage/backend-test-utils'; import { appPlugin } from './appPlugin'; import { createRootLogger } from '@backstage/backend-common'; +const mockDir = createMockDirectory(); + +jest.mock('../../../../packages/backend-common/src/paths', () => { + const actual = jest.requireActual( + '../../../../packages/backend-common/src/paths', + ); + return { + ...actual, + resolvePackagePath: (pkg: string, ...args: string[]) => { + if (pkg === 'app') { + return mockDir.resolve(...args); + } + return actual.resolvePackagePath(pkg, ...args); + }, + }; +}); + // Make sure root logger is initialized ahead of FS mock createRootLogger(); describe('appPlugin', () => { beforeEach(() => { - mockFs({ - [resolvePath(process.cwd(), 'node_modules/app')]: { - 'package.json': '{}', - dist: { - static: {}, - 'index.html': 'winning', - }, + mockDir.setContent({ + 'package.json': '{}', + dist: { + static: {}, + 'index.html': 'winning', }, }); }); - afterEach(() => { - mockFs.restore(); - }); - it('boots', async () => { const { server } = await startTestBackend({ features: [ diff --git a/yarn.lock b/yarn.lock index 83f578a4c1..e4904f874a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4830,7 +4830,6 @@ __metadata: knex: ^2.0.0 lodash: ^4.17.21 luxon: ^3.0.0 - mock-fs: ^5.2.0 msw: ^1.0.0 node-fetch: ^2.6.7 supertest: ^6.1.3