| //go:build linux || freebsd | |
| // +build linux freebsd | |
| package system // import "github.com/docker/docker/pkg/system" | |
| import ( | |
| "os" | |
| "path/filepath" | |
| "syscall" | |
| "testing" | |
| "gotest.tools/v3/assert" | |
| ) | |
| // TestFromStatT tests fromStatT for a tempfile | |
| func TestFromStatT(t *testing.T) { | |
| file := filepath.Join(t.TempDir(), "exist") | |
| if err := os.WriteFile(file, []byte("hello"), 0o644); err != nil { | |
| t.Fatal(err) | |
| } | |
| stat := &syscall.Stat_t{} | |
| err := syscall.Lstat(file, stat) | |
| assert.NilError(t, err) | |
| s, err := fromStatT(stat) | |
| assert.NilError(t, err) | |
| if stat.Mode != s.Mode() { | |
| t.Fatal("got invalid mode") | |
| } | |
| if stat.Uid != s.UID() { | |
| t.Fatal("got invalid uid") | |
| } | |
| if stat.Gid != s.GID() { | |
| t.Fatal("got invalid gid") | |
| } | |
| //nolint:unconvert // conversion needed to fix mismatch types on mips64el | |
| if uint64(stat.Rdev) != s.Rdev() { | |
| t.Fatal("got invalid rdev") | |
| } | |
| if stat.Mtim != s.Mtim() { | |
| t.Fatal("got invalid mtim") | |
| } | |
| } |