package fsutils import ( "os" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func touch(t *testing.T, name string) { f, err := os.Create(name) if err != nil { t.Fatal(err) } if err := f.Close(); err != nil { t.Fatal(err) } } func write(t *testing.T, name, content string) { err := os.WriteFile(name, []byte(content), 0666) if err != nil { t.Fatal(err) } } func TestCopyFile(t *testing.T) { type args struct { src string dst string } tests := []struct { name string args args content []byte want string wantErr string }{ { name: "happy path", content: []byte("this is a content"), args: args{}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { src := tt.args.src if tt.args.src == "" { s, err := os.CreateTemp("", "src") require.NoError(t, err, tt.name) _, err = s.Write(tt.content) require.NoError(t, err, tt.name) src = s.Name() } dst := tt.args.dst if tt.args.dst == "" { d, err := os.CreateTemp("", "dst") require.NoError(t, err, tt.name) dst = d.Name() require.NoError(t, d.Close(), tt.name) } _, err := CopyFile(src, dst) if tt.wantErr != "" { require.Error(t, err, tt.name) assert.Equal(t, tt.wantErr, err.Error(), tt.name) } else { require.NoError(t, err, tt.name) } }) } }