diff options
| author | Jakob Unterwurzacher | 2025-03-26 23:29:21 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2025-04-19 22:51:52 +0200 | 
| commit | 83e587f4b1803d17e2e9fd0b3860dc9f24117acc (patch) | |
| tree | 15bf9bad8505e473d68f3d43d60a73b03f6a1ffa | |
| parent | 6918a4413decccd2f535e66d12b2e3dee10a74a8 (diff) | |
tests: add TestSeekDir
Acc. to the commit message,
https://github.com/hanwen/go-fuse/commit/0d1228a39dd49c83c8b7c30dec7928f5d7d84cc0
break seeking in directories. This commit appears in go-fuse v2.6.0.
| -rw-r--r-- | tests/defaults/main_test.go | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/tests/defaults/main_test.go b/tests/defaults/main_test.go index d0210e2..1cc7cb6 100644 --- a/tests/defaults/main_test.go +++ b/tests/defaults/main_test.go @@ -3,6 +3,7 @@ package defaults  import (  	"bytes" +	"fmt"  	"io"  	"io/ioutil"  	"os" @@ -506,3 +507,51 @@ func TestForceOwner(t *testing.T) {  		t.Errorf("LOOKUP returned uid or gid != 1234: %#v", st)  	}  } + +func TestSeekDir(t *testing.T) { +	wd := test_helpers.DefaultPlainDir + "/" + t.Name() +	err := os.Mkdir(wd, 0700) +	if err != nil { +		t.Fatal(err) +	} +	for i := 0; i < 10; i++ { +		path := fmt.Sprintf(wd+"/%3d", i) +		err = os.WriteFile(path, nil, 0600) +		if err != nil { +			t.Fatal(err) +		} +	} + +	fd, err := syscall.Open(wd, syscall.O_DIRECTORY|syscall.O_RDONLY, 0) +	if err != nil { +		t.Fatal(err) +	} +	defer syscall.Close(fd) + +	buf := make([]byte, 1000) +	n, err := unix.Getdents(fd, buf) +	if err != nil { +		t.Fatal(err) +	} +	t.Logf("1st getdents returned %d bytes", n) + +	n, err = unix.Getdents(fd, buf) +	if err != nil { +		t.Fatal(err) +	} +	t.Logf("2nd getdents returned %d bytes", n) + +	_, err = unix.Seek(fd, 0, 0) +	if err != nil { +		t.Error(err) +	} + +	n, err = unix.Getdents(fd, buf) +	if err != nil { +		t.Fatal(err) +	} +	t.Logf("3rd getdents (after seek) returned %d bytes", n) +	if n == 0 { +		t.Error("Seek did not have any effect") +	} +} | 
