Browse Source

build: fix `make distcheck`

Need to check if `unit.test` was run from make process and set
different path to run unit test executable.

Writing files in the dist is not allowed during distcheck so write
files to subdirectory used build during distmake
Elms 3 years ago
parent
commit
93ea355217
4 changed files with 38 additions and 21 deletions
  1. 5 1
      Makefile.am
  2. 9 3
      scripts/unit.test
  3. 0 1
      testsuite/include.am
  4. 24 16
      wolfcrypt/test/test.c

+ 5 - 1
Makefile.am

@@ -23,11 +23,15 @@ noinst_DATA =
 SUBDIRS_OPT =
 DIST_SUBDIRS_OPT =
 
+DISTCHECK_CONFIGURE_FLAGS = CPPFLAGS=-DDISTCHECK_BUILD
+
 #includes additional rules from aminclude.am
 @INC_AMINCLUDE@
 DISTCLEANFILES+= aminclude.am
 
-CLEANFILES+= cert.der \
+CLEANFILES+= ecc-key.der \
+             ecc-public-key.der \
+             cert.der \
              cert.pem \
              certecc.der \
              certecc.pem \

+ 9 - 3
scripts/unit.test

@@ -1,9 +1,15 @@
 #!/bin/sh
 
-DIRNAME="$(dirname "$0")"
+# for makefile use PWD as it is safe to assume location of execution
+if [ "$MAKELEVEL" != "" ]; then
+    DIRNAME=$PWD;
+else
+    DIRNAME="$(dirname "$0")/..";
+fi
+
 bwrap_path="$(command -v bwrap)"
 if [ -n "$bwrap_path" ]; then
-    exec "$bwrap_path" --unshare-net --dev-bind / / "$DIRNAME/../tests/unit.test" "$@"
+    exec "$bwrap_path" --unshare-net --dev-bind / / "$DIRNAME/tests/unit.test" "$@"
 else
-    exec "$DIRNAME/../tests/unit.test" "$@"
+    exec "$DIRNAME/tests/unit.test" "$@"
 fi

+ 0 - 1
testsuite/include.am

@@ -5,7 +5,6 @@
 
 if BUILD_TESTS
 check_PROGRAMS += testsuite/testsuite.test
-noinst_PROGRAMS += testsuite/testsuite.test
 testsuite_testsuite_test_SOURCES = \
 			      wolfcrypt/test/test.c \
 			      examples/client/client.c \

+ 24 - 16
wolfcrypt/test/test.c

@@ -11647,6 +11647,14 @@ byte GetEntropy(ENTROPY_CMD cmd, byte* out)
 #endif
 #define CERT_ROOT CERT_PREFIX "certs" CERT_PATH_SEP
 
+#ifdef DISTCHECK_BUILD
+/* This is the path used during distcheck by autotools.
+ * Using a temp directory passed in would be more flexible */
+    #define CERT_TEMPDIR "./_build/sub/"
+#else
+    #define CERT_TEMPDIR CERT_PREFIX
+#endif
+
 /* Generated Test Certs */
 #if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) && \
     !defined(USE_CERT_BUFFERS_3072) && !defined(USE_CERT_BUFFERS_4096)
@@ -11738,44 +11746,44 @@ byte GetEntropy(ENTROPY_CMD cmd, byte* out)
 #ifndef NO_WRITE_TEMP_FILES
 #ifdef HAVE_ECC
     #ifdef WOLFSSL_CERT_GEN
-         static const char* certEccPemFile =   CERT_PREFIX "certecc.pem";
+         static const char* certEccPemFile =   CERT_TEMPDIR "certecc.pem";
     #endif
     #if defined(WOLFSSL_CERT_GEN) && !defined(NO_RSA)
-        static const char* certEccRsaPemFile = CERT_PREFIX "certeccrsa.pem";
-        static const char* certEccRsaDerFile = CERT_PREFIX "certeccrsa.der";
+        static const char* certEccRsaPemFile = CERT_TEMPDIR "certeccrsa.pem";
+        static const char* certEccRsaDerFile = CERT_TEMPDIR "certeccrsa.der";
     #endif
-        static const char* eccCaKeyPemFile  = CERT_PREFIX "ecc-key.pem";
-        static const char* eccPubKeyDerFile = CERT_PREFIX "ecc-public-key.der";
-        static const char* eccCaKeyTempFile = CERT_PREFIX "ecc-key.der";
+        static const char* eccCaKeyPemFile  = CERT_TEMPDIR "ecc-key.pem";
+        static const char* eccPubKeyDerFile = CERT_TEMPDIR "ecc-public-key.der";
+        static const char* eccCaKeyTempFile = CERT_TEMPDIR "ecc-key.der";
     #ifdef HAVE_PKCS8
-        static const char* eccPkcs8KeyDerFile = CERT_PREFIX "ecc-key-pkcs8.der";
+        static const char* eccPkcs8KeyDerFile = CERT_TEMPDIR "ecc-key-pkcs8.der";
     #endif
     #if defined(WOLFSSL_CERT_GEN) || \
             (defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_TEST_CERT))
-        static const char* certEccDerFile = CERT_PREFIX "certecc.der";
+        static const char* certEccDerFile = CERT_TEMPDIR "certecc.der";
     #endif
 #endif /* HAVE_ECC */
 
 #ifndef NO_RSA
     #if defined(WOLFSSL_CERT_GEN) || \
         (defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_TEST_CERT))
-        static const char* otherCertDerFile = CERT_PREFIX "othercert.der";
-        static const char* certDerFile = CERT_PREFIX "cert.der";
+        static const char* otherCertDerFile = CERT_TEMPDIR "othercert.der";
+        static const char* certDerFile = CERT_TEMPDIR "cert.der";
     #endif
     #ifdef WOLFSSL_CERT_GEN
-        static const char* otherCertPemFile = CERT_PREFIX "othercert.pem";
-        static const char* certPemFile = CERT_PREFIX "cert.pem";
+        static const char* otherCertPemFile = CERT_TEMPDIR "othercert.pem";
+        static const char* certPemFile = CERT_TEMPDIR "cert.pem";
     #endif
     #ifdef WOLFSSL_CERT_REQ
-        static const char* certReqDerFile = CERT_PREFIX "certreq.der";
-        static const char* certReqPemFile = CERT_PREFIX "certreq.pem";
+        static const char* certReqDerFile = CERT_TEMPDIR "certreq.der";
+        static const char* certReqPemFile = CERT_TEMPDIR "certreq.pem";
     #endif
 #endif /* !NO_RSA */
 
 #if !defined(NO_RSA) || !defined(NO_DSA)
     #ifdef WOLFSSL_KEY_GEN
-        static const char* keyDerFile = CERT_PREFIX "key.der";
-        static const char* keyPemFile = CERT_PREFIX "key.pem";
+        static const char* keyDerFile = CERT_TEMPDIR "key.der";
+        static const char* keyPemFile = CERT_TEMPDIR "key.pem";
     #endif
 #endif