diff options
Diffstat (limited to 'integration_tests/helpers.go')
-rw-r--r-- | integration_tests/helpers.go | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/integration_tests/helpers.go b/integration_tests/helpers.go new file mode 100644 index 0000000..9bfd9fc --- /dev/null +++ b/integration_tests/helpers.go @@ -0,0 +1,94 @@ +package integration_tests + +import ( + "os" + "os/exec" + "fmt" + "io/ioutil" + "crypto/md5" + "encoding/hex" + "testing" +) + +const tmpDir = "/tmp/gocryptfs_main_test/" +// Mountpoint +const plainDir = tmpDir + "plain/" +const cipherDir = tmpDir + "cipher/" + +func resetTmpDir() { + fu := exec.Command("fusermount", "-z", "-u", plainDir) + fu.Run() + + os.RemoveAll(tmpDir) + + err := os.MkdirAll(plainDir, 0777) + if err != nil { + panic("Could not create plainDir") + } + + err = os.MkdirAll(cipherDir, 0777) + if err != nil { + panic("Could not create cipherDir") + } +} + +func mount(extraArgs ...string) { + var args []string + args = append(args, extraArgs...) + //args = append(args, "--fusedebug") + args = append(args, cipherDir) + args = append(args, plainDir) + c := exec.Command("../gocryptfs", args...) + // Warning messages clutter the test output. Uncomment if you want to debug + // failures. + //c.Stdout = os.Stdout + //c.Stderr = os.Stderr + err := c.Run() + if err != nil { + fmt.Println(err) + os.Exit(1) + } +} + +func unmount() error { + fu := exec.Command("fusermount", "-z", "-u", plainDir) + fu.Stdout = os.Stdout + fu.Stderr = os.Stderr + return fu.Run() +} + +// Return md5 string for file "filename" +func md5fn(filename string) string { + buf, err := ioutil.ReadFile(filename) + if err != nil { + fmt.Printf("ReadFile: %v\n", err) + return "" + } + return md5hex(buf) +} + +// Return md5 string for "buf" +func md5hex(buf []byte) string { + rawHash := md5.Sum(buf) + hash := hex.EncodeToString(rawHash[:]) + return hash +} + +// Verify that the file size equals "want". This checks: +// 1) Size reported by Stat() +// 2) Number of bytes returned when reading the whole file +func verifySize(t *testing.T, path string, want int) { + buf, err := ioutil.ReadFile(path) + if err != nil { + t.Errorf("ReadFile failed: %v", err) + } else if len(buf) != want { + t.Errorf("wrong read size: got=%d want=%d", len(buf), want) + } + + fi, err := os.Stat(path) + if err != nil { + t.Errorf("Stat failed: %v", err) + } else if fi.Size() != int64(want) { + t.Errorf("wrong stat file size, got=%d want=%d", fi.Size(), want) + } +} |