Commit 03aca99f authored by Filippo Valsorda's avatar Filippo Valsorda

crypto/tls: make -update only regenerate transcripts for failing tests

Change-Id: Ie68fd4fe2879e6b5417a1a4240971e3d837bf115
Reviewed-on: https://go-review.googlesource.com/c/go/+/204377
Run-TryBot: Filippo Valsorda <filippo@golang.org>
Run-TryBot: Katie Hockman <katie@golang.org>
Reviewed-by: default avatarKatie Hockman <katie@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent bb7890b8
...@@ -499,21 +499,15 @@ func peekError(conn net.Conn) error { ...@@ -499,21 +499,15 @@ func peekError(conn net.Conn) error {
} }
func runClientTestForVersion(t *testing.T, template *clientTest, version, option string) { func runClientTestForVersion(t *testing.T, template *clientTest, version, option string) {
t.Run(version, func(t *testing.T) { // Make a deep copy of the template before going parallel.
// Make a deep copy of the template before going parallel. test := *template
test := *template if template.config != nil {
if template.config != nil { test.config = template.config.Clone()
test.config = template.config.Clone() }
} test.name = version + "-" + test.name
test.args = append([]string{option}, test.args...)
if !*update {
t.Parallel()
}
test.name = version + "-" + test.name runTestAndUpdateIfNeeded(t, version, test.run, false)
test.args = append([]string{option}, test.args...)
test.run(t, *update)
})
} }
func runClientTestTLS10(t *testing.T, template *clientTest) { func runClientTestTLS10(t *testing.T, template *clientTest) {
......
...@@ -729,25 +729,19 @@ func (test *serverTest) run(t *testing.T, write bool) { ...@@ -729,25 +729,19 @@ func (test *serverTest) run(t *testing.T, write bool) {
} }
func runServerTestForVersion(t *testing.T, template *serverTest, version, option string) { func runServerTestForVersion(t *testing.T, template *serverTest, version, option string) {
t.Run(version, func(t *testing.T) { // Make a deep copy of the template before going parallel.
// Make a deep copy of the template before going parallel. test := *template
test := *template if template.config != nil {
if template.config != nil { test.config = template.config.Clone()
test.config = template.config.Clone() }
} test.name = version + "-" + test.name
if len(test.command) == 0 {
if !*update && !template.wait { test.command = defaultClientCommand
t.Parallel() }
} test.command = append([]string(nil), test.command...)
test.command = append(test.command, option)
test.name = version + "-" + test.name runTestAndUpdateIfNeeded(t, version, test.run, test.wait)
if len(test.command) == 0 {
test.command = defaultClientCommand
}
test.command = append([]string(nil), test.command...)
test.command = append(test.command, option)
test.run(t, *update)
})
} }
func runServerTestTLS10(t *testing.T, template *serverTest) { func runServerTestTLS10(t *testing.T, template *serverTest) {
......
...@@ -37,17 +37,31 @@ import ( ...@@ -37,17 +37,31 @@ import (
// implementation. // implementation.
// //
// Tests can be updated by running them with the -update flag. This will cause // Tests can be updated by running them with the -update flag. This will cause
// the test files to be regenerated. Generally one should combine the -update // the test files for failing tests to be regenerated. Since the reference
// flag with -test.run to updated a specific test. Since the reference // implementation will always generate fresh random numbers, large parts of the
// implementation will always generate fresh random numbers, large parts of // reference connection will always change.
// the reference connection will always change.
var ( var (
update = flag.Bool("update", false, "update golden files on disk") update = flag.Bool("update", false, "update golden files on failure")
fast = flag.Bool("fast", false, "impose a quick, possibly flaky timeout on recorded tests") fast = flag.Bool("fast", false, "impose a quick, possibly flaky timeout on recorded tests")
keyFile = flag.String("keylog", "", "destination file for KeyLogWriter") keyFile = flag.String("keylog", "", "destination file for KeyLogWriter")
) )
func runTestAndUpdateIfNeeded(t *testing.T, name string, run func(t *testing.T, update bool), wait bool) {
success := t.Run(name, func(t *testing.T) {
if !*update && !wait {
t.Parallel()
}
run(t, false)
})
if !success && *update {
t.Run(name+"#update", func(t *testing.T) {
run(t, true)
})
}
}
// checkOpenSSLVersion ensures that the version of OpenSSL looks reasonable // checkOpenSSLVersion ensures that the version of OpenSSL looks reasonable
// before updating the test data. // before updating the test data.
func checkOpenSSLVersion() error { func checkOpenSSLVersion() error {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment