github.com/rish1988/moby@v25.0.2+incompatible/pkg/system/stat_unix_test.go (about)

     1  //go:build linux || freebsd
     2  
     3  package system // import "github.com/docker/docker/pkg/system"
     4  
     5  import (
     6  	"os"
     7  	"path/filepath"
     8  	"syscall"
     9  	"testing"
    10  
    11  	"gotest.tools/v3/assert"
    12  )
    13  
    14  // TestFromStatT tests fromStatT for a tempfile
    15  func TestFromStatT(t *testing.T) {
    16  	file := filepath.Join(t.TempDir(), "exist")
    17  	if err := os.WriteFile(file, []byte("hello"), 0o644); err != nil {
    18  		t.Fatal(err)
    19  	}
    20  
    21  	stat := &syscall.Stat_t{}
    22  	err := syscall.Lstat(file, stat)
    23  	assert.NilError(t, err)
    24  
    25  	s, err := fromStatT(stat)
    26  	assert.NilError(t, err)
    27  
    28  	if stat.Mode != s.Mode() {
    29  		t.Fatal("got invalid mode")
    30  	}
    31  	if stat.Uid != s.UID() {
    32  		t.Fatal("got invalid uid")
    33  	}
    34  	if stat.Gid != s.GID() {
    35  		t.Fatal("got invalid gid")
    36  	}
    37  	//nolint:unconvert // conversion needed to fix mismatch types on mips64el
    38  	if uint64(stat.Rdev) != s.Rdev() {
    39  		t.Fatal("got invalid rdev")
    40  	}
    41  	if stat.Mtim != s.Mtim() {
    42  		t.Fatal("got invalid mtim")
    43  	}
    44  }