github.com/keygen-sh/go-update@v1.0.0/internal/binarydist/patch_test.go (about) 1 package binarydist 2 3 import ( 4 "io/ioutil" 5 "os" 6 "os/exec" 7 "testing" 8 ) 9 10 func TestPatch(t *testing.T) { 11 mustWriteRandFile("test.old", 1e3) 12 mustWriteRandFile("test.new", 1e3) 13 14 got, err := ioutil.TempFile("/tmp", "bspatch.") 15 if err != nil { 16 panic(err) 17 } 18 os.Remove(got.Name()) 19 20 err = exec.Command("bsdiff", "test.old", "test.new", "test.patch").Run() 21 if err != nil { 22 panic(err) 23 } 24 25 err = Patch(mustOpen("test.old"), got, mustOpen("test.patch")) 26 if err != nil { 27 t.Fatal("err", err) 28 } 29 30 ref, err := got.Seek(0, 2) 31 if err != nil { 32 panic(err) 33 } 34 35 t.Logf("got %d bytes", ref) 36 if n := fileCmp(got, mustOpen("test.new")); n > -1 { 37 t.Fatalf("produced different output at pos %d", n) 38 } 39 } 40 41 func TestPatchHk(t *testing.T) { 42 got, err := ioutil.TempFile("/tmp", "bspatch.") 43 if err != nil { 44 panic(err) 45 } 46 os.Remove(got.Name()) 47 48 err = Patch(mustOpen("testdata/sample.old"), got, mustOpen("testdata/sample.patch")) 49 if err != nil { 50 t.Fatal("err", err) 51 } 52 53 ref, err := got.Seek(0, 2) 54 if err != nil { 55 panic(err) 56 } 57 58 t.Logf("got %d bytes", ref) 59 if n := fileCmp(got, mustOpen("testdata/sample.new")); n > -1 { 60 t.Fatalf("produced different output at pos %d", n) 61 } 62 }