From a60c1c47524b092713740f500d54f9f9c037a628 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Wed, 5 Mar 2025 18:35:12 +0100
Subject: [PATCH] fix(global): import config file as url (#34637)

---
 lib/workers/global/config/parse/file.spec.ts |  4 +++-
 lib/workers/global/config/parse/file.ts      | 10 +++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/lib/workers/global/config/parse/file.spec.ts b/lib/workers/global/config/parse/file.spec.ts
index a07f0aa2a7..f4827e6ad6 100644
--- a/lib/workers/global/config/parse/file.spec.ts
+++ b/lib/workers/global/config/parse/file.spec.ts
@@ -50,7 +50,9 @@ describe('workers/global/config/parse/file', () => {
 
     it('migrates', async () => {
       const configFile = upath.resolve(__dirname, './__fixtures__/config2.js');
-      const res = await file.getConfig({ RENOVATE_CONFIG_FILE: configFile });
+      // for coverage
+      const relativePath = upath.relative(process.cwd(), configFile);
+      const res = await file.getConfig({ RENOVATE_CONFIG_FILE: relativePath });
       expect(res).toMatchSnapshot();
       expect(res.rangeStrategy).toBe('bump');
     });
diff --git a/lib/workers/global/config/parse/file.ts b/lib/workers/global/config/parse/file.ts
index 8e8d8bb5a3..655503f749 100644
--- a/lib/workers/global/config/parse/file.ts
+++ b/lib/workers/global/config/parse/file.ts
@@ -1,3 +1,4 @@
+import { pathToFileURL } from 'url';
 import is from '@sindresorhus/is';
 import fs from 'fs-extra';
 import JSON5 from 'json5';
@@ -26,9 +27,12 @@ export async function getParsedContent(file: string): Promise<RenovateConfig> {
     case '.cjs':
     case '.mjs':
     case '.js': {
-      const tmpConfig = await import(
-        upath.isAbsolute(file) ? file : `${process.cwd()}/${file}`
-      );
+      const absoluteFilePath = upath.isAbsolute(file)
+        ? file
+        : `${process.cwd()}/${file}`;
+      // use file url paths to avoid issues with windows paths
+      // typescript does not support file URL for import
+      const tmpConfig = await import(pathToFileURL(absoluteFilePath).href);
       /* v8 ignore next: not testable */
       let config = tmpConfig.default ? tmpConfig.default : tmpConfig;
       // Allow the config to be a function
-- 
GitLab