mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-01 12:18:15 +00:00
fix os.read_dir with symlinks
This commit is contained in:
@@ -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"
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
./a.txt
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user