File tree Expand file tree Collapse file tree 2 files changed +15
-11
lines changed Expand file tree Collapse file tree 2 files changed +15
-11
lines changed Original file line number Diff line number Diff line change @@ -35,15 +35,18 @@ object PathChunk extends PathChunkMacros {
3535 }
3636 }.reverse
3737 private [os] def segmentsFromStringLiteralValidation (literal : String ): Array [String ] = {
38- val stringSegments = segmentsFromString(literal)
39- val validSegmnts = reduceUps(validLiteralSegments(stringSegments))
40- val sanitizedLiteral = validSegmnts.mkString(" /" )
41- if (validSegmnts.isEmpty) throw InvalidSegment (
42- literal,
43- s " Literal path sequence [ $literal] doesn't affect path being formed, please remove it "
44- )
45- if (literal != sanitizedLiteral) throw NonCanonicalLiteral (literal, sanitizedLiteral)
46- stringSegments
38+ if (literal == " ." ) Array .empty
39+ else {
40+ val stringSegments = segmentsFromString(literal)
41+ val validSegments = reduceUps(validLiteralSegments(stringSegments))
42+ val sanitizedLiteral = validSegments.mkString(" /" )
43+ if (validSegments.isEmpty) throw InvalidSegment (
44+ literal,
45+ s " Literal path sequence [ $literal] doesn't affect path being formed, please remove it "
46+ )
47+ if (literal != sanitizedLiteral) throw NonCanonicalLiteral (literal, sanitizedLiteral)
48+ stringSegments
49+ }
4750 }
4851 private def validLiteralSegments (segments : Array [String ]): Array [String ] = {
4952 val AllowedLiteralSegment = " .."
Original file line number Diff line number Diff line change @@ -60,6 +60,9 @@ object PathTests extends TestSuite {
6060 assert(root / " hello" / " .." / " world" == root / " hello" / os.up / " world" )
6161 assert(root / " hello" / " ../world" == root / " hello" / os.up / " world" )
6262 }
63+ test(" literal [.]" ) {
64+ assert( root / " ." == root)
65+ }
6366
6467 test(" Compile errors" ) {
6568
@@ -122,13 +125,11 @@ object PathTests extends TestSuite {
122125 compileError(""" root / "//foo/" """ ).check(" " , nonCanonicalLiteral(" //foo/" , " foo" ))
123126
124127 compileError(""" rel / "src" / "" """ ).check(" " , removeLiteralErr(" " ))
125- compileError(""" rel / "src" / "." """ ).check(" " , removeLiteralErr(" ." ))
126128
127129 compileError(""" root / "src/" """ ).check(" " , nonCanonicalLiteral(" src/" , " src" ))
128130 compileError(""" root / "src/." """ ).check(" " , nonCanonicalLiteral(" src/." , " src" ))
129131
130132 compileError(""" root / "" """ ).check(" " , removeLiteralErr(" " ))
131- compileError(""" root / "." """ ).check(" " , removeLiteralErr(" ." ))
132133
133134 }
134135 }
You can’t perform that action at this time.
0 commit comments