From a7576b044b2bb11add49b773e57073f464643c01 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 29 Jul 2026 15:48:12 +0000 Subject: [PATCH] fix: normalize Windows backslashes in makePathRelative results On Windows, fileSystemUtil.makePathRelative() returns paths using OS-native backslashes (e.g. resources\database\migrations\). When these are later used to build a BoxLang component path, the backslashes are not treated as delimiters and corrupt the class name, causing a ClassNotFoundBoxLangException. Wrap all three makePathRelative call sites in replace(..., "\\", "/", "all") to normalize to forward slashes before the paths are stored or forwarded, matching the same pattern already used in getInstalledBoxLangDriverSlugs(). Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_01Pxe6woQNVSZ9kR9MdjxKRr --- models/BaseMigrationCommand.cfc | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/models/BaseMigrationCommand.cfc b/models/BaseMigrationCommand.cfc index b0416c8..58ee82f 100644 --- a/models/BaseMigrationCommand.cfc +++ b/models/BaseMigrationCommand.cfc @@ -42,13 +42,23 @@ component { } var settings = config[ arguments.manager ]; if ( len( trim( settings.migrationsDirectory ) ) ) { - settings.migrationsDirectory = fileSystemUtil.makePathRelative( - fileSystemUtil.resolvePath( settings.migrationsDirectory ) + settings.migrationsDirectory = replace( + fileSystemUtil.makePathRelative( + fileSystemUtil.resolvePath( settings.migrationsDirectory ) + ), + "\\", + "/", + "all" ); } if ( settings.keyExists( "seedsDirectory" ) && len( trim( settings.seedsDirectory ) ) ) { - settings.seedsDirectory = fileSystemUtil.makePathRelative( - fileSystemUtil.resolvePath( settings.seedsDirectory ) + settings.seedsDirectory = replace( + fileSystemUtil.makePathRelative( + fileSystemUtil.resolvePath( settings.seedsDirectory ) + ), + "\\", + "/", + "all" ); if ( !directoryExists( expandPath( settings.seedsDirectory ) ) ) { @@ -110,8 +120,13 @@ component { * resolved and made relative to the current working directory. */ public void function setMigrationPath( required migrationsDirectory ) { - var relativePath = fileSystemUtil.makePathRelative( - fileSystemUtil.resolvePath( migrationsDirectory ) + var relativePath = replace( + fileSystemUtil.makePathRelative( + fileSystemUtil.resolvePath( migrationsDirectory ) + ), + "\\", + "/", + "all" ); migrationService.setMigrationsDirectory( relativePath ); }