github.phpd.cn/hashicorp/packer@v1.3.2/builder/amazon/chroot/copy_files_test.go (about) 1 package chroot 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "runtime" 8 "testing" 9 ) 10 11 func TestCopyFile(t *testing.T) { 12 if runtime.GOOS == "windows" { 13 return 14 } 15 16 first, err := ioutil.TempFile("", "copy_files_test") 17 if err != nil { 18 t.Fatalf("couldn't create temp file.") 19 } 20 defer os.Remove(first.Name()) 21 newName := first.Name() + "-new" 22 23 payload := "copy_files_test.go payload" 24 if _, err = first.WriteString(payload); err != nil { 25 t.Fatalf("Couldn't write payload to first file.") 26 } 27 first.Sync() 28 29 cmd := ShellCommand(fmt.Sprintf("cp %s %s", first.Name(), newName)) 30 if err := cmd.Run(); err != nil { 31 t.Fatalf("Couldn't copy file") 32 } 33 defer os.Remove(newName) 34 35 second, err := os.Open(newName) 36 if err != nil { 37 t.Fatalf("Couldn't open copied file.") 38 } 39 defer second.Close() 40 41 var copiedPayload = make([]byte, len(payload)) 42 if _, err := second.Read(copiedPayload); err != nil { 43 t.Fatalf("Couldn't open copied file for reading.") 44 } 45 46 if string(copiedPayload) != payload { 47 t.Fatalf("payload not copied.") 48 } 49 }