@@ -12,35 +12,45 @@ class PathExtensionsTest extends Specification {
1212 @Shared
1313 private Path tmpdir = Path . of(System . getProperty(" java.io.tmpdir" ))
1414 @Shared
15- private Path unwritable = tmpdir. resolve(" coder-gateway-test/path-extensions/unwritable" )
15+ private Path unwritableFile = tmpdir. resolve(" coder-gateway-test/path-extensions/unwritable/file" )
16+ @Shared
17+ private Path writableFile = tmpdir. resolve(" coder-gateway-test/path-extensions/writable-file" )
1618
1719 void setupSpec () {
18- if (unwritable . parent. toFile(). exists()) {
19- unwritable . parent. toFile(). setWritable(true )
20- unwritable . parent. toFile(). deleteDir()
20+ if (unwritableFile . parent. toFile(). exists()) {
21+ unwritableFile . parent. toFile(). setWritable(true )
22+ unwritableFile . parent. toFile(). deleteDir()
2123 }
22- Files . createDirectories(unwritable. parent)
23- unwritable. toFile(). write(" text" )
24- unwritable. toFile(). setWritable(false )
25- unwritable. parent. toFile(). setWritable(false )
24+ Files . createDirectories(unwritableFile. parent)
25+ unwritableFile. toFile(). write(" text" )
26+ writableFile. toFile(). write(" text" )
27+ unwritableFile. toFile(). setWritable(false )
28+ unwritableFile. parent. toFile(). setWritable(false )
2629 }
2730
28- def " canWrite " () {
31+ def " canCreateDirectory " () {
2932 expect :
3033 use(PathExtensionsKt ) {
31- path. canWrite () == expected
34+ path. canCreateDirectory () == expected
3235 }
3336
3437 where :
35- path | expected
36- unwritable | false
37- unwritable. resolve(" probably/nonexistent" ) | false
38- Path . of(" relative to project" ) | true
39- tmpdir. resolve(" ./foo/bar/../.." ) | true
40- tmpdir | true
41- tmpdir. resolve(" some/nested/non-existent/path" ) | true
42- tmpdir. resolve(" with space" ) | true
43- CoderCLIManager . getConfigDir() | true
44- CoderCLIManager . getDataDir() | true
38+ path | expected
39+ unwritableFile | false
40+ unwritableFile. resolve(" probably/nonexistent" ) | false
41+ // Unfortunately on Windows directories Java will always tell you the
42+ // directory is writable even if it is not.
43+ unwritableFile. parent. resolve(" probably/nonexistent" ) | System . getProperty(" os.name" ). toLowerCase(). contains(" windows" )
44+ writableFile | false
45+ writableFile. parent | true
46+ writableFile. resolve(" nested/under/file" ) | false
47+ writableFile. parent. resolve(" nested/under/dir" ) | true
48+ Path . of(" relative to project" ) | true
49+ tmpdir. resolve(" ./foo/bar/../../coder-gateway-test/path-extensions" ) | true
50+ tmpdir | true
51+ tmpdir. resolve(" some/nested/non-existent/path" ) | true
52+ tmpdir. resolve(" with space" ) | true
53+ CoderCLIManager . getConfigDir() | true
54+ CoderCLIManager . getDataDir() | true
4555 }
4656}
0 commit comments