diff options
| -rw-r--r-- | tests/matrix/matrix_test.go | 61 | 
1 files changed, 41 insertions, 20 deletions
| diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go index b4c5668..99ac257 100644 --- a/tests/matrix/matrix_test.go +++ b/tests/matrix/matrix_test.go @@ -12,6 +12,7 @@ package matrix  import (  	"bytes" +	"encoding/json"  	"flag"  	"fmt"  	"io/ioutil" @@ -31,30 +32,50 @@ import (  // a global variable  var plaintextnames bool +type testcaseMatrix struct { +	// Exported so we can dump the struct using json.Marshal +	Plaintextnames bool +	Openssl        string +	Aessiv         bool +} + +var matrix []testcaseMatrix = []testcaseMatrix{ +	// Normal +	{false, "auto", false}, +	{false, "true", false}, +	{false, "false", false}, +	// Plaintextnames +	{true, "true", false}, +	{true, "false", false}, +	// AES-SIV (does not use openssl, no need to test permutations) +	{false, "auto", true}, +	{true, "auto", true}, +} +  // This is the entry point for the tests  func TestMain(m *testing.M) {  	// Make "testing.Verbose()" return the correct value  	flag.Parse() -	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) -			} -			test_helpers.ResetTmpDir(plaintextnames) -			opts := []string{"--zerokey"} -			opts = append(opts, fmt.Sprintf("-openssl=%v", openssl)) -			opts = append(opts, fmt.Sprintf("-plaintextnames=%v", plaintextnames)) -			test_helpers.MountOrExit(test_helpers.DefaultCipherDir, test_helpers.DefaultPlainDir, opts...) -			r := m.Run() -			test_helpers.UnmountPanic(test_helpers.DefaultPlainDir) -			if r != 0 { -				os.Exit(r) -			} +	for _, testcase := range matrix { +		if !cryptocore.HaveModernGoGCM && testcase.Openssl != "true" { +			fmt.Printf("Skipping Go GCM variant, Go installation is too old") +			continue +		} +		if testing.Verbose() { +			j, _ := json.Marshal(testcase) +			fmt.Printf("matrix: testcase = %s\n", string(j)) +		} +		plaintextnames = testcase.Plaintextnames +		test_helpers.ResetTmpDir(plaintextnames) +		opts := []string{"-zerokey"} +		opts = append(opts, fmt.Sprintf("-openssl=%v", testcase.Openssl)) +		opts = append(opts, fmt.Sprintf("-plaintextnames=%v", testcase.Plaintextnames)) +		opts = append(opts, fmt.Sprintf("-aessiv=%v", testcase.Aessiv)) +		test_helpers.MountOrExit(test_helpers.DefaultCipherDir, test_helpers.DefaultPlainDir, opts...) +		r := m.Run() +		test_helpers.UnmountPanic(test_helpers.DefaultPlainDir) +		if r != 0 { +			os.Exit(r)  		}  	}  	os.Exit(0) | 
