lib9p

Go 9P library.
Log | Files | Refs | LICENSE

commit 418ddacedb1be0d07bb58845af2c5594a0dcaea0
parent bd05b065a0165778d8b25f906af6e8f0e6a3e30e
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Tue,  9 Jan 2024 16:01:24 +0900

add test for directory reading

Diffstat:
Mserver_test.go | 30++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+), 0 deletions(-)

diff --git a/server_test.go b/server_test.go @@ -555,10 +555,40 @@ func testSRead(t *testing.T, pathname string, c *conn, tc, rc chan *request) { t.Fatal(err) } if fi.IsDir() { + fid, err := c.fPool.add(0) + if err != nil { + t.Fatal(err) + } + fid.omode = OREAD + fid.file = f + fid.path = pathname + tc <- &request{ifcall: &TRead{Fid: 0, Offset: 0, Count: 1000}} + ofcall := (<-rc).ofcall + rread, ok := ofcall.(*RRead) + if !ok { + t.Errorf("unexpected message: %v", ofcall) + return + } + c.fPool.delete(0) + b := rread.Data + cstats := make(map[string]*Stat, len(f.children)) + for len(b) != 0 { + st := NewStat(b) + b = b[2+st.Size():] + cstats[st.Name] = st + } for _, child := range f.children { + if !reflect.DeepEqual(cstats[child.stat.Name], &child.stat) { + t.Errorf("readdir returned wrong stat:\n\twant: %v\n\tgot: %v", + child.stat, cstats[child.stat.Name]) + } + delete(cstats, child.stat.Name) cpath := path.Join(pathname, child.stat.Name) testSRead(t, cpath, c, tc, rc) } + if len(cstats) != 0 { + t.Errorf("readdir returned unexistent stats: %v", cstats) + } } else { fid, err := c.fPool.add(0) defer c.fPool.delete(0)