commit df0311fb8e59f861c9192903ee3310d79cd70669
parent 649cfd65e5ebf86946766b0334bb3f41ace89a3e
Author: Matsuda Kenji <info@mtkn.jp>
Date: Thu, 21 Dec 2023 09:33:01 +0900
rename
Diffstat:
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)
- }
- }
-}