From c0975c32a273c452c7e4353096f48e1addec8460 Mon Sep 17 00:00:00 2001 From: hasezoey Date: Mon, 9 Dec 2024 16:32:28 +0100 Subject: [PATCH 1/5] fix(DryMongoBinary::getPath): always absoluteize System_Binary path after the logs so that it is obvious what was provided --- .../src/util/DryMongoBinary.ts | 2 +- .../src/util/__tests__/dryBinary.test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/mongodb-memory-server-core/src/util/DryMongoBinary.ts b/packages/mongodb-memory-server-core/src/util/DryMongoBinary.ts index e773d4428..564ba5efd 100644 --- a/packages/mongodb-memory-server-core/src/util/DryMongoBinary.ts +++ b/packages/mongodb-memory-server-core/src/util/DryMongoBinary.ts @@ -87,7 +87,7 @@ export class DryMongoBinary { if (!!useOpts.systemBinary) { log(`locateBinary: env "SYSTEM_BINARY" was provided with value: "${useOpts.systemBinary}"`); - const systemReturn = await this.getSystemPath(useOpts.systemBinary); + const systemReturn = await this.getSystemPath(path.resolve(useOpts.systemBinary)); if (isNullOrUndefined(systemReturn)) { throw new BinaryNotFoundError(useOpts.systemBinary, ' (systemBinary)'); diff --git a/packages/mongodb-memory-server-core/src/util/__tests__/dryBinary.test.ts b/packages/mongodb-memory-server-core/src/util/__tests__/dryBinary.test.ts index 67ba58323..ba2517fa3 100644 --- a/packages/mongodb-memory-server-core/src/util/__tests__/dryBinary.test.ts +++ b/packages/mongodb-memory-server-core/src/util/__tests__/dryBinary.test.ts @@ -499,6 +499,18 @@ describe('DryBinary', () => { expect(fspromises.access).toHaveBeenCalled(); }); + it('should return SystemBinary with absolute path', async () => { + const mockBinary = 'bin/mongod'; + process.env[envName(ResolveConfigVariables.SYSTEM_BINARY)] = mockBinary; + jest.spyOn(fspromises, 'access').mockResolvedValue(void 0); + + const returnValue = await binary.DryMongoBinary.locateBinary({ version: '1.1.1' }); + expect(returnValue).not.toEqual(mockBinary); + expect(returnValue).toEqual(path.resolve(mockBinary)); + expect(binary.DryMongoBinary.binaryCache.size).toBe(0); // system binaries dont get added to the cache + expect(fspromises.access).toHaveBeenCalled(); + }); + it('should throw an error if SystemBinary was provided, but not found', async () => { const mockBinary = '/usr/local/bin/mongod'; process.env[envName(ResolveConfigVariables.SYSTEM_BINARY)] = mockBinary; From 613e6704db78c423afbafc3b88301f6f4ea34d8d Mon Sep 17 00:00:00 2001 From: hasezoey Date: Mon, 9 Dec 2024 16:37:42 +0100 Subject: [PATCH 2/5] fix(MongoBinary::getPath): check that "stdout" actually exists because it seemingly can be undefined, see #742#issuecomment-2528284865 --- packages/mongodb-memory-server-core/src/util/MongoBinary.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/mongodb-memory-server-core/src/util/MongoBinary.ts b/packages/mongodb-memory-server-core/src/util/MongoBinary.ts index 39d539fb2..5d1fc8cfa 100644 --- a/packages/mongodb-memory-server-core/src/util/MongoBinary.ts +++ b/packages/mongodb-memory-server-core/src/util/MongoBinary.ts @@ -89,7 +89,8 @@ export class MongoBinary { if (!isNullOrUndefined(binaryPath)) { log(`getPath: Spawning binaryPath "${binaryPath}" to get version`); const spawnOutput = spawnSync(binaryPath, ['--version']) - .stdout.toString() + // NOTE: "stdout" seemingly can be "undefined", see https://github.com/typegoose/mongodb-memory-server/issues/742#issuecomment-2528284865 + .stdout?.toString() // this regex is to match the first line of the "mongod --version" output "db version v4.0.25" OR "db version v4.2.19-11-ge2f2736" .match(/^\s*db\s+version\s+v?(\d+\.\d+\.\d+)(-\d*)?(-[a-zA-Z0-9].*)?\s*$/im); From 03c84129a9a58c9d7325d127eea6fb18b18de461 Mon Sep 17 00:00:00 2001 From: hasezoey Date: Mon, 9 Dec 2024 16:42:05 +0100 Subject: [PATCH 3/5] fix(MongoBinary): dont execute systembinary "--version" cmd if version check is false maybe this will make it a workaround for third-party binaries that maybe dont conform to the official version output. --- .../src/util/MongoBinary.ts | 24 +++++++++---------- .../src/util/__tests__/MongoBinary.test.ts | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/mongodb-memory-server-core/src/util/MongoBinary.ts b/packages/mongodb-memory-server-core/src/util/MongoBinary.ts index 5d1fc8cfa..3224537cd 100644 --- a/packages/mongodb-memory-server-core/src/util/MongoBinary.ts +++ b/packages/mongodb-memory-server-core/src/util/MongoBinary.ts @@ -87,20 +87,20 @@ export class MongoBinary { if (!!options.systemBinary) { // this case should actually never be false, because if "SYSTEM_BINARY" is set, "locateBinary" will run "getSystemPath" which tests the path for permissions if (!isNullOrUndefined(binaryPath)) { - log(`getPath: Spawning binaryPath "${binaryPath}" to get version`); - const spawnOutput = spawnSync(binaryPath, ['--version']) - // NOTE: "stdout" seemingly can be "undefined", see https://github.com/typegoose/mongodb-memory-server/issues/742#issuecomment-2528284865 - .stdout?.toString() - // this regex is to match the first line of the "mongod --version" output "db version v4.0.25" OR "db version v4.2.19-11-ge2f2736" - .match(/^\s*db\s+version\s+v?(\d+\.\d+\.\d+)(-\d*)?(-[a-zA-Z0-9].*)?\s*$/im); - - assertion( - !isNullOrUndefined(spawnOutput), - new Error('Couldnt find an version from system binary output!') - ); - // dont warn if the versions dont match if "SYSTEM_BINARY_VERSION_CHECK" is false, but still test the binary if it is available to be executed if (envToBool(resolveConfig(ResolveConfigVariables.SYSTEM_BINARY_VERSION_CHECK))) { + log(`getPath: Spawning binaryPath "${binaryPath}" to get version`); + const spawnOutput = spawnSync(binaryPath, ['--version']) + // NOTE: "stdout" seemingly can be "undefined", see https://github.com/typegoose/mongodb-memory-server/issues/742#issuecomment-2528284865 + .stdout?.toString() + // this regex is to match the first line of the "mongod --version" output "db version v4.0.25" OR "db version v4.2.19-11-ge2f2736" + .match(/^\s*db\s+version\s+v?(\d+\.\d+\.\d+)(-\d*)?(-[a-zA-Z0-9].*)?\s*$/im); + + assertion( + !isNullOrUndefined(spawnOutput), + new Error('Couldnt find an version from system binary output!') + ); + log('getPath: Checking & Warning about version conflicts'); const binaryVersion = spawnOutput[1]; diff --git a/packages/mongodb-memory-server-core/src/util/__tests__/MongoBinary.test.ts b/packages/mongodb-memory-server-core/src/util/__tests__/MongoBinary.test.ts index 287835f87..587d99171 100644 --- a/packages/mongodb-memory-server-core/src/util/__tests__/MongoBinary.test.ts +++ b/packages/mongodb-memory-server-core/src/util/__tests__/MongoBinary.test.ts @@ -192,7 +192,7 @@ build environment: expect(console.warn).toHaveBeenCalledTimes(1); }); - it('should return and check an SYSTEM_BINARY and dont warn version conflict if SYSTEM_BINARY_VERSION_CHECK is false', async () => { + it('should return and check a SYSTEM_BINARY and dont warn version conflict if SYSTEM_BINARY_VERSION_CHECK is false', async () => { jest.spyOn(console, 'warn'); // Output taken from mongodb x64 for "ubuntu" version "4.0.25" // DO NOT INDENT THE TEXT @@ -218,7 +218,7 @@ build environment: process.env[envName(ResolveConfigVariables.SYSTEM_BINARY_VERSION_CHECK)] = 'false'; const output = await MongoBinary.getPath(); - expect(childProcess.spawnSync).toHaveBeenCalledTimes(1); + expect(childProcess.spawnSync).toHaveBeenCalledTimes(0); expect(MongoBinary.download).not.toHaveBeenCalled(); expect(console.warn).not.toHaveBeenCalled(); expect(output).toBe(sysBinaryPath); From 9c774a975f6044c5ac899b4ab3d7ff9a74be0c45 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 9 Dec 2024 15:46:10 +0000 Subject: [PATCH 4/5] release: v10.1.3-beta.1 --- CHANGELOG.md | 9 +++++++++ packages/mongodb-memory-server-core/package.json | 2 +- packages/mongodb-memory-server-global-4.0/package.json | 4 ++-- packages/mongodb-memory-server-global-4.2/package.json | 4 ++-- packages/mongodb-memory-server-global-4.4/package.json | 4 ++-- packages/mongodb-memory-server-global/package.json | 4 ++-- packages/mongodb-memory-server/package.json | 4 ++-- 7 files changed, 20 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 190f3a609..b05b1aa07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [10.1.3-beta.1](https://github.com/typegoose/mongodb-memory-server/compare/v10.1.2...v10.1.3-beta.1) (2024-12-09) + + +### Fixes + +* **DryMongoBinary::getPath:** always absoluteize System_Binary path ([c0975c3](https://github.com/typegoose/mongodb-memory-server/commit/c0975c32a273c452c7e4353096f48e1addec8460)) +* **MongoBinary::getPath:** check that "stdout" actually exists ([613e670](https://github.com/typegoose/mongodb-memory-server/commit/613e6704db78c423afbafc3b88301f6f4ea34d8d)), closes [#742](https://github.com/typegoose/mongodb-memory-server/issues/742) [#issuecomment-2528284865](https://github.com/typegoose/mongodb-memory-server/issues/issuecomment-2528284865) +* **MongoBinary:** dont execute systembinary "--version" cmd if version check is false ([03c8412](https://github.com/typegoose/mongodb-memory-server/commit/03c84129a9a58c9d7325d127eea6fb18b18de461)) + ## [10.1.2](https://github.com/typegoose/mongodb-memory-server/compare/v10.1.1...v10.1.2) (2024-10-11) diff --git a/packages/mongodb-memory-server-core/package.json b/packages/mongodb-memory-server-core/package.json index f8cccd3a2..4ebf373b0 100644 --- a/packages/mongodb-memory-server-core/package.json +++ b/packages/mongodb-memory-server-core/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-memory-server-core", - "version": "10.1.2", + "version": "10.1.3-beta.1", "description": "MongoDB Server for testing (core package, without autodownload). The server will allow you to connect your favourite ODM or client library to the MongoDB Server and run parallel integration tests isolated from each other.", "main": "lib/index", "types": "lib/index.d.ts", diff --git a/packages/mongodb-memory-server-global-4.0/package.json b/packages/mongodb-memory-server-global-4.0/package.json index 0741431c9..ad34b14f8 100644 --- a/packages/mongodb-memory-server-global-4.0/package.json +++ b/packages/mongodb-memory-server-global-4.0/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-memory-server-global-4.0", - "version": "10.1.2", + "version": "10.1.3-beta.1", "mongodb_version": "4.0.28", "description": "MongoDB Server for testing (auto-download 4.0 version to ~/.cache/mongodb-binaries).", "main": "index.js", @@ -25,7 +25,7 @@ "mongomem" ], "dependencies": { - "mongodb-memory-server-core": "10.1.2", + "mongodb-memory-server-core": "10.1.3-beta.1", "tslib": "^2.7.0" }, "scripts": { diff --git a/packages/mongodb-memory-server-global-4.2/package.json b/packages/mongodb-memory-server-global-4.2/package.json index d053c2791..1559142d7 100644 --- a/packages/mongodb-memory-server-global-4.2/package.json +++ b/packages/mongodb-memory-server-global-4.2/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-memory-server-global-4.2", - "version": "10.1.2", + "version": "10.1.3-beta.1", "mongodb_version": "4.2.24", "description": "MongoDB Server for testing (auto-download 4.2 version to ~/.cache/mongodb-binaries).", "main": "index.js", @@ -25,7 +25,7 @@ "mongomem" ], "dependencies": { - "mongodb-memory-server-core": "10.1.2", + "mongodb-memory-server-core": "10.1.3-beta.1", "tslib": "^2.7.0" }, "scripts": { diff --git a/packages/mongodb-memory-server-global-4.4/package.json b/packages/mongodb-memory-server-global-4.4/package.json index 0d5bb587c..a2a4c7a1d 100644 --- a/packages/mongodb-memory-server-global-4.4/package.json +++ b/packages/mongodb-memory-server-global-4.4/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-memory-server-global-4.4", - "version": "10.1.2", + "version": "10.1.3-beta.1", "mongodb_version": "4.4.28", "description": "MongoDB Server for testing (auto-download 4.4 version to ~/.cache/mongodb-binaries).", "main": "index.js", @@ -25,7 +25,7 @@ "mongomem" ], "dependencies": { - "mongodb-memory-server-core": "10.1.2", + "mongodb-memory-server-core": "10.1.3-beta.1", "tslib": "^2.7.0" }, "scripts": { diff --git a/packages/mongodb-memory-server-global/package.json b/packages/mongodb-memory-server-global/package.json index e2ae0e542..318be534d 100644 --- a/packages/mongodb-memory-server-global/package.json +++ b/packages/mongodb-memory-server-global/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-memory-server-global", - "version": "10.1.2", + "version": "10.1.3-beta.1", "description": "MongoDB Server for testing (auto-download latest version to ~/.cache/mongodb-binaries).", "main": "index.js", "types": "index.d.ts", @@ -24,7 +24,7 @@ "mongomem" ], "dependencies": { - "mongodb-memory-server-core": "10.1.2", + "mongodb-memory-server-core": "10.1.3-beta.1", "tslib": "^2.7.0" }, "scripts": { diff --git a/packages/mongodb-memory-server/package.json b/packages/mongodb-memory-server/package.json index 1e479c31b..7c3a2dfb9 100644 --- a/packages/mongodb-memory-server/package.json +++ b/packages/mongodb-memory-server/package.json @@ -1,6 +1,6 @@ { "name": "mongodb-memory-server", - "version": "10.1.2", + "version": "10.1.3-beta.1", "description": "MongoDB Server for testing (auto-download latest version). The server will allow you to connect your favourite ODM or client library to the MongoDB Server and run parallel integration tests isolated from each other.", "main": "index.js", "types": "index.d.ts", @@ -24,7 +24,7 @@ "mongomem" ], "dependencies": { - "mongodb-memory-server-core": "10.1.2", + "mongodb-memory-server-core": "10.1.3-beta.1", "tslib": "^2.7.0" }, "scripts": { From b6b01c69332608cfcd30174e1f30446ce7b7f7bc Mon Sep 17 00:00:00 2001 From: hasezoey Date: Mon, 30 Dec 2024 15:55:21 +0100 Subject: [PATCH 5/5] docs: remove trailing commas from json examples re #906 --- README.md | 2 +- docs/guides/enable-debug-mode.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1e6b41078..73fd7958a 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ or { "config": { "mongodbMemoryServer": { - "debug": "1", // also available case-insensitive values: "on" "yes" "true" + "debug": "1" // also available case-insensitive values: "on" "yes" "true" } } } diff --git a/docs/guides/enable-debug-mode.md b/docs/guides/enable-debug-mode.md index 6a5cf0423..233e0ada9 100644 --- a/docs/guides/enable-debug-mode.md +++ b/docs/guides/enable-debug-mode.md @@ -20,7 +20,7 @@ MONGOMS_DEBUG=1 npm run test { "config": { "mongodbMemoryServer": { - "debug": "1", // also available case-insensitive values: "on" "yes" "true" + "debug": "1" // also available case-insensitive values: "on" "yes" "true" } } }