fix os.read_dir with symlinks

This commit is contained in:
Laytan Laats
2024-08-03 00:26:46 +02:00
parent 772dce7e42
commit 99d9e8f8b1
9 changed files with 52 additions and 229 deletions
+1
View File
@@ -30,6 +30,7 @@ download_assets :: proc() {
@(require) import "mem"
@(require) import "net"
@(require) import "odin"
@(require) import "os"
@(require) import "path/filepath"
@(require) import "reflect"
@(require) import "runtime"
+1
View File
@@ -0,0 +1 @@
./a.txt
View File
View File
+35
View File
@@ -0,0 +1,35 @@
package tests_core_os
import "core:os"
import "core:slice"
import "core:testing"
@(test)
read_dir :: proc(t: ^testing.T) {
fd, errno := os.open(#directory + "/dir")
testing.expect_value(t, errno, os.ERROR_NONE)
defer os.close(fd)
dir, errno2 := os.read_dir(fd, -1)
testing.expect_value(t, errno2, os.ERROR_NONE)
defer os.file_info_slice_delete(dir)
slice.sort_by_key(dir, proc(fi: os.File_Info) -> string { return fi.name })
testing.expect_value(t, len(dir), 3)
testing.expect_value(t, dir[0].name, "alink.txt")
testing.expect(t, !dir[0].is_dir, "is a directory")
when ODIN_OS == .Windows {
testing.expect(t, dir[0].mode & os.File_Mode_Sym_Link != 0, "not a symlink")
} else {
testing.expect(t, os.S_ISLNK(auto_cast dir[0].mode), "not a symlink")
}
testing.expect_value(t, dir[1].name, "b.txt")
testing.expect_value(t, dir[2].name, "sub")
testing.expect(t, dir[2].is_dir, "is not a directory")
}