File tree 2 files changed +15
-11
lines changed
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 {
35
35
}
36
36
}.reverse
37
37
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
+ }
47
50
}
48
51
private def validLiteralSegments (segments : Array [String ]): Array [String ] = {
49
52
val AllowedLiteralSegment = " .."
Original file line number Diff line number Diff line change @@ -60,6 +60,9 @@ object PathTests extends TestSuite {
60
60
assert(root / " hello" / " .." / " world" == root / " hello" / os.up / " world" )
61
61
assert(root / " hello" / " ../world" == root / " hello" / os.up / " world" )
62
62
}
63
+ test(" literal [.]" ) {
64
+ assert(root / " ." == root)
65
+ }
63
66
64
67
test(" Compile errors" ) {
65
68
@@ -122,13 +125,11 @@ object PathTests extends TestSuite {
122
125
compileError(""" root / "//foo/" """ ).check(" " , nonCanonicalLiteral(" //foo/" , " foo" ))
123
126
124
127
compileError(""" rel / "src" / "" """ ).check(" " , removeLiteralErr(" " ))
125
- compileError(""" rel / "src" / "." """ ).check(" " , removeLiteralErr(" ." ))
126
128
127
129
compileError(""" root / "src/" """ ).check(" " , nonCanonicalLiteral(" src/" , " src" ))
128
130
compileError(""" root / "src/." """ ).check(" " , nonCanonicalLiteral(" src/." , " src" ))
129
131
130
132
compileError(""" root / "" """ ).check(" " , removeLiteralErr(" " ))
131
- compileError(""" root / "." """ ).check(" " , removeLiteralErr(" ." ))
132
133
133
134
}
134
135
}
You can’t perform that action at this time.
0 commit comments