github.com/Press-One/go-update@v1.0.0/internal/binarydist/common_test.go (about)

     1  package binarydist
     2  
     3  import (
     4  	"crypto/rand"
     5  	"io"
     6  	"io/ioutil"
     7  	"os"
     8  )
     9  
    10  func mustOpen(path string) *os.File {
    11  	f, err := os.Open(path)
    12  	if err != nil {
    13  		panic(err)
    14  	}
    15  
    16  	return f
    17  }
    18  
    19  func mustReadAll(r io.Reader) []byte {
    20  	b, err := ioutil.ReadAll(r)
    21  	if err != nil {
    22  		panic(err)
    23  	}
    24  	return b
    25  }
    26  
    27  func fileCmp(a, b *os.File) int64 {
    28  	sa, err := a.Seek(0, 2)
    29  	if err != nil {
    30  		panic(err)
    31  	}
    32  
    33  	sb, err := b.Seek(0, 2)
    34  	if err != nil {
    35  		panic(err)
    36  	}
    37  
    38  	if sa != sb {
    39  		return sa
    40  	}
    41  
    42  	_, err = a.Seek(0, 0)
    43  	if err != nil {
    44  		panic(err)
    45  	}
    46  
    47  	_, err = b.Seek(0, 0)
    48  	if err != nil {
    49  		panic(err)
    50  	}
    51  
    52  	pa, err := ioutil.ReadAll(a)
    53  	if err != nil {
    54  		panic(err)
    55  	}
    56  
    57  	pb, err := ioutil.ReadAll(b)
    58  	if err != nil {
    59  		panic(err)
    60  	}
    61  
    62  	for i := range pa {
    63  		if pa[i] != pb[i] {
    64  			return int64(i)
    65  		}
    66  	}
    67  	return -1
    68  }
    69  
    70  func mustWriteRandFile(path string, size int) *os.File {
    71  	p := make([]byte, size)
    72  	_, err := rand.Read(p)
    73  	if err != nil {
    74  		panic(err)
    75  	}
    76  
    77  	f, err := os.Create(path)
    78  	if err != nil {
    79  		panic(err)
    80  	}
    81  
    82  	_, err = f.Write(p)
    83  	if err != nil {
    84  		panic(err)
    85  	}
    86  
    87  	_, err = f.Seek(0, 0)
    88  	if err != nil {
    89  		panic(err)
    90  	}
    91  
    92  	return f
    93  }