Add test coverage for private_optional + template_streamop combined; fix generator bugs (#14)
* Add test coverage for private_optional + template_streamop combined, fix generator bugs
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: zsy056 <1074382+zsy056@users.noreply.github.com>
diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt
index 6fdc95e..47602a1 100644
--- a/test/cpp/CMakeLists.txt
+++ b/test/cpp/CMakeLists.txt
@@ -187,6 +187,29 @@
target_link_libraries(TemplateStreamOpTest thrift)
add_test(NAME TemplateStreamOpTest COMMAND TemplateStreamOpTest)
+# PrivateOptionalTemplateStreamOpTest - tests private_optional and template_streamop together
+set(privateopttemplstreamoptestgencpp_SOURCES
+ gen-cpp-private-templatestreamop/gen-cpp/ThriftTest_types.cpp
+ gen-cpp-private-templatestreamop/gen-cpp/ThriftTest_constants.cpp
+ src/ThriftTest_extras.cpp
+)
+add_library(privateopttemplstreamoptestgencpp STATIC ${privateopttemplstreamoptestgencpp_SOURCES})
+target_include_directories(privateopttemplstreamoptestgencpp BEFORE PRIVATE
+ "${CMAKE_CURRENT_BINARY_DIR}/gen-cpp-private-templatestreamop"
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ "${PROJECT_SOURCE_DIR}/lib/cpp/src"
+)
+target_link_libraries(privateopttemplstreamoptestgencpp thrift)
+
+add_executable(PrivateOptionalTemplateStreamOpTest src/PrivateOptionalTemplateStreamOpTest.cpp)
+target_include_directories(PrivateOptionalTemplateStreamOpTest BEFORE PRIVATE
+ "${CMAKE_CURRENT_BINARY_DIR}/gen-cpp-private-templatestreamop/gen-cpp"
+ "${CMAKE_CURRENT_BINARY_DIR}/gen-cpp-private-templatestreamop"
+)
+target_link_libraries(PrivateOptionalTemplateStreamOpTest privateopttemplstreamoptestgencpp ${Boost_LIBRARIES})
+target_link_libraries(PrivateOptionalTemplateStreamOpTest thrift)
+add_test(NAME PrivateOptionalTemplateStreamOpTest COMMAND PrivateOptionalTemplateStreamOpTest)
+
#
# Common thrift code generation rules
#
@@ -223,6 +246,13 @@
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
+# Generate ThriftTest with private_optional,template_streamop options for PrivateOptionalTemplateStreamOpTest
+add_custom_command(OUTPUT gen-cpp-private-templatestreamop/gen-cpp/ThriftTest_types.cpp gen-cpp-private-templatestreamop/gen-cpp/ThriftTest_types.h gen-cpp-private-templatestreamop/gen-cpp/ThriftTest_constants.cpp
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/gen-cpp-private-templatestreamop
+ COMMAND ${THRIFT_COMPILER} --gen cpp:private_optional,template_streamop -o gen-cpp-private-templatestreamop ${PROJECT_SOURCE_DIR}/test/ThriftTest.thrift
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+)
+
add_custom_command(OUTPUT gen-cpp/Service.cpp
COMMAND ${THRIFT_COMPILER} --gen cpp ${PROJECT_SOURCE_DIR}/test/StressTest.thrift
)