From db5782028aaff99dbf15c62d851a4f6ec8227748 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Tue, 4 Oct 2016 22:29:14 +0200 Subject: [PATCH] tests: skip tests with -openssl=false on Go 1.4 and lower Go versions 1.4 and lower lack NewGCMWithNonceSize(), which causes a panic in the test. --- internal/cryptocore/gcm_go1.4.go | 4 ++++ internal/cryptocore/gcm_go1.5.go | 4 ++++ tests/example_filesystems/example_filesystems_test.go | 8 +++++++- tests/matrix/matrix_test.go | 8 +++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/internal/cryptocore/gcm_go1.4.go b/internal/cryptocore/gcm_go1.4.go index f7b77b2..6b494d7 100644 --- a/internal/cryptocore/gcm_go1.4.go +++ b/internal/cryptocore/gcm_go1.4.go @@ -10,6 +10,10 @@ import ( "github.com/rfjakob/gocryptfs/internal/tlog" ) +const ( + HaveModernGoGCM = false +) + // goGCMWrapper - This wrapper makes sure gocryptfs can be compiled on Go // versions 1.4 and lower that lack NewGCMWithNonceSize(). // 128 bit GCM IVs will not work when using built-in Go crypto, obviously, when diff --git a/internal/cryptocore/gcm_go1.5.go b/internal/cryptocore/gcm_go1.5.go index 0c9b1a5..6e67d21 100644 --- a/internal/cryptocore/gcm_go1.5.go +++ b/internal/cryptocore/gcm_go1.5.go @@ -7,6 +7,10 @@ import ( "crypto/cipher" ) +const ( + HaveModernGoGCM = true +) + // goGCMWrapper - This wrapper makes sure gocryptfs can be compiled on Go // versions 1.4 and lower that lack NewGCMWithNonceSize(). // 128 bit GCM IVs will not work when using built-in Go crypto, obviously, when diff --git a/tests/example_filesystems/example_filesystems_test.go b/tests/example_filesystems/example_filesystems_test.go index 8b01555..2b0c2ca 100644 --- a/tests/example_filesystems/example_filesystems_test.go +++ b/tests/example_filesystems/example_filesystems_test.go @@ -12,6 +12,7 @@ import ( "os" "testing" + "github.com/rfjakob/gocryptfs/internal/cryptocore" "github.com/rfjakob/gocryptfs/tests/test_helpers" ) @@ -22,7 +23,12 @@ var opensslOpt string func TestMain(m *testing.M) { // Make "testing.Verbose()" return the correct value flag.Parse() - for _, opensslOpt = range []string{"-openssl=false", "-openssl=true"} { + variants := []string{"-openssl=true", "-openssl=false"} + if !cryptocore.HaveModernGoGCM { + fmt.Printf("Skipping Go GCM variant, Go installation is too old") + variants = variants[:1] + } + for _, opensslOpt = range variants { if testing.Verbose() { fmt.Printf("example_filesystems: testing with %q\n", opensslOpt) } diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go index 6a96909..b4c5668 100644 --- a/tests/matrix/matrix_test.go +++ b/tests/matrix/matrix_test.go @@ -22,6 +22,7 @@ import ( "syscall" "testing" + "github.com/rfjakob/gocryptfs/internal/cryptocore" "github.com/rfjakob/gocryptfs/internal/syscallcompat" "github.com/rfjakob/gocryptfs/tests/test_helpers" ) @@ -34,7 +35,12 @@ var plaintextnames bool func TestMain(m *testing.M) { // Make "testing.Verbose()" return the correct value flag.Parse() - for _, openssl := range []bool{true, false} { + opensslVariants := []bool{true, false} + if !cryptocore.HaveModernGoGCM { + fmt.Printf("Skipping Go GCM variant, Go installation is too old") + opensslVariants = opensslVariants[:1] + } + for _, openssl := range opensslVariants { for _, plaintextnames = range []bool{true, false} { if testing.Verbose() { fmt.Printf("matrix: testing openssl=%v plaintextnames=%v\n", openssl, plaintextnames)