github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/testutil/file.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:45</date> 10 //</624450121760772096> 11 12 13 package testutil 14 15 import ( 16 "bytes" 17 "io" 18 "io/ioutil" 19 "math/rand" 20 "os" 21 "strings" 22 "testing" 23 ) 24 25 //tempfilewithcontent是一个助手函数,它创建一个包含以下字符串内容的临时文件,然后关闭文件句柄 26 //它返回完整的文件路径 27 func TempFileWithContent(t *testing.T, content string) string { 28 tempFile, err := ioutil.TempFile("", "swarm-temp-file") 29 if err != nil { 30 t.Fatal(err) 31 } 32 33 _, err = io.Copy(tempFile, strings.NewReader(content)) 34 if err != nil { 35 os.RemoveAll(tempFile.Name()) 36 t.Fatal(err) 37 } 38 if err = tempFile.Close(); err != nil { 39 t.Fatal(err) 40 } 41 return tempFile.Name() 42 } 43 44 //RandomBytes返回伪随机确定性结果 45 //因为测试失败必须是可复制的 46 func RandomBytes(seed, length int) []byte { 47 b := make([]byte, length) 48 reader := rand.New(rand.NewSource(int64(seed))) 49 for n := 0; n < length; { 50 read, err := reader.Read(b[n:]) 51 if err != nil { 52 panic(err) 53 } 54 n += read 55 } 56 return b 57 } 58 59 func RandomReader(seed, length int) *bytes.Reader { 60 return bytes.NewReader(RandomBytes(seed, length)) 61 } 62