cmake: enable all tests
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e6673b6..df86dc4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,7 +39,9 @@
COMMAND git archive --prefix=${ARCHIVE_NAME}/ -o ${ARCHIVE_NAME}.tar.xz HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
-IF(NOT BUILD_SHARED_LIBS)
+IF(BUILD_SHARED_LIBS)
+ SET(HAVE_SHARED TRUE)
+ELSE()
SET(ZIP_STATIC TRUE)
ENDIF()
@@ -136,6 +138,9 @@
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+# Testing
+ENABLE_TESTING()
+
# Targets
ADD_SUBDIRECTORY(lib)
ADD_SUBDIRECTORY(man)
@@ -159,10 +164,8 @@
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libzip.pc DESTINATION lib/pkgconfig)
# write out config file
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/config.h)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in
- ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h)
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in ${CMAKE_CURRENT_BINARY_DIR}/zipconf.h)
# for tests
diff --git a/TODO.md b/TODO.md
index b70fd89..32abe20 100644
--- a/TODO.md
+++ b/TODO.md
@@ -10,9 +10,7 @@
- replace `make distcheck`
- check generated xcode project
- add custom targets:
- - handle_links (one man page for multiple functions)
- update-errors (zip.h -> zip_errors.mdoc)
- - regress zip.zip -> zip
- regress clean up sandboxes
* clone support
diff --git a/cmake-config.h.in b/cmake-config.h.in
index 0d1839c..643cb24 100644
--- a/cmake-config.h.in
+++ b/cmake-config.h.in
@@ -58,6 +58,7 @@
#cmakedefine HAVE_SYS_DIR_H
#cmakedefine HAVE_SYS_NDIR_H
#cmakedefine WORDS_BIGENDIAN
+#cmakedefine HAVE_SHARED
/* END DEFINES */
#define PACKAGE "@PACKAGE@"
#define VERSION "@VERSION@"
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index 2c6461d..0133a23 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -1,17 +1,17 @@
-ENABLE_TESTING()
+# TESTS_ENVIRONMENT= ZIPCMP=${top_builddir}/src/zipcmp
CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT)
IF(NOT HAVE_GETOPT)
SET(SRC_EXTRA_FILES ../src/getopt.c)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../src)
-ENDIF(NOT HAVE_GETOPT)
+ENDIF()
SET(TEST_PROGRAMS
add_from_filep
fopen_unchanged
fseek
-# nonrandomopentest
+ nonrandomopentest
)
SET(GETOPT_USERS
@@ -19,6 +19,57 @@
tryopen
)
+SET(ENV{srcdir} ${CMAKE_CURRENT_SOURCE_DIR})
+FOREACH(PROGRAM ${TEST_PROGRAMS})
+ ADD_EXECUTABLE(${PROGRAM} ${PROGRAM}.c)
+ TARGET_LINK_LIBRARIES(${PROGRAM} zip)
+ENDFOREACH()
+
+ADD_EXECUTABLE(hole hole.c ${SRC_EXTRA_FILES} source_hole.c)
+TARGET_LINK_LIBRARIES(hole zip)
+
+ADD_EXECUTABLE(ziptool_regress ziptool_regress.c ${SRC_EXTRA_FILES} source_hole.c)
+TARGET_LINK_LIBRARIES(ziptool_regress zip)
+
+ADD_LIBRARY(malloc MODULE malloc.c)
+SET_PROPERTY(TARGET malloc PROPERTY LIBRARY_OUTPUT_NAME malloc)
+ADD_LIBRARY(nonrandomopen MODULE nonrandomopen.c)
+SET_PROPERTY(TARGET nonrandomopen PROPERTY LIBRARY_OUTPUT_NAME nonrandomopen)
+
+FOREACH(PROGRAM ${GETOPT_USERS})
+ ADD_EXECUTABLE(${PROGRAM} ${PROGRAM}.c ${SRC_EXTRA_FILES})
+ TARGET_LINK_LIBRARIES(${PROGRAM} zip)
+ENDFOREACH()
+
+# for appveyor builds
+#SET(CMAKE_MSVCIDE_RUN_PATH C:/projects/libzip/vstudio/zlib/installed/bin;C:/projects/libzip/vstudio/zlib/installed/lib;C:/projects/libzip/build/lib/Release)
+
+ADD_CUSTOM_TARGET(
+ testinput
+ ALL
+ VERBATIM
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 0 > manyfiles.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 1 > manyfiles-133000.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 2 > manyfiles-65536.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 3 > manyfiles-zip64-modulo.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 4 > manyfiles-zip64.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 5 > manyfiles-fewer.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 6 > manyfiles-more.zip
+ COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip cat 0 > bigzero.zip
+ DEPENDS ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip
+)
+
+SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
+ bigzero.zip
+ manyfiles-133000.zip
+ manyfiles-65536.zip
+ manyfiles-fewer.zip
+ manyfiles-more.zip
+ manyfiles-zip64-modulo.zip
+ manyfiles-zip64.zip
+ manyfiles.zip
+)
+
SET(EXTRA_TESTS
add_dir.test
add_from_buffer.test
@@ -53,10 +104,9 @@
delete_multiple_partial.test
delete_renamed_rename.test
encrypt.test
-# TODO: the tests need nonrandomopen.so, which is not hooked into the CMake build
-# encryption-nonrandom-aes128.test
-# encryption-nonrandom-aes192.test
-# encryption-nonrandom-aes256.test
+ encryption-nonrandom-aes128.test
+ encryption-nonrandom-aes192.test
+ encryption-nonrandom-aes256.test
encryption-remove.test
extra_add.test
extra_add_multiple.test
@@ -143,53 +193,10 @@
zip64_stored_creation.test
)
-SET(ENV{srcdir} ${CMAKE_CURRENT_SOURCE_DIR})
-FOREACH(PROGRAM ${TEST_PROGRAMS})
- ADD_EXECUTABLE(${PROGRAM} ${PROGRAM}.c)
- TARGET_LINK_LIBRARIES(${PROGRAM} zip)
-ENDFOREACH(PROGRAM ${STANDALONE_TEST_PROGRAMS})
-
-ADD_EXECUTABLE(hole hole.c ${SRC_EXTRA_FILES} source_hole.c)
-TARGET_LINK_LIBRARIES(hole zip)
-ADD_EXECUTABLE(ziptool_regress ziptool_regress.c ${SRC_EXTRA_FILES} source_hole.c)
-TARGET_LINK_LIBRARIES(ziptool_regress zip)
-
-FOREACH(PROGRAM ${GETOPT_USERS})
- ADD_EXECUTABLE(${PROGRAM} ${PROGRAM}.c ${SRC_EXTRA_FILES})
- TARGET_LINK_LIBRARIES(${PROGRAM} zip)
-ENDFOREACH(PROGRAM ${GETOPT_USERS})
-
-# for appveyor builds
-#SET(CMAKE_MSVCIDE_RUN_PATH C:/projects/libzip/vstudio/zlib/installed/bin;C:/projects/libzip/vstudio/zlib/installed/lib;C:/projects/libzip/build/lib/Release)
-
-ADD_CUSTOM_TARGET(
- testinput
- # ALL
- VERBATIM
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 0 > manyfiles.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 1 > manyfiles-133000.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 2 > manyfiles-65536.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 3 > manyfiles-zip64-modulo.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 4 > manyfiles-zip64.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 5 > manyfiles-fewer.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 6 > manyfiles-more.zip
- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip cat 0 > bigzero.zip
- DEPENDS ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip
-)
-SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
- bigzero.zip
- manyfiles-133000.zip
- manyfiles-65536.zip
- manyfiles-fewer.zip
- manyfiles-more.zip
- manyfiles-zip64-modulo.zip
- manyfiles-zip64.zip
- manyfiles.zip
-)
FOREACH(CASE ${EXTRA_TESTS})
ADD_TEST(${CASE} perl ${CMAKE_BINARY_DIR}/regress/runtest ${CMAKE_CURRENT_SOURCE_DIR}/${CASE})
-ENDFOREACH(CASE ${EXTRA_TESTS})
+ENDFOREACH()
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../src
diff --git a/regress/NiHTest.pm b/regress/NiHTest.pm
index 5ab48bc..a19c95e 100644
--- a/regress/NiHTest.pm
+++ b/regress/NiHTest.pm
@@ -340,7 +340,11 @@
$preload_env_var = 'DYLD_INSERT_LIBRARIES';
}
if (defined($self->{test}->{'preload'})) {
- $ENV{$preload_env_var} = cwd() . "/../.libs/$self->{test}->{'preload'}";
+ if (-f cwd() . "/../.libs/$self->{test}->{'preload'}") {
+ $ENV{$preload_env_var} = cwd() . "/../.libs/$self->{test}->{'preload'}";
+ } else {
+ $ENV{$preload_env_var} = cwd() . "/../lib$self->{test}->{'preload'}";
+ }
}
$self->run_program();