| // Copyright 2013 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 x509 |
| |
| import ( |
| "os" |
| "os/exec" |
| "testing" |
| "time" |
| ) |
| |
| func TestSystemRoots(t *testing.T) { |
| t0 := time.Now() |
| sysRoots, err := loadSystemRoots() // actual system roots |
| sysRootsDuration := time.Since(t0) |
| |
| if err != nil { |
| t.Fatalf("failed to read system roots: %v", err) |
| } |
| |
| t.Logf("loadSystemRoots: %v", sysRootsDuration) |
| |
| // There are 174 system roots on Catalina, and 163 on iOS right now, require |
| // at least 100 to make sure this is not completely broken. |
| if want, have := 100, sysRoots.len(); have < want { |
| t.Errorf("want at least %d system roots, have %d", want, have) |
| } |
| |
| if t.Failed() { |
| cmd := exec.Command("security", "dump-trust-settings") |
| cmd.Stdout, cmd.Stderr = os.Stderr, os.Stderr |
| cmd.Run() |
| cmd = exec.Command("security", "dump-trust-settings", "-d") |
| cmd.Stdout, cmd.Stderr = os.Stderr, os.Stderr |
| cmd.Run() |
| } |
| } |