Otherwise we fail like this on my Fedora 38 box:
=== RUN TestOverlay
DetectQuirks: tmpfs detected, no extended attributes except acls will work.
root_test.go:379: No user xattrs! overlay mount will likely fail.
15:15:57.957960 Unimplemented opcode OPCODE-51
root_test.go:398: mount: /tmp/gocryptfs-test-parent-0/3652394902/TestOverlay.2374697046.mnt/merged: wrong fs type, bad option, bad superblock on overlay, missing codepage or helper program, or other error.
dmesg(1) may have more information after failed mount system call.
root_test.go:399: exit status 32
--- FAIL: TestOverlay (0.04s)
FAIL
Also fix the messed-up DetectQuirks bit test.
Fails right now as reported in https://github.com/rfjakob/gocryptfs/pull/655
--- FAIL: TestLongnamemax100Reverse (0.09s)
longnamemax_test.go:104: l=64: should see a longname now
longnamemax_test.go:104: l=65: should see a longname now
longnamemax_test.go:104: l=66: should see a longname now
longnamemax_test.go:104: l=67: should see a longname now
longnamemax_test.go:104: l=68: should see a longname now
longnamemax_test.go:104: l=69: should see a longname now
longnamemax_test.go:104: l=70: should see a longname now
longnamemax_test.go:104: l=71: should see a longname now
longnamemax_test.go:104: l=72: should see a longname now
longnamemax_test.go:104: l=73: should see a longname now
longnamemax_test.go:104: l=74: should see a longname now
longnamemax_test.go:104: l=75: should see a longname now
longnamemax_test.go:104: l=76: should see a longname now
longnamemax_test.go:104: l=77: should see a longname now
longnamemax_test.go:104: l=78: should see a longname now
longnamemax_test.go:104: l=79: should see a longname now
longnamemax_test.go:104: l=80: should see a longname now
longnamemax_test.go:104: l=81: should see a longname now
longnamemax_test.go:104: l=82: should see a longname now
longnamemax_test.go:104: l=83: should see a longname now
longnamemax_test.go:104: l=84: should see a longname now
longnamemax_test.go:104: l=85: should see a longname now
longnamemax_test.go:104: l=86: should see a longname now
longnamemax_test.go:104: l=87: should see a longname now
longnamemax_test.go:104: l=88: should see a longname now
longnamemax_test.go:104: l=89: should see a longname now
longnamemax_test.go:104: l=90: should see a longname now
longnamemax_test.go:104: l=91: should see a longname now
longnamemax_test.go:104: l=92: should see a longname now
longnamemax_test.go:104: l=93: should see a longname now
longnamemax_test.go:104: l=94: should see a longname now
longnamemax_test.go:104: l=95: should see a longname now
longnamemax_test.go:104: l=96: should see a longname now
longnamemax_test.go:104: l=97: should see a longname now
longnamemax_test.go:104: l=98: should see a longname now
longnamemax_test.go:104: l=99: should see a longname now
longnamemax_test.go:104: l=100: should see a longname now
longnamemax_test.go:104: l=101: should see a longname now
longnamemax_test.go:104: l=102: should see a longname now
longnamemax_test.go:104: l=103: should see a longname now
longnamemax_test.go:104: l=104: should see a longname now
longnamemax_test.go:104: l=105: should see a longname now
longnamemax_test.go:104: l=106: should see a longname now
longnamemax_test.go:104: l=107: should see a longname now
longnamemax_test.go:104: l=108: should see a longname now
longnamemax_test.go:104: l=109: should see a longname now
longnamemax_test.go:104: l=110: should see a longname now
longnamemax_test.go:104: l=111: should see a longname now
longnamemax_test.go:104: l=112: should see a longname now
longnamemax_test.go:104: l=113: should see a longname now
longnamemax_test.go:104: l=114: should see a longname now
longnamemax_test.go:104: l=115: should see a longname now
longnamemax_test.go:104: l=116: should see a longname now
longnamemax_test.go:104: l=117: should see a longname now
longnamemax_test.go:104: l=118: should see a longname now
longnamemax_test.go:104: l=119: should see a longname now
longnamemax_test.go:104: l=120: should see a longname now
longnamemax_test.go:104: l=121: should see a longname now
longnamemax_test.go:104: l=122: should see a longname now
longnamemax_test.go:104: l=123: should see a longname now
longnamemax_test.go:104: l=124: should see a longname now
longnamemax_test.go:104: l=125: should see a longname now
longnamemax_test.go:104: l=126: should see a longname now
longnamemax_test.go:104: l=127: should see a longname now
longnamemax_test.go:104: l=128: should see a longname now
longnamemax_test.go:104: l=129: should see a longname now
longnamemax_test.go:104: l=130: should see a longname now
longnamemax_test.go:104: l=131: should see a longname now
longnamemax_test.go:104: l=132: should see a longname now
longnamemax_test.go:104: l=133: should see a longname now
longnamemax_test.go:104: l=134: should see a longname now
longnamemax_test.go:104: l=135: should see a longname now
longnamemax_test.go:104: l=136: should see a longname now
longnamemax_test.go:104: l=137: should see a longname now
longnamemax_test.go:104: l=138: should see a longname now
longnamemax_test.go:104: l=139: should see a longname now
longnamemax_test.go:104: l=140: should see a longname now
longnamemax_test.go:104: l=141: should see a longname now
longnamemax_test.go:104: l=142: should see a longname now
longnamemax_test.go:104: l=143: should see a longname now
longnamemax_test.go:104: l=144: should see a longname now
longnamemax_test.go:104: l=145: should see a longname now
longnamemax_test.go:104: l=146: should see a longname now
longnamemax_test.go:104: l=147: should see a longname now
longnamemax_test.go:104: l=148: should see a longname now
longnamemax_test.go:104: l=149: should see a longname now
longnamemax_test.go:104: l=150: should see a longname now
longnamemax_test.go:104: l=151: should see a longname now
longnamemax_test.go:104: l=152: should see a longname now
longnamemax_test.go:104: l=153: should see a longname now
longnamemax_test.go:104: l=154: should see a longname now
longnamemax_test.go:104: l=155: should see a longname now
longnamemax_test.go:104: l=156: should see a longname now
longnamemax_test.go:104: l=157: should see a longname now
longnamemax_test.go:104: l=158: should see a longname now
longnamemax_test.go:104: l=159: should see a longname now
longnamemax_test.go:104: l=160: should see a longname now
longnamemax_test.go:104: l=161: should see a longname now
longnamemax_test.go:104: l=162: should see a longname now
longnamemax_test.go:104: l=163: should see a longname now
longnamemax_test.go:104: l=164: should see a longname now
longnamemax_test.go:104: l=165: should see a longname now
longnamemax_test.go:104: l=166: should see a longname now
longnamemax_test.go:104: l=167: should see a longname now
longnamemax_test.go:104: l=168: should see a longname now
longnamemax_test.go:104: l=169: should see a longname now
longnamemax_test.go:104: l=170: should see a longname now
longnamemax_test.go:104: l=171: should see a longname now
longnamemax_test.go:104: l=172: should see a longname now
longnamemax_test.go:104: l=173: should see a longname now
longnamemax_test.go:104: l=174: should see a longname now
longnamemax_test.go:104: l=175: should see a longname now
FAIL
https://github.com/rfjakob/gocryptfs/pull/655
(1)
Create a 1 GiB file instead of 1 TiB, because
apparently, on MacOS, the file (sometimes?) is not
created sparse, and fills up users' disks:
https://github.com/rfjakob/gocryptfs/issues/625
(2)
On darwin, SEEK_DATA is not the same as on Linux
( 2f8b555de2 )
so use the value provided by the unix package.
This fails at the moment:
$ go test ./tests/cli/
--- FAIL: TestMountPasswordEmpty (0.01s)
cli_test.go:430: socket file "/tmp/gocryptfs-test-parent-1026/3413782690/TestMountPasswordEmpty.753166857.sock" left behind
https://github.com/rfjakob/gocryptfs/issues/634
Our git version is v2+ for some time now, but go.mod
still declared v1. Hopefully making both match makes
https://pkg.go.dev/github.com/rfjakob/gocryptfs/v2 work.
All the import paths have been fixed like this:
find . -name \*.go | xargs sed -i s%github.com/rfjakob/gocryptfs/%github.com/rfjakob/gocryptfs/v2/%
Issues were:
# github.com/rfjakob/gocryptfs/contrib/findholes/holes
contrib/findholes/holes/holes.go:136:2: unreachable code
# github.com/rfjakob/gocryptfs/tests/root_test_test
tests/root_test/root_test.go:139:2: unreachable code
Also make sure we actually run "go vet" against the whole
codebase.
Everything except the
if err2.Err == syscall.EOPNOTSUPP
case. Gets too confusing when collapsed into a single line.
Issues were:
$ golangci-lint run --disable-all --enable gosimple
mount.go:473:2: S1008: should use 'return strings.HasPrefix(v, "fusermount version")' instead of 'if strings.HasPrefix(v, "fusermount version") { return true }; return false' (gosimple)
if strings.HasPrefix(v, "fusermount version") {
^
cli_args.go:258:5: S1002: should omit comparison to bool constant, can be simplified to `args.forcedecode` (gosimple)
if args.forcedecode == true {
^
cli_args.go:263:6: S1002: should omit comparison to bool constant, can be simplified to `args.aessiv` (gosimple)
if args.aessiv == true {
^
cli_args.go:267:6: S1002: should omit comparison to bool constant, can be simplified to `args.reverse` (gosimple)
if args.reverse == true {
^
internal/stupidgcm/stupidgcm.go:227:6: S1002: should omit comparison to bool constant, can be simplified to `g.forceDecode` (gosimple)
if g.forceDecode == true {
^
gocryptfs-xray/xray_tests/xray_test.go:23:5: S1004: should use !bytes.Equal(out, expected) instead (gosimple)
if bytes.Compare(out, expected) != 0 {
^
gocryptfs-xray/xray_tests/xray_test.go:40:5: S1004: should use !bytes.Equal(out, expected) instead (gosimple)
if bytes.Compare(out, expected) != 0 {
^
gocryptfs-xray/paths_ctlsock.go:34:20: S1002: should omit comparison to bool constant, can be simplified to `!eof` (gosimple)
for eof := false; eof == false; line++ {
^
tests/reverse/xattr_test.go:19:2: S1008: should use 'return err2.Err != syscall.EOPNOTSUPP' instead of 'if err2.Err == syscall.EOPNOTSUPP { return false }; return true' (gosimple)
if err2.Err == syscall.EOPNOTSUPP {
^
internal/fusefrontend/node.go:459:45: S1002: should omit comparison to bool constant, can be simplified to `!nameFileAlreadyThere` (gosimple)
if nametransform.IsLongContent(cName2) && nameFileAlreadyThere == false {
^
tests/xattr/xattr_integration_test.go:221:2: S1008: should use 'return err2.Err != syscall.EOPNOTSUPP' instead of 'if err2.Err == syscall.EOPNOTSUPP { return false }; return true' (gosimple)
if err2.Err == syscall.EOPNOTSUPP {
^
tests/test_helpers/helpers.go:338:19: S1002: should omit comparison to bool constant, can be simplified to `open` (gosimple)
if err != nil && open == true {
^
tests/matrix/concurrency_test.go:121:7: S1004: should use !bytes.Equal(buf, content) instead (gosimple)
if bytes.Compare(buf, content) != 0 {
^