Skip to content

Commit 97ec92a

Browse files
authored
Merge pull request #240 from riptano/CPP-775
CPP-775 - Add clang-format targets for Windows command line
2 parents 290f3c9 + 772e3a2 commit 97ec92a

2 files changed

Lines changed: 77 additions & 16 deletions

File tree

cpp-driver/cmake/modules/ClangFormat.cmake

Lines changed: 72 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,82 @@ if(CLANG_FORMAT_FOUND)
2828

2929
set(CLANG_FORMAT_EXCLUDE_PATTERNS ${CLANG_FORMAT_EXCLUDE_PATTERNS} "/CMakeFiles/" "cmake" "/build/" "/vendor/" "/third_party/" "cassandra.h" "dse.h")
3030

31-
foreach (SOURCE_FILE ${CLANG_FORMAT_ALL_SOURCE_FILES})
32-
foreach (EXCLUDE_PATTERN ${CLANG_FORMAT_EXCLUDE_PATTERNS})
31+
foreach(SOURCE_FILE ${CLANG_FORMAT_ALL_SOURCE_FILES})
32+
foreach(EXCLUDE_PATTERN ${CLANG_FORMAT_EXCLUDE_PATTERNS})
3333
string(FIND ${SOURCE_FILE} ${EXCLUDE_PATTERN} EXCLUDE_FOUND)
34-
if (NOT ${EXCLUDE_FOUND} EQUAL -1)
34+
if(NOT ${EXCLUDE_FOUND} EQUAL -1)
3535
list(REMOVE_ITEM CLANG_FORMAT_ALL_SOURCE_FILES ${SOURCE_FILE})
36-
endif ()
37-
endforeach ()
38-
endforeach ()
36+
endif()
37+
endforeach()
38+
endforeach()
3939

40-
add_custom_target(format
41-
COMMENT "Format source files using clang-format"
42-
COMMAND ${CLANG_FORMAT_EXE} -i -fallback-style=none -style=file ${CLANG_FORMAT_ALL_SOURCE_FILES})
40+
if(WIN32)
41+
set(CLANG_FORMAT_FILENAME "clang-format.files")
42+
set(CLANG_FORMAT_ABSOLUTE_FILENAME "${CMAKE_BINARY_DIR}/${CLANG_FORMAT_FILENAME}")
43+
if (EXISTS ${CLANG_FORMAT_ABSOLUTE_FILENAME})
44+
file(REMOVE ${CLANG_FORMAT_ABSOLUTE_FILENAME})
45+
endif()
4346

