github.com/jaylevin/jenkins-library@v1.230.4/pkg/piperutils/ioUtils_test.go (about)

     1  package piperutils
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestCopyData(t *testing.T) {
    11  	runInTempDir(t, "copying file succeeds small", "dir1", func(t *testing.T) {
    12  		srcName := "testFileSrc"
    13  		src, err := os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
    14  		if err != nil {
    15  			t.Fatal("Failed to create src file")
    16  		}
    17  		data := make([]byte, 3)
    18  		data[0] = byte(32)
    19  		data[1] = byte(42)
    20  		data[2] = byte(52)
    21  		_, err = src.Write(data)
    22  		if err != nil {
    23  			t.Fatalf("Failed to write data to src file: %v", err)
    24  		}
    25  		src.Close()
    26  		src, err = os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
    27  		if err != nil {
    28  			t.Fatal("Failed to reopen src file")
    29  		}
    30  
    31  		dstName := "testFileTgt"
    32  		dst, err := os.OpenFile(dstName, os.O_CREATE|os.O_RDWR, 0700)
    33  		if err != nil {
    34  			t.Fatal("Failed to create dst file")
    35  		}
    36  
    37  		result, err := CopyData(dst, src)
    38  		src.Close()
    39  		dst.Close()
    40  		dst, err = os.OpenFile(dstName, os.O_CREATE|os.O_RDWR, 0700)
    41  		dataRead := make([]byte, 3)
    42  		dst.Read(dataRead)
    43  		dst.Close()
    44  
    45  		assert.NoError(t, err, "Didn't expect error but got one")
    46  		assert.Equal(t, int64(3), result, "Expected true but got false")
    47  		assert.Equal(t, data, dataRead, "data written %v is different to data read %v")
    48  	})
    49  	runInTempDir(t, "copying file succeeds larger", "dir2", func(t *testing.T) {
    50  		srcName := "testFile"
    51  		src, err := os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
    52  		if err != nil {
    53  			t.Fatal("Failed to create src file")
    54  		}
    55  		data := make([]byte, 300)
    56  		for i := 0; i < 300; i++ {
    57  			data[i] = byte(i)
    58  		}
    59  		_, err = src.Write(data)
    60  		src.Close()
    61  		src, err = os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
    62  
    63  		dstName := "testFile2"
    64  		dst, err := os.OpenFile(dstName, os.O_CREATE|os.O_RDWR, 0700)
    65  		if err != nil {
    66  			t.Fatal("Failed to create dst file")
    67  		}
    68  
    69  		result, err := CopyData(dst, src)
    70  		src.Close()
    71  		dst.Close()
    72  
    73  		assert.NoError(t, err, "Didn't expect error but got one")
    74  		assert.Equal(t, int64(300), result, "Expected true but got false")
    75  	})
    76  	runInTempDir(t, "copying file fails on read", "dir3", func(t *testing.T) {
    77  		srcName := "testFileExcl"
    78  		src, err := os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
    79  		if err != nil {
    80  			t.Fatalf("Failed to create src file %v", err)
    81  		}
    82  		data := make([]byte, 300)
    83  		for i := 0; i < 300; i++ {
    84  			data[i] = byte(i)
    85  		}
    86  		_, err = src.Write(data)
    87  		src.Close()
    88  		src, err = os.OpenFile(srcName, os.O_WRONLY, 0700)
    89  
    90  		dstName := "testFile2"
    91  		dst, err := os.OpenFile(dstName, os.O_CREATE|os.O_RDWR, 0700)
    92  		if err != nil {
    93  			t.Fatal("Failed to create dst file")
    94  		}
    95  
    96  		result, err := CopyData(dst, src)
    97  		src.Close()
    98  		dst.Close()
    99  
   100  		assert.Error(t, err, "Expected error but got none")
   101  		assert.Equal(t, int64(0), result, "Expected true but got false")
   102  	})
   103  	runInTempDir(t, "copying file fails on write", "dir4", func(t *testing.T) {
   104  		srcName := "testFileExcl"
   105  		src, err := os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
   106  		if err != nil {
   107  			t.Fatalf("Failed to create src file %v", err)
   108  		}
   109  		data := make([]byte, 300)
   110  		for i := 0; i < 300; i++ {
   111  			data[i] = byte(i)
   112  		}
   113  		_, err = src.Write(data)
   114  		src.Close()
   115  		src, err = os.OpenFile(srcName, os.O_CREATE|os.O_RDWR, 0700)
   116  
   117  		dstName := "testFileExclus"
   118  		dst, err := os.OpenFile(dstName, os.O_CREATE|os.O_RDWR, 0700)
   119  		if err != nil {
   120  			t.Fatalf("Failed to create dst file: %v", err)
   121  		}
   122  		dst.Close()
   123  		dst, err = os.OpenFile(dstName, os.O_RDONLY, 0700)
   124  
   125  		result, err := CopyData(dst, src)
   126  		src.Close()
   127  		dst.Close()
   128  
   129  		assert.Error(t, err, "Expected error but got none")
   130  		assert.Equal(t, int64(0), result, "Expected true but got false")
   131  	})
   132  }