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 }