Skip to content

Commit c4c95e3

Browse files
committed
Merge branch 'release/4.2.3'
2 parents 864599b + d8d8b4c commit c4c95e3

File tree

11 files changed

+971
-1312
lines changed

11 files changed

+971
-1312
lines changed

.gitlab-ci.yml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ build:
2121
- tree -a .
2222
artifacts:
2323
paths:
24-
- install/*
25-
- build/html/*
24+
- install/
25+
- build/
2626

2727
pages:
2828
stage: doc
@@ -41,8 +41,8 @@ test:
4141
script:
4242
- pwd
4343
- ls -l
44-
- cd install/bin
45-
- ./testrun
44+
- cd build/
45+
- ctest --verbose
4646
dependencies:
4747
- build
4848

@@ -51,8 +51,8 @@ memcheck:
5151
script:
5252
- pwd
5353
- ls -l
54-
- cd install/bin
55-
- valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --error-exitcode=255 ./testrun
54+
- cd build/
55+
- valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --error-exitcode=255 ctest --verbose
5656
dependencies:
5757
- build
5858

@@ -95,11 +95,17 @@ win-build:
9595
- .shared_windows_runners
9696
stage: win
9797
script:
98+
- git clone https://github.com/tronkko/dirent.git
9899
- mkdir build
99100
- cd build
100-
- cmake -DCMAKE_INSTALL_PREFIX=..\install -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=ON ..
101+
- cmake -DCMAKE_INCLUDE_PATH="../dirent/include" -DBUILD_DOCS=OFF -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON ..
101102
- cmake --build .
103+
# due to the long provisioning time of the Windows runner, tests are
104+
# executed in the same stage as the build
105+
- ctest -C Debug --verbose
102106
artifacts:
103107
paths:
104-
- install
108+
- install/
109+
- build/
105110
dependencies: []
111+

CMakeLists.txt

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
cmake_minimum_required(VERSION 3.12)
1+
cmake_minimum_required(VERSION 3.18)
22

3-
project(iniparser VERSION 4.2.2)
3+
project(iniparser VERSION 4.2.3)
44

55
include(GNUInstallDirs)
66
include(CMakePackageConfigHelpers)
@@ -117,42 +117,8 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
117117
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
118118

119119
if(BUILD_TESTING)
120-
set(TEST_NAME testrun)
121-
add_custom_command(
122-
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/AllTests.c
123-
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/test/test_dictionary.c
124-
${CMAKE_CURRENT_SOURCE_DIR}/test/test_iniparser.c
125-
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test/make-tests.sh >
126-
${CMAKE_CURRENT_BINARY_DIR}/AllTests.c
127-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test/)
128-
129-
add_executable(
130-
${TEST_NAME}
131-
${CMAKE_CURRENT_BINARY_DIR}/AllTests.c
132-
${CMAKE_CURRENT_SOURCE_DIR}/test/CuTest.c
133-
${CMAKE_CURRENT_SOURCE_DIR}/test/test_dictionary.c
134-
${CMAKE_CURRENT_SOURCE_DIR}/test/test_iniparser.c)
135-
136-
foreach(TARGET_TYPE ${TARGET_TYPES})
137-
# if BUILD_STATIC_LIBS=ON shared takes precedence
138-
target_link_libraries(${TEST_NAME} "${PROJECT_NAME}-${TARGET_TYPE}")
139-
endforeach()
140-
141-
target_include_directories(
142-
${TEST_NAME}
143-
PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/test>
144-
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/>
145-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}>)
146-
147-
install(TARGETS ${TEST_NAME})
148-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test/ressources
149-
DESTINATION ${CMAKE_INSTALL_BINDIR})
150-
151120
enable_testing()
152-
add_test(
153-
NAME testsuite
154-
COMMAND ${TEST_NAME}
155-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test)
121+
add_subdirectory(test)
156122
endif()
157123

158124
option(BUILD_EXAMPLES "Build and install examples")

cmake/pc.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
prefix=${pcfiledir}/../..
1+
prefix=@CMAKE_INSTALL_PREFIX@
22
exec_prefix=${prefix}
3-
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
3+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@PROJECT_NAME@
44
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
55

66
Name: @PROJECT_NAME@
7-
Description: @PROJECT_NAME@ library
7+
Description: Simple C library offering ini file parsing services
88
Version: @PROJECT_VERSION@
99
Libs: -L${libdir} -l@PROJECT_NAME@
1010
Cflags: -I${includedir}

test/CMakeLists.txt

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
include(FetchContent)
2+
include(CTest)
3+
4+
find_program(
5+
RUBY_EXECUTABLE
6+
NAME
7+
ruby
8+
PATHS ENV
9+
PATH
10+
REQUIRED)
11+
12+
if(MSVC)
13+
message(STATUS "MSVC environment")
14+
find_file(
15+
MSVC_DIRENT
16+
"dirent.h"
17+
REQUIRED)
18+
message(STATUS "MSVC_DIRENT: ${MSVC_DIRENT}")
19+
get_filename_component(
20+
MSVC_DIRENT_INCLUDE_DIR
21+
${MSVC_DIRENT}
22+
DIRECTORY)
23+
message(STATUS "MSVC_DIRENT_INCLUDE_DIR: ${MSVC_DIRENT_INCLUDE_DIR}")
24+
include_directories(${MSVC_DIRENT_INCLUDE_DIR})
25+
endif()
26+
27+
set(FETCHCONTENT_QUIET OFF)
28+
29+
FetchContent_Declare(
30+
unity
31+
GIT_REPOSITORY "https://github.com/throwtheswitch/unity.git"
32+
GIT_PROGRESS TRUE
33+
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
34+
${CMAKE_CURRENT_LIST_DIR}/unity_config.h ./src/)
35+
36+
FetchContent_MakeAvailable(unity)
37+
target_compile_definitions(unity PUBLIC UNITY_INCLUDE_CONFIG_H)
38+
39+
function(create_test_runner)
40+
set(options)
41+
set(oneValueArgs NAME)
42+
set(multiValueArgs)
43+
cmake_parse_arguments(
44+
TEST_RUNNER
45+
"${options}"
46+
"${oneValueArgs}"
47+
"${multiValueArgs}"
48+
${ARGN})
49+
50+
message(STATUS "Creating test_${TEST_RUNNER_NAME}")
51+
add_custom_command(
52+
OUTPUT test_${TEST_RUNNER_NAME}_runner.c
53+
COMMAND
54+
${RUBY_EXECUTABLE} ${unity_SOURCE_DIR}/auto/generate_test_runner.rb
55+
${CMAKE_CURRENT_SOURCE_DIR}/test_${TEST_RUNNER_NAME}.c
56+
test_${TEST_RUNNER_NAME}_runner.c
57+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/test_${TEST_RUNNER_NAME}.c
58+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
59+
BYPRODUCTS test_${TEST_RUNNER_NAME}_runner.c)
60+
61+
add_executable(test_${TEST_RUNNER_NAME} test_${TEST_RUNNER_NAME}.c
62+
test_${TEST_RUNNER_NAME}_runner.c)
63+
# Prevent MSVC from creating Debug or Release subdirectories for test
64+
# executables
65+
set_target_properties(
66+
test_${TEST_RUNNER_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
67+
${CMAKE_CURRENT_BINARY_DIR}/$<0:>)
68+
foreach(TARGET_TYPE ${TARGET_TYPES})
69+
# if BUILD_STATIC_LIBS=ON shared takes precedence
70+
target_link_libraries(
71+
test_${TEST_RUNNER_NAME}
72+
${PROJECT_NAME}-${TARGET_TYPE}
73+
unity)
74+
endforeach()
75+
endfunction()
76+
77+
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/ressources
78+
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
79+
create_test_runner(NAME ${PROJECT_NAME})
80+
message(STATUS "Adding test test_${PROJECT_NAME}")
81+
add_test(
82+
NAME test_${PROJECT_NAME}
83+
COMMAND test_${PROJECT_NAME}
84+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
85+
86+
create_test_runner(NAME dictionary)
87+
message(STATUS "Adding test test_dictionary")
88+
add_test(
89+
NAME test_dictionary
90+
COMMAND test_dictionary
91+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

0 commit comments

Comments
 (0)