mirror of https://github.com/pkg/sftp.git
				
				
				
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| package sftp
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"os"
 | |
| 	"reflect"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| // ensure that attrs implemenst os.FileInfo
 | |
| var _ os.FileInfo = new(fileInfo)
 | |
| 
 | |
| var unmarshalAttrsTests = []struct {
 | |
| 	b    []byte
 | |
| 	want *fileInfo
 | |
| 	rest []byte
 | |
| }{
 | |
| 	{marshal(nil, struct{ Flags uint32 }{}), &fileInfo{mtime: time.Unix(int64(0), 0)}, nil},
 | |
| 	{marshal(nil, struct {
 | |
| 		Flags uint32
 | |
| 		Size  uint64
 | |
| 	}{ssh_FILEXFER_ATTR_SIZE, 20}), &fileInfo{size: 20, mtime: time.Unix(int64(0), 0)}, nil},
 | |
| 	{marshal(nil, struct {
 | |
| 		Flags       uint32
 | |
| 		Size        uint64
 | |
| 		Permissions uint32
 | |
| 	}{ssh_FILEXFER_ATTR_SIZE | ssh_FILEXFER_ATTR_PERMISSIONS, 20, 0644}), &fileInfo{size: 20, mode: os.FileMode(0644), mtime: time.Unix(int64(0), 0)}, nil},
 | |
| 	{marshal(nil, struct {
 | |
| 		Flags                 uint32
 | |
| 		Size                  uint64
 | |
| 		UID, GID, Permissions uint32
 | |
| 	}{ssh_FILEXFER_ATTR_SIZE | ssh_FILEXFER_ATTR_UIDGID | ssh_FILEXFER_ATTR_UIDGID | ssh_FILEXFER_ATTR_PERMISSIONS, 20, 1000, 1000, 0644}), &fileInfo{size: 20, mode: os.FileMode(0644), mtime: time.Unix(int64(0), 0)}, nil},
 | |
| }
 | |
| 
 | |
| func TestUnmarshalAttrs(t *testing.T) {
 | |
| 	for _, tt := range unmarshalAttrsTests {
 | |
| 		stat, rest := unmarshalAttrs(tt.b)
 | |
| 		got := fileInfoFromStat(stat, "")
 | |
| 		tt.want.sys = got.Sys()
 | |
| 		if !reflect.DeepEqual(got, tt.want) || !bytes.Equal(tt.rest, rest) {
 | |
| 			t.Errorf("unmarshalAttrs(%#v): want %#v, %#v, got: %#v, %#v", tt.b, tt.want, tt.rest, got, rest)
 | |
| 		}
 | |
| 	}
 | |
| }
 |