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  }