summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_helpers/helpers.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/tests/test_helpers/helpers.go b/tests/test_helpers/helpers.go
index 778fd3a..47517a6 100644
--- a/tests/test_helpers/helpers.go
+++ b/tests/test_helpers/helpers.go
@@ -6,6 +6,7 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
+ "io"
"io/ioutil"
"log"
"net"
@@ -157,8 +158,17 @@ func Mount(c string, p string, showOutput bool, extraArgs ...string) error {
cmd := exec.Command(GocryptfsBinary, args...)
if showOutput {
- cmd.Stderr = os.Stderr
- cmd.Stdout = os.Stdout
+ // The Go test logic waits for our stdout to close, and when we share
+ // it with the subprocess, it will wait for it to close it as well.
+ // Use an intermediate pipe so the tests do not hang when unmouting
+ // fails.
+ pr, pw, err := os.Pipe()
+ if err != nil {
+ return err
+ }
+ cmd.Stderr = pw
+ cmd.Stdout = pw
+ go func() { io.Copy(os.Stdout, pr) }()
}
return cmd.Run()