This is an automated email from the ASF dual-hosted git repository. aboda pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 31bd60378a79aff5041a671652a3ca5dc7e1098e Author: Ferenc Gerlits <[email protected]> AuthorDate: Mon Jun 15 16:55:43 2020 +0200 MINIFICPP-1153 Change to a temporary directory Change the current working directory to a temporary directory not used by any other tests before running the CTailFile tests. Signed-off-by: Arpad Boda <[email protected]> This closes #815 --- nanofi/include/core/file_utils.h | 7 +++++++ nanofi/src/core/file_utils.c | 8 ++++++++ nanofi/tests/CTailFileChunkTests.cpp | 6 +++--- nanofi/tests/CTailFileDelimitedTests.cpp | 12 ++++++------ nanofi/tests/CTestsBase.h | 25 +++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 9 deletions(-) diff --git a/nanofi/include/core/file_utils.h b/nanofi/include/core/file_utils.h index 15806e4..e129270 100644 --- a/nanofi/include/core/file_utils.h +++ b/nanofi/include/core/file_utils.h @@ -71,6 +71,13 @@ int make_dir(const char * path); */ char * get_current_working_directory(); +/** + * Change the current working directory. + * @path can be relative or absolute + * @return 0 on success, non-zero on error + */ +int change_current_working_directory(const char *path); + #ifdef __cplusplus } #endif diff --git a/nanofi/src/core/file_utils.c b/nanofi/src/core/file_utils.c index 1eeedc6..f3c2303 100644 --- a/nanofi/src/core/file_utils.c +++ b/nanofi/src/core/file_utils.c @@ -139,3 +139,11 @@ char * get_current_working_directory() { free(cwd); return NULL; } + +int change_current_working_directory(const char *path) { +#ifdef WIN32 + return _chdir(path); +#else + return chdir(path); +#endif +} diff --git a/nanofi/tests/CTailFileChunkTests.cpp b/nanofi/tests/CTailFileChunkTests.cpp index ff933c8..da67385 100644 --- a/nanofi/tests/CTailFileChunkTests.cpp +++ b/nanofi/tests/CTailFileChunkTests.cpp @@ -35,7 +35,7 @@ */ TEST_CASE("Test tailfile chunk size 4096, file size 8KB", "[tailfileChunk8KBFileSize]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileChunk", on_trigger_tailfilechunk); const char * file = "./e.txt"; const char * chunksize = "4096"; @@ -67,7 +67,7 @@ TEST_CASE("Test tailfile chunk size 4096, file size 8KB", "[tailfileChunk8KBFile } TEST_CASE("Test tailfile chunk size 4096, file size less than 8KB", "[tailfileChunkFileSizeLessThan8KB]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileChunk", on_trigger_tailfilechunk); const char * file = "./e.txt"; const char * chunksize = "4096"; @@ -103,7 +103,7 @@ TEST_CASE("Test tailfile chunk size 4096, file size less than 8KB", "[tailfileCh } TEST_CASE("Test tailfile chunk size 512, file size equal to 4608B", "[tailfileChunkFileSize8KB]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileChunk", on_trigger_tailfilechunk); const char * file = "./e.txt"; const char * chunksize = "512"; diff --git a/nanofi/tests/CTailFileDelimitedTests.cpp b/nanofi/tests/CTailFileDelimitedTests.cpp index ed079d1..c43d59e 100644 --- a/nanofi/tests/CTailFileDelimitedTests.cpp +++ b/nanofi/tests/CTailFileDelimitedTests.cpp @@ -27,7 +27,7 @@ */ TEST_CASE("Test tailfile delimited. Empty file", "[tailfileDelimitedEmptyFileTest]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited); const char * file = "./e.txt"; const char * delimiter = ";"; @@ -43,7 +43,7 @@ TEST_CASE("Test tailfile delimited. Empty file", "[tailfileDelimitedEmptyFileTes } TEST_CASE("Test tailfile delimited. File has less than 4096 chars", "[tailfileDelimitedLessThan4096Chars]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited); const char * file = "./e.txt"; const char * delimiter = ";"; @@ -65,7 +65,7 @@ TEST_CASE("Test tailfile delimited. File has less than 4096 chars", "[tailfileDe } TEST_CASE("Test tailfile delimited. Simple test", "[tailfileDelimitedSimpleTest]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited); const char * file = "./e.txt"; const char * delimiter = ";"; @@ -105,7 +105,7 @@ TEST_CASE("Test tailfile delimited. Simple test", "[tailfileDelimitedSimpleTest] } TEST_CASE("Test tailfile delimited. trailing non delimited string", "[tailfileNonDelimitedTest]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited); const char * file = "./e.txt"; const char * delimiter = ";"; @@ -148,7 +148,7 @@ TEST_CASE("Test tailfile delimited. trailing non delimited string", "[tailfileNo } TEST_CASE("Test tailfile delimited 4096 chars non delimited", "[tailfileDelimitedSimpleTest]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited); const char * file = "./e.txt"; const char * delimiter = ";"; @@ -212,7 +212,7 @@ TEST_CASE("Test tailfile delimited 4096 chars non delimited", "[tailfileDelimite } TEST_CASE("Test tailfile delimited. string starting with delimiter", "[tailfileDelimiterStartStringTest]") { - + TestControllerWithTemporaryWorkingDirectory test_controller; TailFileTestResourceManager mgr("TailFileDelimited", on_trigger_tailfiledelimited); const char * file = "./e.txt"; const char * delimiter = ";"; diff --git a/nanofi/tests/CTestsBase.h b/nanofi/tests/CTestsBase.h index bcde416..8a5bbf7 100644 --- a/nanofi/tests/CTestsBase.h +++ b/nanofi/tests/CTestsBase.h @@ -29,6 +29,7 @@ #include "core/file_utils.h" #include "api/ecu.h" #include "api/nanofi.h" +#include "TestBase.h" class FileManager { public: @@ -124,6 +125,30 @@ private: standalone_processor * processor_; }; +class TestControllerWithTemporaryWorkingDirectory { +public: + TestControllerWithTemporaryWorkingDirectory() + : old_cwd_(get_current_working_directory()) + { + char format[] = "/tmp/ctest_temp_dir.XXXXXX"; + std::string temp_dir = test_controller_.createTempDirectory(format); + int result = change_current_working_directory(temp_dir.c_str()); + if (result != 0) { + throw std::runtime_error("Could not change to temporary directory " + temp_dir); + } + } + + ~TestControllerWithTemporaryWorkingDirectory() + { + chdir(old_cwd_); + free(old_cwd_); + } + +private: + TestController test_controller_; + char *old_cwd_; +}; + struct processor_params * invoke_processor(TailFileTestResourceManager& mgr, const char * filePath) { standalone_processor * proc = mgr.getProcessor(); set_standalone_property(proc, "file_path", filePath);
