Add urandom_test to all_tests.json

Change-Id: I4e30bc8b8c1bd1215f516a6c89735782cfbf8ef5
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/38284
Reviewed-by: Adam Langley <agl@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: Adam Langley <agl@google.com>
diff --git a/util/all_tests.go b/util/all_tests.go
index fbff48c..4dd7f2c 100644
--- a/util/all_tests.go
+++ b/util/all_tests.go
@@ -55,6 +55,7 @@
 }
 
 type test struct {
+	env              []string
 	args             []string
 	shard, numShards int
 	// cpu, if not empty, contains a code to simulate. For SDE, run `sde64
@@ -148,7 +149,7 @@
 	prog := path.Join(*buildDir, test.args[0])
 	args := append([]string{}, test.args[1:]...)
 	if *simulateARMCPUs && test.cpu != "" {
-		args = append(args, "--cpu=" + test.cpu)
+		args = append(args, "--cpu="+test.cpu)
 	}
 	if *useSDE {
 		// SDE is neither compatible with the unwind tester nor automatically
@@ -167,6 +168,11 @@
 	} else {
 		cmd = exec.Command(prog, args...)
 	}
+	if test.env != nil {
+		cmd.Env = make([]string, len(os.Environ()))
+		copy(cmd.Env, os.Environ())
+		cmd.Env = append(cmd.Env, test.env...)
+	}
 	var outBuf bytes.Buffer
 	cmd.Stdout = &outBuf
 	cmd.Stderr = &outBuf
@@ -258,7 +264,12 @@
 
 	var result []test
 	for _, args := range testArgs {
-		result = append(result, test{args: args})
+		var env []string
+		for len(args) > 0 && strings.HasPrefix(args[0], "$") {
+			env = append(env, args[0][1:])
+			args = args[1:]
+		}
+		result = append(result, test{args: args, env: env})
 	}
 	return result, nil
 }
@@ -272,11 +283,18 @@
 }
 
 func (t test) shortName() string {
-	return t.args[0] + t.shardMsg() + t.cpuMsg()
+	return t.args[0] + t.shardMsg() + t.cpuMsg() + t.envMsg()
+}
+
+func SpaceIf(returnSpace bool) string {
+	if !returnSpace {
+		return ""
+	}
+	return " "
 }
 
 func (t test) longName() string {
-	return strings.Join(t.args, " ") + t.cpuMsg()
+	return strings.Join(t.env, " ") + SpaceIf(len(t.env) != 0) + strings.Join(t.args, " ") + t.cpuMsg()
 }
 
 func (t test) shardMsg() string {
@@ -295,6 +313,14 @@
 	return fmt.Sprintf(" (for CPU %q)", t.cpu)
 }
 
+func (t test) envMsg() string {
+	if len(t.env) == 0 {
+		return ""
+	}
+
+	return " (custom environment)"
+}
+
 func (t test) getGTestShards() ([]test, error) {
 	if *numWorkers == 1 || len(t.args) != 1 {
 		return []test{t}, nil