44-
add_custom_target(format-check
45-
COMMENT "Verify source files formatting using clang-format"
46-
COMMAND ! ${CLANG_FORMAT_EXE} -output-replacements-xml -fallback-style=none -style=file ${CLANG_FORMAT_ALL_SOURCE_FILES} | tee replacements.xml | grep -q "replacement offset")
47+
set(COUNT 1)
48+
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} CMAKE_WINDOWS_BINARY_DIR)
49+
foreach(SOURCE_FILE ${CLANG_FORMAT_ALL_SOURCE_FILES})
50+
file(RELATIVE_PATH RELATIVE_SOURCE_FILE ${CMAKE_BINARY_DIR} ${SOURCE_FILE})
51+
file(TO_NATIVE_PATH ${RELATIVE_SOURCE_FILE} NATIVE_RELATIVE_SOURCE_FILE)
52+
53+
if(COUNT EQUAL 50)
54+
file(APPEND ${CLANG_FORMAT_ABSOLUTE_FILENAME} " ${NATIVE_RELATIVE_SOURCE_FILE}\n")
55+
set(COUNT 1)
56+
else()
57+
file(APPEND ${CLANG_FORMAT_ABSOLUTE_FILENAME} " ${NATIVE_RELATIVE_SOURCE_FILE}")
58+
MATH(EXPR COUNT "${COUNT} + 1")
59+
endif()
60+
endforeach()
61+
62+
file(TO_NATIVE_PATH ${CLANG_FORMAT_EXE} CLANG_FORMAT_EXE)
63+
file(WRITE "${CMAKE_BINARY_DIR}/clang-format-windows.bat"
64+
"@REM Generated clang-format script for Windows\r\n"
65+
"@ECHO OFF\r\n"
66+
"SETLOCAL ENABLEDELAYEDEXPANSION\r\n"
67+
"SET IS_FAILED_CHECK=0\r\n"
68+
"PUSHD ${CMAKE_WINDOWS_BINARY_DIR}>NUL\r\n"
69+
"FOR /F \"TOKENS=*\" %%A IN (${CLANG_FORMAT_FILENAME}) do (\r\n"
70+
" IF %1 EQU 1 (\r\n"
71+
" \"${CLANG_FORMAT_EXE}\" -i -fallback-style=none -style=file %%A\r\n"
72+
" IF NOT !ERRORLEVEL! EQU 0 (\r\n"
73+
" SET IS_FAILED_CHECK=1\r\n"
74+
" )\r\n"
75+
" )\r\n"
76+
" IF %1 EQU 2 (\r\n"
77+
" \"${CLANG_FORMAT_EXE}\" -output-replacements-xml -fallback-style=none -style=file %%A 2>&1 | FINDSTR /C:\"replacement offset\">NUL\r\n"
78+
" IF !ERRORLEVEL! EQU 0 (\r\n"
79+
" SET IS_FAILED_CHECK=1\r\n"
80+
" )\r\n"
81+
" )\r\n"
82+
")\r\n"
83+
"IF NOT !IS_FAILED_CHECK! EQU 0 (\r\n"
84+
" POPD\r\n"
85+
" EXIT /B 1\r\n"
86+
")\r\n"
87+
"POPD\r\n"
88+
"ENDLOCAL\r\n"
89+
"EXIT /B 0\r\n")
90+
91+
add_custom_target(format
92+
COMMENT "Format source files using clang-format"
93+
COMMAND "${CMAKE_WINDOWS_BINARY_DIR}\\clang-format-windows.bat" 1)
94+
95+
add_custom_target(format-check
96+
COMMENT "Verify source files formatting using clang-format"
97+
COMMAND "${CMAKE_WINDOWS_BINARY_DIR}\\clang-format-windows.bat" 2)
98+
else()
99+
add_custom_target(format
100+
COMMENT "Format source files using clang-format"
101+
COMMAND ${CLANG_FORMAT_EXE} -i -fallback-style=none -style=file ${CLANG_FORMAT_ALL_SOURCE_FILES})
102+
103+
add_custom_target(format-check
104+
COMMENT "Verify source files formatting using clang-format"
105+
COMMAND ! ${CLANG_FORMAT_EXE} -output-replacements-xml -fallback-style=none -style=file ${CLANG_FORMAT_ALL_SOURCE_FILES} | tee replacements.xml | grep -q "replacement offset")
106+
endif()
47107
else()
48108
message(STATUS "Unable to find clang-format. Not creating format targets.")
49109
endif()

tests/src/integration/tests/test_dse_types.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,10 +437,11 @@ const std::vector<dse::LineString>
437437
/**
438438
* Values for polygon tests
439439
*/
440-
const dse::Polygon GEOMETRY_POLYGON[] = { dse::Polygon("(1.0 3.0, 3.0 1.0, 3.0 6.0, 1.0 3.0)"),
441-
dse::Polygon("(0.0 10.0, 10.0 0.0, 10.0 10.0, 0.0 10.0), \
442-
(6.0 7.0, 3.0 9.0, 9.0 9.0, 6.0 7.0)"),
443-
dse::Polygon("POLYGON EMPTY") };
440+
const dse::Polygon GEOMETRY_POLYGON[] = {
441+
dse::Polygon("(1.0 3.0, 3.0 1.0, 3.0 6.0, 1.0 3.0)"),
442+
dse::Polygon("(0.0 10.0, 10.0 0.0, 10.0 10.0, 0.0 10.0), (6.0 7.0, 3.0 9.0, 9.0 9.0, 6.0 7.0)"),
443+
dse::Polygon("POLYGON EMPTY")
444+
};
444445
template <>
445446
const std::vector<dse::Polygon>
446447
DseTypesTest<dse::Polygon>::values_(GEOMETRY_POLYGON,

0 commit comments

Comments
 (0)