mirror of
https://github.com/cryb-to/cryb-to.git
synced 2024-12-22 04:21:08 +00:00
Add a test that ensures that our headers are compilable in C++.
This commit is contained in:
parent
cf28ec163b
commit
912ba9b6ff
4 changed files with 212 additions and 1 deletions
|
@ -12,9 +12,10 @@ AM_CONFIG_HEADER([include/config.h])
|
|||
|
||||
# C compiler and features
|
||||
AC_LANG(C)
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC([clang gcc cc])
|
||||
AC_PROG_CC_STDC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_CXX([clang++ g++ c++])
|
||||
AC_GNU_SOURCE
|
||||
AC_C_CONST
|
||||
AC_C_RESTRICT
|
||||
|
|
1
t/.gitignore
vendored
1
t/.gitignore
vendored
|
@ -4,6 +4,7 @@
|
|||
/t_cipher
|
||||
/t_core
|
||||
/t_ctype
|
||||
/t_cxx
|
||||
/t_digest
|
||||
/t_enc
|
||||
/t_endian
|
||||
|
|
|
@ -33,6 +33,48 @@ endif RSAREF_TESTS
|
|||
# tests
|
||||
TESTS =
|
||||
|
||||
# c++ header test
|
||||
TESTS += t_cxx
|
||||
t_cxx_SOURCES = t_cxx.cc
|
||||
t_cxx_CPPFLAGS = $(AM_CPPFLAGS)
|
||||
t_cxx_LDADD =
|
||||
if CRYB_CIPHER
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_CIPHER
|
||||
t_cxx_LDADD += $(libcipher)
|
||||
endif CRYB_CIPHER
|
||||
if CRYB_CORE
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_CORE
|
||||
t_cxx_LDADD += $(libcore)
|
||||
endif CRYB_CORE
|
||||
if CRYB_DIGEST
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_CORE
|
||||
t_cxx_LDADD += $(libdigest)
|
||||
endif CRYB_DIGEST
|
||||
if CRYB_ENC
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_ENC
|
||||
t_cxx_LDADD += $(libenc)
|
||||
endif CRYB_ENC
|
||||
if CRYB_HASH
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_HASH
|
||||
t_cxx_LDADD += $(libhash)
|
||||
endif CRYB_HASH
|
||||
if CRYB_MAC
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_MAC
|
||||
t_cxx_LDADD += $(libmac)
|
||||
endif CRYB_MAC
|
||||
if CRYB_MPI
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_MPI
|
||||
t_cxx_LDADD += $(libmpi)
|
||||
endif CRYB_MPI
|
||||
if CRYB_OATH
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_OATH
|
||||
t_cxx_LDADD += $(liboath)
|
||||
endif CRYB_OATH
|
||||
if CRYB_RAND
|
||||
t_cxx_CPPFLAGS += -DWITH_CRYB_RAND
|
||||
t_cxx_LDADD += $(librand)
|
||||
endif CRYB_RAND
|
||||
|
||||
# libcryb-cipher
|
||||
if CRYB_CIPHER
|
||||
TESTS += t_cipher
|
||||
|
|
167
t/t_cxx.cc
Normal file
167
t/t_cxx.cc
Normal file
|
@ -0,0 +1,167 @@
|
|||
/*-
|
||||
* Copyright (c) 2017 Dag-Erling Smørgrav
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "cryb/impl.h"
|
||||
|
||||
/* gcc's <cstdint> is broken */
|
||||
#include <stdint.h>
|
||||
#include <cstring>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
#include <cryb/to.h>
|
||||
|
||||
class test {
|
||||
public:
|
||||
virtual const char *name() = 0;
|
||||
virtual int run() = 0;
|
||||
};
|
||||
|
||||
#define TEST(lib) \
|
||||
class test_##lib : public test { \
|
||||
public: \
|
||||
virtual const char *name() { \
|
||||
return (#lib); \
|
||||
} \
|
||||
virtual int run() { \
|
||||
return (std::strcmp(cryb_##lib##_version(), \
|
||||
PACKAGE_VERSION) == 0); \
|
||||
} \
|
||||
};
|
||||
|
||||
#if WITH_CRYB_CIPHER
|
||||
#include <cryb/cipher.h>
|
||||
TEST(cipher)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_CORE
|
||||
#include <cryb/core.h>
|
||||
TEST(core)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_DIGEST
|
||||
#include <cryb/digest.h>
|
||||
TEST(digest)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_ENC
|
||||
#include <cryb/enc.h>
|
||||
TEST(enc)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_HASH
|
||||
#include <cryb/hash.h>
|
||||
TEST(hash)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_MAC
|
||||
#include <cryb/mac.h>
|
||||
TEST(mac)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_MPI
|
||||
#include <cryb/mpi.h>
|
||||
TEST(mpi)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_OATH
|
||||
#include <cryb/oath.h>
|
||||
TEST(oath)
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_RAND
|
||||
#include <cryb/rand.h>
|
||||
TEST(rand)
|
||||
#endif
|
||||
|
||||
#undef TEST
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
std::vector<test *> tests;
|
||||
int ret;
|
||||
|
||||
#define TEST(lib) tests.push_back(new test_##lib())
|
||||
|
||||
#if WITH_CRYB_CIPHER
|
||||
TEST(cipher);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_CORE
|
||||
TEST(core);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_DIGEST
|
||||
TEST(digest);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_ENC
|
||||
TEST(enc);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_HASH
|
||||
TEST(hash);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_MAC
|
||||
TEST(mac);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_MPI
|
||||
TEST(mpi);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_OATH
|
||||
TEST(oath);
|
||||
#endif
|
||||
|
||||
#if WITH_CRYB_RAND
|
||||
TEST(rand);
|
||||
#endif
|
||||
|
||||
#undef TEST
|
||||
|
||||
ret = 0;
|
||||
if (tests.empty()) {
|
||||
std::cout << "1..1" << std::endl <<
|
||||
"ok 1 - dummy" << std::endl;
|
||||
} else {
|
||||
std::cout << "1.." << tests.size() << std::endl;
|
||||
for (int i = 0; i < tests.size(); ++i) {
|
||||
if (!tests[i]->run()) {
|
||||
std::cout << "not ";
|
||||
ret = 1;
|
||||
}
|
||||
std::cout << "ok " << (i + 1) << " - " <<
|
||||
tests[i]->name() << std::endl;
|
||||
}
|
||||
}
|
||||
return (ret);
|
||||
}
|
Loading…
Reference in a new issue