From b23358fcfab57a5e68f88fe79c5a8abdfb3643e4 Mon Sep 17 00:00:00 2001 From: "Aryan Singh K." <70511529+aryansk@users.noreply.github.com> Date: Sun, 9 Aug 2026 02:09:34 +0530 Subject: [PATCH] Fix lexical normalization assertion for parent traversal --- Sources/System/FilePath/FilePathParsing.swift | 2 +- Tests/SystemTests/FilePathTests/FilePathSyntaxTest.swift | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Sources/System/FilePath/FilePathParsing.swift b/Sources/System/FilePath/FilePathParsing.swift index f372dd67e..efff34922 100644 --- a/Sources/System/FilePath/FilePathParsing.swift +++ b/Sources/System/FilePath/FilePathParsing.swift @@ -168,7 +168,7 @@ extension FilePath { readIdx = nextStart continue } - assert(self.root == nil && self.components.first!.kind == .parentDirectory) + assert(!hasRoot && _isParentDirectory(priorComponent)) } } diff --git a/Tests/SystemTests/FilePathTests/FilePathSyntaxTest.swift b/Tests/SystemTests/FilePathTests/FilePathSyntaxTest.swift index 0fdfbc279..9df2019ec 100644 --- a/Tests/SystemTests/FilePathTests/FilePathSyntaxTest.swift +++ b/Tests/SystemTests/FilePathTests/FilePathSyntaxTest.swift @@ -436,6 +436,13 @@ final class FilePathSyntaxTest: XCTestCase { lexicallyNormalized: ".." ), + .unix( + "foo/../../../bar", + dirname: "foo/../../..", basename: "bar", + components: ["foo", "..", "..", "..", "bar"], + lexicallyNormalized: "../../bar" + ), + .unix( "a/.././.././../b", dirname: "a/.././.././..", basename: "b",