From: Nathan Moinvaziri Date: Sun, 19 Jun 2022 16:02:27 +0000 (-0700) Subject: Improve dual link test to compile against zlib. Previously we were only linking again... X-Git-Tag: 2.1.0-beta1~208 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dda87d2b181aae0d9e00f8b0312d8615e1e10310;p=thirdparty%2Fzlib-ng.git Improve dual link test to compile against zlib. Previously we were only linking against it. --- diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9158ce7b7..9667d5f79 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -83,12 +83,6 @@ jobs: cmake-args: -DWITH_OPTIM=OFF -DHAVE_BUILTIN_CTZLL=OFF -DHAVE_BUILTIN_CTZ=OFF codecov: ubuntu_gcc_no_ctz - - name: Ubuntu GCC Link Zlib - os: ubuntu-latest - compiler: gcc - cxx-compiler: g++ - cmake-args: -DZLIB_DUAL_LINK=ON - - name: Ubuntu GCC No AVX2 UBSAN os: ubuntu-latest compiler: gcc diff --git a/CMakeLists.txt b/CMakeLists.txt index 07c775377..fae09c7c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1191,12 +1191,6 @@ if(ZLIB_ENABLE_TESTS) target_compile_definitions(${target} PUBLIC -DWITH_GZFILEOP) target_sources(${target} PRIVATE ${ZLIB_GZFILE_PRIVATE_HDRS} ${ZLIB_GZFILE_SRCS}) endif() - if(ZLIB_DUAL_LINK) - find_package(ZLIB) - if(ZLIB_FOUND) - target_link_libraries(${target} ${ZLIB_LIBRARIES}) - endif() - endif() endmacro() macro(add_simple_test_executable target) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3a47e8b27..f30f9ac3a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -95,6 +95,21 @@ if(WITH_SANITIZER STREQUAL "Memory") -fsanitize-memory-track-origins) endif() +if(ZLIB_DUAL_LINK AND NOT ZLIB_COMPAT) + find_package(ZLIB) + if(ZLIB_FOUND) + message(STATUS "Added dual linking tests against zlib") + message(STATUS " Zlib include dir: ${ZLIB_INCLUDE_DIR}") + message(STATUS " Zlib libraries: ${ZLIB_LIBRARIES}") + + target_sources(gtest_zlib PRIVATE test_compress_dual.cc) + target_include_directories(gtest_zlib PRIVATE ${ZLIB_INCLUDE_DIR}) + target_link_libraries(gtest_zlib ${ZLIB_LIBRARIES}) + else() + message(WARNING "Zlib not found, skipping dual linking tests") + endif() +endif() + target_link_libraries(gtest_zlib zlibstatic GTest::GTest) find_package(Threads) diff --git a/test/test_compress_dual.cc b/test/test_compress_dual.cc new file mode 100644 index 000000000..a92ab4be3 --- /dev/null +++ b/test/test_compress_dual.cc @@ -0,0 +1,28 @@ +/* test_compress_dual.cc - Test linking against both zlib and zlib-ng */ + +#include "zlib.h" + +#include +#include +#include +#include + +#include "test_shared.h" + +#include + +TEST(compress, basic_zlib) { + Byte compr[128], uncompr[128]; + uLong compr_len = sizeof(compr), uncompr_len = sizeof(uncompr); + int err; + + err = compress(compr, &compr_len, (const unsigned char *)hello, hello_len); + EXPECT_EQ(err, Z_OK); + + strcpy((char*)uncompr, "garbage"); + + err = uncompress(uncompr, &uncompr_len, compr, compr_len); + EXPECT_EQ(err, Z_OK); + + EXPECT_STREQ((char *)uncompr, (char *)hello); +}