Commit Graph

54 Commits

Author SHA1 Message Date
Jakob Unterwurzacher c974116322 test.bash: call out if build-without-openssl.bash failed
This can print out compile errors that are hard to understand
if you are not aware that it builds without_openssl.
2021-09-10 12:09:30 +02:00
Jakob Unterwurzacher c9728247ed test.bash: only check go files for naked panic
This found a lot of panics in the new file openssl_aead.c.
2021-09-07 18:14:05 +02:00
a1346054 6cb03b54fe *: fix spelling 2021-09-01 10:22:01 +02:00
a1346054 c63f7e9f64 shell scripts: fix shellcheck warnings 2021-09-01 10:22:01 +02:00
Jakob Unterwurzacher 8ee595dd48 Fix issues found by "go vet"
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.
2021-08-19 08:34:49 +02:00
Jakob Unterwurzacher 952d45ce84 tests: add TestDiskFull
Also fix incomplete uid restoration in TestSupplementaryGroups
and replace syscall.Setregid and friends with unix.Setregid and
friends.

This test is added to check if have problems handling a full disk.
The ticket https://github.com/rfjakob/gocryptfs/issues/550 states
that the full disk was not where the backing gocryptfs filesystem
was, but this has no effect on gocryptfs, so we test the harder
case.
2021-03-12 19:25:25 +01:00
Jakob Unterwurzacher 80a651a194 syscallcompat: MknodatUser: work around changed syscall.Setgroups semantics
Since go1.16beta1 (commit d1b1145cace8b968307f9311ff611e4bb810710c ,
https://go-review.googlesource.com/c/go/+/210639 )
syscall.{Setgroups,Setregid,Setreuid} affects all threads, which
is exactly what we not want.

We now use unix.{Setgroups,Setregid,Setreuid} instead.

Workarounds https://github.com/golang/go/issues/1435 .
2021-02-06 11:38:25 +01:00
Jakob Unterwurzacher 73436d9419 travis: fix Go Modules build problems 2020-04-13 18:06:50 +02:00
Jakob Unterwurzacher e509b27a5c Convert build and packaging scripts to Go Modules 2020-04-13 14:54:04 +02:00
Jakob Unterwurzacher 9a7ceef09e shellcheck: make top-level bash scripts warning-free
And run shellcheck in test.bash.
2020-04-13 14:54:04 +02:00
Jakob Unterwurzacher a1f6477401 test.bash: export TMPDIR
We have to export TMPDIR, otherwise the Go tests to
not pick it up.
2019-10-06 21:56:01 +02:00
Jakob Unterwurzacher 8c44294087 tests: use /var/tmp by default
On Fedora, /tmp is tmpfs, which behaves differently than ext4
(inode numbers are never reused, for example).

Use /var/tmp, which is ext4 on Fedora, to get a more realistic
test environment.

This also allows us to drop the xattr workaround.
2019-10-06 21:53:20 +02:00
Jakob Unterwurzacher 3ac9872230 tests: split testParentDir by UID
When we run tests as root, they will leave root-owned files
in testParentDir, which causes trouble when we run tests as
a normal user later on. Split by UID.
2019-05-01 13:12:44 +02:00
Jakob Unterwurzacher 3b18e546fc test.bash: pass flags on to "go vet"
Fixes this problem when openssl headers are not installed:

$ ./test-without-openssl.bash
gocryptfs v1.7-11-g8f2723b without_openssl; go-fuse v1.0.0-133-gcc423d1; 2019-03-31 go1.12.1
Package libcrypto was not found in the pkg-config search path.
Perhaps you should add the directory containing `libcrypto.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libcrypto' found
pkg-config: exit status 1
2019-03-31 15:16:20 +02:00
Jakob Unterwurzacher ddcc1fb3aa Go 1.12 dropped "go tool vet", use "go vet" instead
Also add Go 1.12 to Travis.
2019-03-02 14:39:03 +01:00
Jakob Unterwurzacher 5a1ebdb4f7 tests: respect TMPDIR if set
Setting TMPDIR now allows to run the tests against
a directory of your choice, making it easier to test
different filesystems.
2018-10-10 22:24:20 +02:00
Jakob Unterwurzacher 3f9a4bbcaa main: replace naked panic with log.Panic
Fix the check that failed to find the case as well.
2018-07-01 20:56:22 +02:00
Jakob Unterwurzacher c458d99aa9 tests: exit with error if we have leftover filesystems 2018-03-06 21:45:49 +01:00
Jakob Unterwurzacher 50bf282d2a tests: macos: try to unmount before rm -Rf
macos does not have "rm --one-file-system", so try to unmount
all remaining test filesystems to protect the backing
stores.

https://github.com/rfjakob/gocryptfs/issues/213
2018-03-06 21:35:10 +01:00
Jakob Unterwurzacher 4732e33a9a macos: tests: fix deleting of scratch dir
macos rm does not understand --one-file-system,
and it cannot handle unreadable directories.
2018-03-05 23:40:08 +01:00
Jakob Unterwurzacher 86e60f1be2 test.bash: Don't build with openssl if we were passed "-tags without_openssl"
test-without-openssl.bash now fails, as it should:

	gocryptfs has been compiled without openssl support but you are still trying to use openssl
	mount failed: exit status 18
	FAIL	github.com/rfjakob/gocryptfs/tests/matrix	1.943s
2018-03-05 23:01:29 +01:00
Jakob Unterwurzacher 6c172dcb02 test-without-openssl: accept extra args
Accept extra args, like test.bash does.
2018-03-05 21:46:33 +01:00
Jakob Unterwurzacher 3860a82c21 test.bash: skip flock if not available
MacOS does not have it installed by default.
2018-03-05 21:11:46 +01:00
Jakob Unterwurzacher 5fcfd30ddc test.bash: disable result caching
Go 1.10 has introduced test result caching and
enabled it by default.

This does not work properly for our integration
tests because they test the compiled binary and
do not have a source level dependency on the
gocryptfs code.

Disable caching.
2018-02-26 23:26:57 +01:00
Jakob Unterwurzacher 9ab6cdb9b9 test.bash: don't run "go tool vet" if vendor dir exists
...this fails in a thousand ways:

[...]
vendor/golang.org/x/crypto/sha3/keccakf_amd64.s:324: [amd64] keccakF1600: unknown variable state; offset 0 is a+0(FP)
vendor/golang.org/x/crypto/ssh/certs.go:172: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/certs.go:166
vendor/golang.org/x/crypto/ssh/certs.go:187: declaration of "rest" shadows declaration at vendor/golang.org/x/crypto/ssh/certs.go:161
vendor/golang.org/x/crypto/ssh/certs.go:187: declaration of "ok" shadows declaration at vendor/golang.org/x/crypto/ssh/certs.go:161
vendor/golang.org/x/crypto/ssh/client_auth.go:226: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/client_auth.go:193
vendor/golang.org/x/crypto/ssh/client_auth.go:394: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/client_auth.go:380
vendor/golang.org/x/crypto/ssh/client_auth.go:405: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/client_auth.go:380
vendor/golang.org/x/crypto/ssh/handshake.go:566: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/handshake.go:547
vendor/golang.org/x/crypto/ssh/handshake.go:592: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/handshake.go:547
vendor/golang.org/x/crypto/ssh/handshake.go:630: declaration of "err" shadows declaration at vendor/golang.org/x/crypto/ssh/handshake.go:620
[...]
2017-11-12 13:05:27 +01:00
Jakob Unterwurzacher e9f6c7ad67 Revert "test.bash: use "go vet" instead of "go tool vet""
"go vet" on Go 1.8 and older does not support flags:

$ go version
go version go1.8.3 linux/amd64

$ ./test.bash
gocryptfs v1.4.1-27-g8c1b363 without_openssl; go-fuse v20170619-21-gcf21bc2; 2017-10-22 go1.8.3
gocryptfs v1.4.1-27-g8c1b363; go-fuse v20170619-21-gcf21bc2; 2017-10-22 go1.8.3
flag provided but not defined: -all
usage: vet [-n] [-x] [build flags] [packages]
Vet runs the Go vet command on the packages named by the import paths.
For more about vet, see 'go doc cmd/vet'.
For more about specifying packages, see 'go help packages'.
To run the vet tool with specific options, run 'go tool vet'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
For more about build flags, see 'go help build'.
See also: go fmt, go fix.

This reverts commit a1170be979.
2017-10-22 15:00:19 +02:00
Jakob Unterwurzacher a1170be979 test.bash: use "go vet" instead of "go tool vet"
"go vet" automatically skips the vendor directory.
"go tool vet" does not, and it will complain about a lot
of things in there.
2017-10-22 14:37:44 +02:00
Jakob Unterwurzacher 692b20f1b2 golint.bash: fix exit codes
We want to exit with 1 only if we we have complaints left after
the greps.
2017-04-30 13:14:54 +02:00
Jakob Unterwurzacher 6465fa42a6 test.bash: execute build-without-openssl.bash instead of sourcing it
Sourcing the script breaks the "cd $(dirname $0)" logic in
build-without-openssl.bash.
2017-03-05 13:32:28 +01:00
Jakob Unterwurzacher 7fbe69bfa6 tests.bash: OSX compat: use "flock -n" and skip openssl build
Mac OS X flock does not support "--nonblock", but does support "-n":
https://github.com/discoteq/flock/blob/master/man/flock.1.ronn

Skip the openssl build because it requires
1) openssl
2) fixing the import paths in gocryptfs

Reported at https://github.com/rfjakob/gocryptfs/issues/15#issuecomment-280464400
2017-02-17 19:43:16 +01:00
Jakob Unterwurzacher b66d663ff8 tests: OSX compat: use "mount" command instead of /proc/mounts
Mac OS X does not have /proc.

Reported at https://github.com/rfjakob/gocryptfs/issues/15#issuecomment-279130217
2017-02-16 19:13:03 +01:00
Jakob Unterwurzacher ce2e610428 OSX compat: replace fusermount calls with fuse-unmount.bash
Mac OS X does not have fusermount and uses umount instead.
The fuse-unmount.bash calls the appropriate command.
2017-02-15 23:02:01 +01:00
Jakob Unterwurzacher 2643dd0ea5 test.bash: don't let the test process inherit the lock file
This meant that dangling mounts (and gocryptfs processes) kept
the lock open.
2017-01-03 17:40:20 +01:00
Jakob Unterwurzacher e1833fa26a test.bash: call vet early 2016-12-10 14:53:04 +01:00
Jakob Unterwurzacher 967e7bd125 stupidgcm: Fix without_openssl build failure
Also, always call build-without-openssl.bash from test.bash.

Failure was:

  internal/stupidgcm/without_openssl.go:29: missing return at end of function
2016-12-10 13:15:19 +01:00
Jakob Unterwurzacher 3e59041147 test.bash: check for naked "panic()" calls 2016-12-10 11:54:54 +01:00
Jakob Unterwurzacher a6006c0d2b test.bash: lock against multiple parallel incovations
Running multiple test.bash in parallel causes all kinds of
mayham.
2016-11-26 13:43:50 +01:00
Jakob Unterwurzacher 8efef4b3d6 tests: unmount leftover filesystems before starting the tests
A panic during the tests can leave mounted filesystems behind.
2016-10-08 21:59:21 +02:00
Jakob Unterwurzacher 31a8f8b839 tests: skip "go tool vet" if the command is not available
"vet" is not availably by default on Go 1.4.
2016-10-04 22:42:30 +02:00
Jakob Unterwurzacher 166ba74a05 tests: enable all go vet checks
...and fix reported errors:

internal/fusefrontend_reverse/rfile.go:40: github.com/rfjakob/gocryptfs/internal/contentenc.FileHeader composite literal uses unkeyed fields
internal/fusefrontend_reverse/rfs.go:249: github.com/hanwen/go-fuse/fuse.DirEntry composite literal uses unkeyed fields
internal/fusefrontend_reverse/rfs.go:264: github.com/hanwen/go-fuse/fuse.DirEntry composite literal uses unkeyed fields
2016-09-25 19:02:12 +02:00
Jakob Unterwurzacher 2050c7f3b3 reverse: add gcmsiv flag and associated tests 2016-09-25 16:43:17 +02:00
Jakob Unterwurzacher 02b6d3067d test: split up integration_tests
...into "matrix" and "normal".

Also:
* Make running multiple packages in parallel safe, see
  http://stackoverflow.com/questions/23715302/go-how-to-run-tests-for-multiple-packages
* Don't depent on test_helper.TmpDir and friends to have a terminating slash
2016-06-30 00:57:14 +02:00
Jakob Unterwurzacher bd5405189e Fix "go tool vet -shadow=true" warnings
Among those one real bug.
2016-04-10 21:31:15 +02:00
Jakob Unterwurzacher 9b6894bdbf test.bash: Accept flags 2016-02-06 20:25:18 +01:00
Jakob Unterwurzacher b0ee5258b1 Fix tests - were broken by the refactoring 2016-02-06 20:22:45 +01:00
Jakob Unterwurzacher 2b8cbd9441 Major refactoring: Split up "cryptfs" into several internal packages
"git status" for reference:

deleted:    cryptfs/cryptfs.go
deleted:    cryptfs/names_core.go
modified:   integration_tests/cli_test.go
modified:   integration_tests/helpers.go
renamed:    cryptfs/config_file.go -> internal/configfile/config_file.go
renamed:    cryptfs/config_test.go -> internal/configfile/config_test.go
renamed:    cryptfs/config_test/.gitignore -> internal/configfile/config_test/.gitignore
renamed:    cryptfs/config_test/PlaintextNames.conf -> internal/configfile/config_test/PlaintextNames.conf
renamed:    cryptfs/config_test/StrangeFeature.conf -> internal/configfile/config_test/StrangeFeature.conf
renamed:    cryptfs/config_test/v1.conf -> internal/configfile/config_test/v1.conf
renamed:    cryptfs/config_test/v2.conf -> internal/configfile/config_test/v2.conf
renamed:    cryptfs/kdf.go -> internal/configfile/kdf.go
renamed:    cryptfs/kdf_test.go -> internal/configfile/kdf_test.go
renamed:    cryptfs/cryptfs_content.go -> internal/contentenc/content.go
new file:   internal/contentenc/content_api.go
renamed:    cryptfs/content_test.go -> internal/contentenc/content_test.go
renamed:    cryptfs/file_header.go -> internal/contentenc/file_header.go
renamed:    cryptfs/intrablock.go -> internal/contentenc/intrablock.go
renamed:    cryptfs/address_translation.go -> internal/contentenc/offsets.go
new file:   internal/cryptocore/crypto_api.go
renamed:    cryptfs/gcm_go1.4.go -> internal/cryptocore/gcm_go1.4.go
renamed:    cryptfs/gcm_go1.5.go -> internal/cryptocore/gcm_go1.5.go
renamed:    cryptfs/nonce.go -> internal/cryptocore/nonce.go
renamed:    cryptfs/openssl_aead.go -> internal/cryptocore/openssl_aead.go
renamed:    cryptfs/openssl_benchmark.bash -> internal/cryptocore/openssl_benchmark.bash
renamed:    cryptfs/openssl_test.go -> internal/cryptocore/openssl_test.go
new file:   internal/nametransform/name_api.go
new file:   internal/nametransform/names_core.go
renamed:    cryptfs/names_diriv.go -> internal/nametransform/names_diriv.go
renamed:    cryptfs/names_noiv.go -> internal/nametransform/names_noiv.go
renamed:    cryptfs/names_test.go -> internal/nametransform/names_test.go
new file:   internal/nametransform/pad16.go
renamed:    cryptfs/log.go -> internal/toggledlog/log.go
renamed:    cryptfs/log_go1.4.go -> internal/toggledlog/log_go1.4.go
renamed:    cryptfs/log_go1.5.go -> internal/toggledlog/log_go1.5.go
modified:   main.go
modified:   masterkey.go
modified:   pathfs_frontend/file.go
modified:   pathfs_frontend/file_holes.go
modified:   pathfs_frontend/fs.go
modified:   pathfs_frontend/fs_dir.go
modified:   pathfs_frontend/names.go
modified:   test.bash
2016-02-06 19:22:35 +01:00
Jakob Unterwurzacher f01f599d74 Make test.bash work when called from outside the gocryptfs directory
Also, get rid of useless intermediate build step
2016-01-09 14:27:04 +01:00
Jakob Unterwurzacher 3664320fe5 tests: move integration tests to separate directory
Also, use new "-defaultonly" flag for benchmarks
(only tests with openssl=true plaintextnames=false)
2015-11-12 21:02:44 +01:00
Jakob Unterwurzacher b80167b39d tests: reduce noise but make test.bash accept "-v" 2015-11-03 21:11:07 +01:00
Jakob Unterwurzacher e7c25b482e Update test.bash to call build.bash
This makes sure the version number is baked into the binary that is
built
2015-11-01 15:22:53 +01:00