Source File
implementations.go
Belonging Package
crypto/internal/cryptotest
// Copyright 2024 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package cryptotestimport ()// TestAllImplementations runs the provided test function with each available// implementation of the package registered with crypto/internal/impl. If there// are no alternative implementations for pkg, f is invoked directly once.func ( *testing.T, string, func( *testing.T)) {// BoringCrypto bypasses the multiple Go implementations.if boring.Enabled {()return}:= impl.List()if len() == 0 {()return}.Cleanup(func() { impl.Reset() })for , := range {if := impl.Select(, ); {.Run(, )} else {.Run(, func( *testing.T) {// Report an error if we're on the most capable builder for the// architecture and the builder can't test this implementation.if flagshipBuilder() {.Error("builder doesn't support CPU features needed to test this implementation")} else {.Skip("implementation not supported")}})}}// Test the generic implementation.impl.Select(, "").Run("Base", )}func flagshipBuilder() bool {:= testenv.Builder()if == "" {return false}switch goarch.GOARCH {case "amd64":return strings.Contains(, "_avx512")case "arm64":// Apple M chips support everything we use.return goos.GOOS == "darwin"default:// Presumably the Linux builders are the most capable.return goos.GOOS == "linux"}}
![]() |
The pages are generated with Golds v0.8.3-preview. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |