github.com/biogo/biogo@v1.0.4/util/files_test.go (about) 1 // Copyright ©2011-2012 The bíogo Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package util 6 7 import ( 8 "bytes" 9 "crypto/md5" 10 "fmt" 11 "io/ioutil" 12 "os" 13 "os/exec" 14 15 "gopkg.in/check.v1" 16 ) 17 18 // Tests 19 func (s *S) TestHash(c *check.C) { 20 // FIXME: This will not work with MacOS. 21 _, err := exec.LookPath("md5sum") 22 if err != nil { 23 c.Skip(err.Error()) 24 } 25 md5sum := exec.Command("md5sum", "./files_test.go") 26 b := &bytes.Buffer{} 27 md5sum.Stdout = b 28 err = md5sum.Run() 29 if err != nil { 30 c.Fatal(err) 31 } 32 f, err := os.Open("./files_test.go") 33 if err != nil { 34 c.Fatalf("%v %s", md5sum, err) 35 } 36 x, err := ioutil.ReadAll(f) 37 if err != nil { 38 c.Fatal(err) 39 } 40 f.Seek(0, 0) 41 42 md5hash, err := Hash(md5.New(), f) 43 if err != nil { 44 c.Fatal(err) 45 } 46 md5string := fmt.Sprintf("%x .*\n", md5hash) 47 48 c.Check(string(b.Bytes()), check.Matches, md5string) 49 50 y, err := ioutil.ReadAll(f) 51 if err != nil { 52 c.Fatal(err) 53 } 54 c.Check(x, check.DeepEquals, y) 55 }