lib9p

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

commit df0311fb8e59f861c9192903ee3310d79cd70669
parent 649cfd65e5ebf86946766b0334bb3f41ace89a3e
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Thu, 21 Dec 2023 09:33:01 +0900

rename

Diffstat:
Mdiskfs/file_test.go | 1+
Adiskfs/uid.go | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Adiskfs/uid_test.go | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ddiskfs/uid_unix.go | 53-----------------------------------------------------
Ddiskfs/uid_unix_test.go | 85-------------------------------------------------------------------------------
5 files changed, 135 insertions(+), 138 deletions(-)

diff --git a/diskfs/file_test.go b/diskfs/file_test.go @@ -10,6 +10,7 @@ import ( ) func BenchmarkRead(b *testing.B) { + testdir := "../testdir" cr, sw := io.Pipe() defer cr.Close() defer sw.Close() diff --git a/diskfs/uid.go b/diskfs/uid.go @@ -0,0 +1,51 @@ +package diskfs + +import ( + "os/user" +) + +// assume that the group leader has the same name as uid +func isGroupLeader(group, uid string) bool { + if group != uid { + return false + } + usr, err := user.Lookup(uid) + if err != nil { + return false + } + gids, err := usr.GroupIds() + if err != nil { + return false + } + grp, err := user.LookupGroup(group) + if err != nil { + return false + } + for _, gid := range gids { + if grp.Gid == gid { + return true + } + } + return false +} + +func isGroupMember(group, uid string) bool { + usr, err := user.Lookup(uid) + if err != nil { + return false + } + gids, err := usr.GroupIds() + if err != nil { + return false + } + grp, err := user.LookupGroup(group) + if err != nil { + return false + } + for _, gid := range gids { + if grp.Gid == gid { + return true + } + } + return false +} diff --git a/diskfs/uid_test.go b/diskfs/uid_test.go @@ -0,0 +1,83 @@ +package diskfs + +import ( + "os/user" + "strconv" + "testing" +) + +func TestIsGroupLeader(t *testing.T) { + usr, err := user.Current() + if err != nil { + t.Fatalf("get current user: %v", err) + } + grpids, err := usr.GroupIds() + if err != nil { + t.Fatalf("get groups: %v", err) + } + tests := []struct { + name string + uid string + group string + want bool + }{ + {"0", "root", "root", true}, + } + for _, id := range grpids { + grp, err := user.LookupGroupId(id) + if err != nil { + t.Fatalf("lookupgroupid: %v", err) + } + tests = append(tests, struct { + name string + uid string + group string + want bool + }{strconv.Itoa(len(tests)), usr.Username, grp.Name, usr.Username == grp.Name}) + } + for _, test := range tests { + got := isGroupLeader(test.group, test.uid) + if got != test.want { + t.Errorf("%s: isGroupLeader(%s, %s) = %t, want: %t", + test.name, test.group, test.uid, got, test.want) + } + } +} + +func TestIsGroupMember(t *testing.T) { + usr, err := user.Current() + if err != nil { + t.Fatalf("get current user: %v", err) + } + grpids, err := usr.GroupIds() + if err != nil { + t.Fatalf("get groups: %v", err) + } + tests := []struct { + name string + uid string + group string + want bool + }{ + {"0", "root", "root", true}, + } + for _, id := range grpids { + grp, err := user.LookupGroupId(id) + if err != nil { + t.Fatalf("lookupgroupid: %v", err) + } + tests = append(tests, struct { + name string + uid string + group string + want bool + }{strconv.Itoa(len(tests)), usr.Username, grp.Name, true}) + } + for _, test := range tests { + got := isGroupMember(test.group, test.uid) + if got != test.want { + t.Errorf("%s: isGroupMember(%s, %s) = %t, want: %t", + test.name, test.group, test.uid, got, test.want) + } + } +} diff --git a/diskfs/uid_unix.go b/diskfs/uid_unix.go @@ -1,53 +0,0 @@ -//go:build unix - -package diskfs - -import ( - "os/user" -) - -// assume that the group leader has the same name as uid -func isGroupLeader(group, uid string) bool { - if group != uid { - return false - } - usr, err := user.Lookup(uid) - if err != nil { - return false - } - gids, err := usr.GroupIds() - if err != nil { - return false - } - grp, err := user.LookupGroup(group) - if err != nil { - return false - } - for _, gid := range gids { - if grp.Gid == gid { - return true - } - } - return false -} - -func isGroupMember(group, uid string) bool { - usr, err := user.Lookup(uid) - if err != nil { - return false - } - gids, err := usr.GroupIds() - if err != nil { - return false - } - grp, err := user.LookupGroup(group) - if err != nil { - return false - } - for _, gid := range gids { - if grp.Gid == gid { - return true - } - } - return false -} diff --git a/diskfs/uid_unix_test.go b/diskfs/uid_unix_test.go @@ -1,85 +0,0 @@ -//go:build unix - -package diskfs - -import ( - "os/user" - "strconv" - "testing" -) - -func TestIsGroupLeader(t *testing.T) { - usr, err := user.Current() - if err != nil { - t.Fatalf("get current user: %v", err) - } - grpids, err := usr.GroupIds() - if err != nil { - t.Fatalf("get groups: %v", err) - } - tests := []struct { - name string - uid string - group string - want bool - }{ - {"0", "root", "root", true}, - } - for _, id := range grpids { - grp, err := user.LookupGroupId(id) - if err != nil { - t.Fatalf("lookupgroupid: %v", err) - } - tests = append(tests, struct { - name string - uid string - group string - want bool - }{strconv.Itoa(len(tests)), usr.Username, grp.Name, usr.Username == grp.Name}) - } - for _, test := range tests { - got := isGroupLeader(test.group, test.uid) - if got != test.want { - t.Errorf("%s: isGroupLeader(%s, %s) = %t, want: %t", - test.name, test.group, test.uid, got, test.want) - } - } -} - -func TestIsGroupMember(t *testing.T) { - usr, err := user.Current() - if err != nil { - t.Fatalf("get current user: %v", err) - } - grpids, err := usr.GroupIds() - if err != nil { - t.Fatalf("get groups: %v", err) - } - tests := []struct { - name string - uid string - group string - want bool - }{ - {"0", "root", "root", true}, - } - for _, id := range grpids { - grp, err := user.LookupGroupId(id) - if err != nil { - t.Fatalf("lookupgroupid: %v", err) - } - tests = append(tests, struct { - name string - uid string - group string - want bool - }{strconv.Itoa(len(tests)), usr.Username, grp.Name, true}) - } - for _, test := range tests { - got := isGroupMember(test.group, test.uid) - if got != test.want { - t.Errorf("%s: isGroupMember(%s, %s) = %t, want: %t", - test.name, test.group, test.uid, got, test.want) - } - } -}