diff --git a/Assets/Tests/Editor/NativeCliInstallerTests.cs b/Assets/Tests/Editor/NativeCliInstallerTests.cs index e9f87194e9..1189c378f4 100644 --- a/Assets/Tests/Editor/NativeCliInstallerTests.cs +++ b/Assets/Tests/Editor/NativeCliInstallerTests.cs @@ -514,6 +514,20 @@ public void BuildPathWithInstallDirectory_OnWindowsMovesExistingNativeInstallDir Assert.That(result, Is.EqualTo("C:\\Users\\ExampleUser\\Programs\\uloop\\bin;C:\\npm")); } + [Test] + public void BuildPathWithInstallDirectory_OnWindowsRemovesTrailingSeparatorDuplicate() + { + // Verifies that a trailing separator does not preserve a duplicate native install directory. + string result = NativeCliInstallPathResolver.BuildPathWithInstallDirectory( + "C:\\npm;C:\\Users\\ExampleUser\\Programs\\uloop\\bin\\;C:\\Tools", + "C:\\Users\\ExampleUser\\Programs\\uloop\\bin", + RuntimePlatform.WindowsEditor); + + Assert.That( + result, + Is.EqualTo("C:\\Users\\ExampleUser\\Programs\\uloop\\bin;C:\\npm;C:\\Tools")); + } + [Test] public void BuildPathWithInstallDirectory_OnMacPrependsMissingNativeInstallDir() { diff --git a/Packages/src/Editor/Infrastructure/CLI/NativeCliInstallPathResolver.cs b/Packages/src/Editor/Infrastructure/CLI/NativeCliInstallPathResolver.cs index 9661180f47..10c7be305c 100644 --- a/Packages/src/Editor/Infrastructure/CLI/NativeCliInstallPathResolver.cs +++ b/Packages/src/Editor/Infrastructure/CLI/NativeCliInstallPathResolver.cs @@ -43,10 +43,15 @@ internal static string BuildPathWithInstallDirectory( new[] { separator }, StringSplitOptions.RemoveEmptyEntries); StringComparison comparison = GetPathComparison(platform); + string normalizedInstallDirectory = NormalizePathForComparison(installDirectory, platform); StringBuilder builder = new(installDirectory); foreach (string entry in entries) { - if (string.Equals(entry, installDirectory, comparison)) + if (!string.IsNullOrWhiteSpace(entry) + && string.Equals( + NormalizePathForComparison(entry, platform), + normalizedInstallDirectory, + comparison)) { continue; }