This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/orc.git
The following commit(s) were added to refs/heads/main by this push:
new a3940f293 ORC-1936: Get build and example dir from build system rather
than gtest
a3940f293 is described below
commit a3940f293a97caed40b395fe9b1c9e30035517bf
Author: Will Ayd <[email protected]>
AuthorDate: Mon Jun 23 13:59:07 2025 -0700
ORC-1936: Get build and example dir from build system rather than gtest
### What changes were proposed in this pull request?
Rather than pulling the build and example directory from gtest arguments,
this pulls it from the build system.
### Why are the changes needed?
When orc is used as a subproject, the current method of grabbing the
arguments from the build system fails
### How was this patch tested?
Tests were run locally
### Was this patch authored or co-authored using generative AI tooling?
No
Closes #2291 from WillAyd/improve-gtest-cli.
Authored-by: Will Ayd <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
---
tools/test/CMakeLists.txt | 5 +++++
tools/test/ToolTest.cc | 28 +++++++---------------------
tools/test/meson.build | 4 ++++
3 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/tools/test/CMakeLists.txt b/tools/test/CMakeLists.txt
index ed67b4007..39a6782bd 100644
--- a/tools/test/CMakeLists.txt
+++ b/tools/test/CMakeLists.txt
@@ -45,6 +45,11 @@ target_include_directories(tool-test PRIVATE
${PROJECT_SOURCE_DIR}/tools-c++/src
)
+target_compile_definitions(tool-test PRIVATE
+ "-DORC_EXAMPLE_DIR=${PROJECT_SOURCE_DIR}/examples"
+ "-DORC_BUILD_DIR=${PROJECT_BINARY_DIR}"
+)
+
add_dependencies(tool-test tool-set)
if (TEST_VALGRIND_MEMCHECK)
diff --git a/tools/test/ToolTest.cc b/tools/test/ToolTest.cc
index 8e3c546ea..38de3db0a 100644
--- a/tools/test/ToolTest.cc
+++ b/tools/test/ToolTest.cc
@@ -29,28 +29,9 @@
#include <string>
#include <vector>
-namespace {
- const char* exampleDirectory = 0;
- const char* buildDirectory = 0;
-} // namespace
-
GTEST_API_ int main(int argc, char** argv) {
GOOGLE_PROTOBUF_VERIFY_VERSION;
std::cout << "ORC version: " << ORC_VERSION << "\n";
- if (argc >= 2) {
- exampleDirectory = argv[1];
- } else {
- exampleDirectory = "../examples";
- }
- if (argc >= 3) {
- buildDirectory = argv[2];
- } else {
- buildDirectory = ".";
- }
- std::cout << "example dir = " << exampleDirectory << "\n";
- if (buildDirectory) {
- std::cout << "build dir = " << buildDirectory << "\n";
- }
testing::InitGoogleTest(&argc, argv);
int result = RUN_ALL_TESTS();
google::protobuf::ShutdownProtobufLibrary();
@@ -77,12 +58,16 @@ int runProgram(const std::vector<std::string>& args,
std::string& out, std::stri
return WEXITSTATUS(status);
}
+#define ORC_TOOL_TEST_STRINGIFY(path) ORC_TOOL_TEST_STR(path)
+#define ORC_TOOL_TEST_STR(path) #path
+
/**
* Get the name of the given example file.
* @param name the simple name of the example file
*/
std::string findExample(const std::string& name) {
- std::string result = exampleDirectory;
+#define ORC_EXAMPLE_DIR_STR ORC_TOOL_TEST_STRINGIFY(ORC_EXAMPLE_DIR)
+ std::string result = ORC_EXAMPLE_DIR_STR;
result += "/";
result += name;
return result;
@@ -93,7 +78,8 @@ std::string findExample(const std::string& name) {
* @param name the simple name of the executable
*/
std::string findProgram(const std::string& name) {
- std::string result = buildDirectory;
+#define ORC_BUILD_DIR_STR ORC_TOOL_TEST_STRINGIFY(ORC_BUILD_DIR)
+ std::string result = ORC_BUILD_DIR_STR;
result += "/";
result += name;
return result;
diff --git a/tools/test/meson.build b/tools/test/meson.build
index 80418daaf..542356558 100644
--- a/tools/test/meson.build
+++ b/tools/test/meson.build
@@ -36,5 +36,9 @@ exc = executable(
gtest_dep,
gmock_dep,
],
+ cpp_args: [
+ '-DORC_EXAMPLE_DIR=@0@'.format(meson.project_source_root() /
'examples'),
+ '-DORC_BUILD_DIR=@0@'.format(meson.project_build_root()),
+ ],
)
test('tool-test', exc)