github.com/rothwerx/packer@v0.9.0/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  }