feat: Add rest of tests to FileInfo
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"archive/tar"
|
"archive/tar"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -269,3 +270,438 @@ func TestNewFileInfoFromTarHeader(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fileInfoFields struct {
|
||||||
|
FileInfo os.FileInfo
|
||||||
|
name string
|
||||||
|
size int64
|
||||||
|
mode fs.FileMode
|
||||||
|
modTime time.Time
|
||||||
|
accessTime time.Time
|
||||||
|
changeTime time.Time
|
||||||
|
gid int
|
||||||
|
uid int
|
||||||
|
isDir bool
|
||||||
|
}
|
||||||
|
|
||||||
|
var nameTests = []struct {
|
||||||
|
name string
|
||||||
|
fields fileInfoFields
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Can get name for file",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
"test.txt",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Can get name for directory",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
"test",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileInfo_Name(t *testing.T) {
|
||||||
|
jsonLogger := &examples.Logger{
|
||||||
|
Verbose: verbose,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range nameTests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
f := &FileInfo{
|
||||||
|
FileInfo: tt.fields.FileInfo,
|
||||||
|
name: tt.fields.name,
|
||||||
|
size: tt.fields.size,
|
||||||
|
mode: tt.fields.mode,
|
||||||
|
modTime: tt.fields.modTime,
|
||||||
|
accessTime: tt.fields.accessTime,
|
||||||
|
changeTime: tt.fields.changeTime,
|
||||||
|
gid: tt.fields.gid,
|
||||||
|
uid: tt.fields.uid,
|
||||||
|
isDir: tt.fields.isDir,
|
||||||
|
log: jsonLogger,
|
||||||
|
}
|
||||||
|
if got := f.Name(); got != tt.want {
|
||||||
|
t.Errorf("FileInfo.Name() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var sizeTests = []struct {
|
||||||
|
name string
|
||||||
|
fields fileInfoFields
|
||||||
|
want int64
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Can get size for file",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Can get size for directory",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
100,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileInfo_Size(t *testing.T) {
|
||||||
|
jsonLogger := &examples.Logger{
|
||||||
|
Verbose: verbose,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range sizeTests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
f := &FileInfo{
|
||||||
|
FileInfo: tt.fields.FileInfo,
|
||||||
|
name: tt.fields.name,
|
||||||
|
size: tt.fields.size,
|
||||||
|
mode: tt.fields.mode,
|
||||||
|
modTime: tt.fields.modTime,
|
||||||
|
accessTime: tt.fields.accessTime,
|
||||||
|
changeTime: tt.fields.changeTime,
|
||||||
|
gid: tt.fields.gid,
|
||||||
|
uid: tt.fields.uid,
|
||||||
|
isDir: tt.fields.isDir,
|
||||||
|
log: jsonLogger,
|
||||||
|
}
|
||||||
|
if got := f.Size(); got != tt.want {
|
||||||
|
t.Errorf("FileInfo.Size() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var modeTests = []struct {
|
||||||
|
name string
|
||||||
|
fields fileInfoFields
|
||||||
|
want os.FileMode
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Can get mode for file",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
os.ModePerm.Perm(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Can get mode for directory",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
os.ModePerm.Perm(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileInfo_Mode(t *testing.T) {
|
||||||
|
jsonLogger := &examples.Logger{
|
||||||
|
Verbose: verbose,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range modeTests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
f := &FileInfo{
|
||||||
|
FileInfo: tt.fields.FileInfo,
|
||||||
|
name: tt.fields.name,
|
||||||
|
size: tt.fields.size,
|
||||||
|
mode: tt.fields.mode,
|
||||||
|
modTime: tt.fields.modTime,
|
||||||
|
accessTime: tt.fields.accessTime,
|
||||||
|
changeTime: tt.fields.changeTime,
|
||||||
|
gid: tt.fields.gid,
|
||||||
|
uid: tt.fields.uid,
|
||||||
|
isDir: tt.fields.isDir,
|
||||||
|
log: jsonLogger,
|
||||||
|
}
|
||||||
|
if got := f.Mode(); !reflect.DeepEqual(got, tt.want) {
|
||||||
|
t.Errorf("FileInfo.Mode() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var modTimeTests = []struct {
|
||||||
|
name string
|
||||||
|
fields fileInfoFields
|
||||||
|
want time.Time
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Can get modTime for file",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
now,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Can get modTime for directory",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
now,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileInfo_ModTime(t *testing.T) {
|
||||||
|
jsonLogger := &examples.Logger{
|
||||||
|
Verbose: verbose,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range modTimeTests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
f := &FileInfo{
|
||||||
|
FileInfo: tt.fields.FileInfo,
|
||||||
|
name: tt.fields.name,
|
||||||
|
size: tt.fields.size,
|
||||||
|
mode: tt.fields.mode,
|
||||||
|
modTime: tt.fields.modTime,
|
||||||
|
accessTime: tt.fields.accessTime,
|
||||||
|
changeTime: tt.fields.changeTime,
|
||||||
|
gid: tt.fields.gid,
|
||||||
|
uid: tt.fields.uid,
|
||||||
|
isDir: tt.fields.isDir,
|
||||||
|
log: jsonLogger,
|
||||||
|
}
|
||||||
|
if got := f.ModTime(); !reflect.DeepEqual(got, tt.want) {
|
||||||
|
t.Errorf("FileInfo.ModTime() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var isDirTests = []struct {
|
||||||
|
name string
|
||||||
|
fields fileInfoFields
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Can get isDir for file",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Can get isDir for directory",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileInfo_IsDir(t *testing.T) {
|
||||||
|
jsonLogger := &examples.Logger{
|
||||||
|
Verbose: verbose,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range isDirTests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
f := &FileInfo{
|
||||||
|
FileInfo: tt.fields.FileInfo,
|
||||||
|
name: tt.fields.name,
|
||||||
|
size: tt.fields.size,
|
||||||
|
mode: tt.fields.mode,
|
||||||
|
modTime: tt.fields.modTime,
|
||||||
|
accessTime: tt.fields.accessTime,
|
||||||
|
changeTime: tt.fields.changeTime,
|
||||||
|
gid: tt.fields.gid,
|
||||||
|
uid: tt.fields.uid,
|
||||||
|
isDir: tt.fields.isDir,
|
||||||
|
log: jsonLogger,
|
||||||
|
}
|
||||||
|
if got := f.IsDir(); got != tt.want {
|
||||||
|
t.Errorf("FileInfo.IsDir() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var sysTests = []struct {
|
||||||
|
name string
|
||||||
|
fields fileInfoFields
|
||||||
|
want *FileInfo
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Can set file info attributes",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
&FileInfo{
|
||||||
|
name: "test.txt",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 1000,
|
||||||
|
uid: 1000,
|
||||||
|
isDir: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Can set directory info attributes",
|
||||||
|
fileInfoFields{
|
||||||
|
name: "test",
|
||||||
|
size: 100,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 100,
|
||||||
|
uid: 100,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
&FileInfo{
|
||||||
|
name: "test",
|
||||||
|
size: 1024,
|
||||||
|
mode: os.ModePerm,
|
||||||
|
modTime: now,
|
||||||
|
accessTime: now,
|
||||||
|
changeTime: now,
|
||||||
|
gid: 100,
|
||||||
|
uid: 100,
|
||||||
|
isDir: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileInfo_Sys(t *testing.T) {
|
||||||
|
jsonLogger := &examples.Logger{
|
||||||
|
Verbose: verbose,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range sysTests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got := &FileInfo{
|
||||||
|
FileInfo: tt.fields.FileInfo,
|
||||||
|
name: tt.fields.name,
|
||||||
|
size: tt.fields.size,
|
||||||
|
mode: tt.fields.mode,
|
||||||
|
modTime: tt.fields.modTime,
|
||||||
|
accessTime: tt.fields.accessTime,
|
||||||
|
changeTime: tt.fields.changeTime,
|
||||||
|
gid: tt.fields.gid,
|
||||||
|
uid: tt.fields.uid,
|
||||||
|
isDir: tt.fields.isDir,
|
||||||
|
log: jsonLogger,
|
||||||
|
}
|
||||||
|
|
||||||
|
gotSys, ok := got.Sys().(*Stat)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("FileInfo.Sys() !ok")
|
||||||
|
}
|
||||||
|
|
||||||
|
if gotSys.Atim.Nano() != tt.want.accessTime.UnixNano() {
|
||||||
|
t.Errorf("FileInfo.Atim.Nano() = %v, want %v", gotSys.Atim.Nano(), tt.want.accessTime.UnixNano())
|
||||||
|
}
|
||||||
|
|
||||||
|
if gotSys.Ctim.Nano() != tt.want.changeTime.UnixNano() {
|
||||||
|
t.Errorf("FileInfo.Ctim.Nano() = %v, want %v", gotSys.Ctim.Nano(), tt.want.changeTime.UnixNano())
|
||||||
|
}
|
||||||
|
|
||||||
|
if gotSys.Gid != uint32(tt.want.gid) {
|
||||||
|
t.Errorf("FileInfo.Gid = %v, want %v", gotSys.Gid, tt.want.gid)
|
||||||
|
}
|
||||||
|
|
||||||
|
if gotSys.Uid != uint32(tt.want.uid) {
|
||||||
|
t.Errorf("FileInfo.Uid = %v, want %v", gotSys.Uid, tt.want.uid)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user