Add a test to call the BoringSSL test suite
authorMatt Caswell <>
Mon, 10 Oct 2016 11:24:00 +0000 (12:24 +0100)
committerMatt Caswell <>
Fri, 4 Nov 2016 10:38:54 +0000 (10:38 +0000)
This adds a test to the OpenSSL test suite to invoke the BoringSSL test

It assumes you have already compiled the ossl_shim (see previous commit).
It also assumes that you have an environment variable BORING_RUNNER_DIR
set up to point to the ssl/test/runner directory of a checkout of BoringSSL.

This has only been tested with a very old version of BoringSSL (from commit
f277add6c) - since that was the last known checkout where the shim compiles
successfully. Even with that version of BoringSSL this test will fail. There
are lots of Boring tests that are failing for various reasons. Some might
be due to bugs in OpenSSL, some might be due to features that BoringSSL has
that OpenSSL doesn't, some are due to assumptions about the way BoringSSL
behaves that are not true for OpenSSL etc.

To get the verbose BoringSSL test output, run like this:

VERBOSE=1 BORING_RUNNER_DIR=/path/to/boring/ssl/test/runner make \
TESTS="test_external" test

Reviewed-by: Richard Levitte <>
test/recipes/90-test_external.t [new file with mode: 0644]

diff --git a/test/recipes/90-test_external.t b/test/recipes/90-test_external.t
new file mode 100644 (file)
index 0000000..4ce3ab8
--- /dev/null
@@ -0,0 +1,26 @@
+#! /usr/bin/env perl
+# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+# Licensed under the OpenSSL license (the "License").  You may not use
+# this file except in compliance with the License.  You can obtain a copy
+# in the file LICENSE in the source distribution or at
+use OpenSSL::Test;
+use OpenSSL::Test::Utils;
+use OpenSSL::Test qw/:DEFAULT srctop_file/;
+    plan skip_all => "No external tests have been detected";
+plan tests => 1;
+indir $ENV{BORING_RUNNER_DIR} => sub {
+    ok(!system("go", "test", "-shim-path",
+               srctop_file("test", "ossl_shim", "ossl_shim"), "-pipe"),
+       "running external tests");
+}, create => 0, cleanup => 0;