github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/utils/fsutils/fs_test.go (about) 1 package fsutils 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func touch(t *testing.T, name string) { 12 f, err := os.Create(name) 13 if err != nil { 14 t.Fatal(err) 15 } 16 if err := f.Close(); err != nil { 17 t.Fatal(err) 18 } 19 } 20 21 func write(t *testing.T, name string, content string) { 22 err := os.WriteFile(name, []byte(content), 0666) 23 if err != nil { 24 t.Fatal(err) 25 } 26 } 27 28 func TestCopyFile(t *testing.T) { 29 type args struct { 30 src string 31 dst string 32 } 33 tests := []struct { 34 name string 35 args args 36 content []byte 37 want string 38 wantErr string 39 }{ 40 { 41 name: "happy path", 42 content: []byte("this is a content"), 43 args: args{}, 44 }, 45 } 46 for _, tt := range tests { 47 t.Run(tt.name, func(t *testing.T) { 48 src := tt.args.src 49 if tt.args.src == "" { 50 s, err := os.CreateTemp("", "src") 51 require.NoError(t, err, tt.name) 52 _, err = s.Write(tt.content) 53 require.NoError(t, err, tt.name) 54 src = s.Name() 55 } 56 57 dst := tt.args.dst 58 if tt.args.dst == "" { 59 d, err := os.CreateTemp("", "dst") 60 require.NoError(t, err, tt.name) 61 dst = d.Name() 62 require.NoError(t, d.Close(), tt.name) 63 } 64 65 _, err := CopyFile(src, dst) 66 if tt.wantErr != "" { 67 require.NotNil(t, err, tt.name) 68 assert.Equal(t, err.Error(), tt.wantErr, tt.name) 69 } else { 70 assert.NoError(t, err, tt.name) 71 } 72 }) 73 } 74 }