diff options
-rw-r--r-- | tests/reverse/correctness_test.go | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tests/reverse/correctness_test.go b/tests/reverse/correctness_test.go index 62e3bbc..246936b 100644 --- a/tests/reverse/correctness_test.go +++ b/tests/reverse/correctness_test.go @@ -5,7 +5,6 @@ import ( "fmt" "io/ioutil" "os" - "runtime" "syscall" "testing" @@ -187,16 +186,22 @@ func TestEnoent(t *testing.T) { // returning an I/O error to the user. // https://github.com/rfjakob/gocryptfs/issues/167 func TestTooLongSymlink(t *testing.T) { - l := 4000 - if runtime.GOOS == "darwin" { - l = 1000 // max length is much lower on darwin - } + var err error + var l int fn := dirA + "/TooLongSymlink" - target := string(bytes.Repeat([]byte("x"), l)) - err := os.Symlink(target, fn) + // Try 4000 first (works on ext4 and tmpfs), then retry with 1000 (XFS and + // Darwin have a limit of about 1024) + for _, l = range []int{4000, 1000} { + target := string(bytes.Repeat([]byte("x"), l)) + err = os.Symlink(target, fn) + if err == nil { + break + } + } if err != nil { t.Fatal(err) } + t.Logf("Created symlink of length %d", l) _, err = os.Readlink(dirC + "/TooLongSymlink") if err == nil { return |