This is an automated email from the ASF dual-hosted git repository.

laiyingchun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git


The following commit(s) were added to refs/heads/master by this push:
     new ed3d31ef7 refactor(filesystem): refactor file_utils unit tests (#1634)
ed3d31ef7 is described below

commit ed3d31ef7f7a85d4220abebd65c637788b49b94e
Author: Yingchun Lai <[email protected]>
AuthorDate: Thu Oct 12 11:17:50 2023 +0800

    refactor(filesystem): refactor file_utils unit tests (#1634)
    
    https://github.com/apache/incubator-pegasus/issues/887
    
    - Remove the useless return value of `get_normalized_path()`
    - Simplify the code of file_utils.cpp
---
 src/utils/filesystem.cpp      |  102 +---
 src/utils/filesystem.h        |    2 +-
 src/utils/test/file_utils.cpp | 1132 +++++++++++------------------------------
 3 files changed, 320 insertions(+), 916 deletions(-)

diff --git a/src/utils/filesystem.cpp b/src/utils/filesystem.cpp
index a252d823b..211aefbec 100644
--- a/src/utils/filesystem.cpp
+++ b/src/utils/filesystem.cpp
@@ -94,8 +94,7 @@ static inline int get_stat_internal(const std::string &npath, 
struct stat_ &st)
     return err;
 }
 
-// TODO(yingchun): remove the return value because it's always 0.
-int get_normalized_path(const std::string &path, std::string &npath)
+void get_normalized_path(const std::string &path, std::string &npath)
 {
     char sep;
     size_t i;
@@ -105,7 +104,7 @@ int get_normalized_path(const std::string &path, 
std::string &npath)
 
     if (path.empty()) {
         npath = "";
-        return 0;
+        return;
     }
 
     len = path.length();
@@ -131,8 +130,6 @@ int get_normalized_path(const std::string &path, 
std::string &npath)
 
     CHECK_NE_MSG(tls_path_buffer[0], _FS_NULL, "Normalized path cannot be 
empty!");
     npath = tls_path_buffer;
-
-    return 0;
 }
 
 static __thread struct
@@ -210,44 +207,31 @@ bool path_exists(const std::string &path)
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    get_normalized_path(path, npath);
 
     return dsn::utils::filesystem::path_exists_internal(npath, FTW_NS);
 }
 
 bool directory_exists(const std::string &path)
 {
-    std::string npath;
-    int err;
-
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    std::string npath;
+    get_normalized_path(path, npath);
 
     return dsn::utils::filesystem::path_exists_internal(npath, FTW_D);
 }
 
 bool file_exists(const std::string &path)
 {
-    std::string npath;
-    int err;
-
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    std::string npath;
+    get_normalized_path(path, npath);
 
     return dsn::utils::filesystem::path_exists_internal(npath, FTW_F);
 }
@@ -257,23 +241,18 @@ static bool get_subpaths(const std::string &path,
                          bool recursive,
                          int typeflags)
 {
-    std::string npath;
-    bool ret;
-    int err;
-
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    std::string npath;
+    get_normalized_path(path, npath);
 
     if (!dsn::utils::filesystem::path_exists_internal(npath, FTW_D)) {
         return false;
     }
 
+    bool ret;
     switch (typeflags) {
     case FTW_F:
         ret = dsn::utils::filesystem::file_tree_walk(
@@ -351,17 +330,12 @@ static bool remove_directory(const std::string &npath)
 
 bool remove_path(const std::string &path)
 {
-    std::string npath;
-    int err;
-
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    std::string npath;
+    get_normalized_path(path, npath);
 
     if (dsn::utils::filesystem::path_exists_internal(npath, FTW_F)) {
         bool ret = (::remove(npath.c_str()) == 0);
@@ -391,20 +365,15 @@ bool rename_path(const std::string &path1, const 
std::string &path2)
 
 bool deprecated_file_size(const std::string &path, int64_t &sz)
 {
-    struct stat_ st;
-    std::string npath;
-    int err;
-
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    std::string npath;
+    get_normalized_path(path, npath);
 
-    err = dsn::utils::filesystem::get_stat_internal(npath, st);
+    struct stat_ st;
+    int err = dsn::utils::filesystem::get_stat_internal(npath, st);
     if (err != 0) {
         return false;
     }
@@ -458,18 +427,14 @@ bool create_directory(const std::string &path)
     std::string npath;
     std::string cpath;
     size_t len;
-    int err;
 
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    get_normalized_path(path, npath);
 
-    err = dsn::utils::filesystem::create_directory_component(npath);
+    int err = dsn::utils::filesystem::create_directory_component(npath);
     if (err == 0) {
         return true;
     } else if (err != ENOENT) {
@@ -514,10 +479,7 @@ out_error:
 bool create_file(const std::string &path)
 {
     std::string npath;
-    int err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    get_normalized_path(path, npath);
 
     auto pos = npath.find_last_of("\\/");
     if ((pos != std::string::npos) && (pos > 0)) {
@@ -599,23 +561,20 @@ std::string get_file_name(const std::string &path)
 
 std::string path_combine(const std::string &path1, const std::string &path2)
 {
-    int err;
-    std::string path3;
     std::string npath;
-
     if (path1.empty()) {
-        err = dsn::utils::filesystem::get_normalized_path(path2, npath);
+        get_normalized_path(path2, npath);
     } else if (path2.empty()) {
-        err = dsn::utils::filesystem::get_normalized_path(path1, npath);
+        get_normalized_path(path1, npath);
     } else {
-        path3 = path1;
+        std::string path3 = path1;
         path3.append(1, _FS_SLASH);
         path3.append(path2);
 
-        err = dsn::utils::filesystem::get_normalized_path(path3, npath);
+        get_normalized_path(path3, npath);
     }
 
-    return ((err == 0) ? npath : "");
+    return npath;
 }
 
 bool get_current_directory(std::string &path)
@@ -632,20 +591,15 @@ bool get_current_directory(std::string &path)
 
 bool last_write_time(const std::string &path, time_t &tm)
 {
-    struct stat_ st;
-    std::string npath;
-    int err;
-
     if (path.empty()) {
         return false;
     }
 
-    err = get_normalized_path(path, npath);
-    if (err != 0) {
-        return false;
-    }
+    std::string npath;
+    get_normalized_path(path, npath);
 
-    err = dsn::utils::filesystem::get_stat_internal(npath, st);
+    struct stat_ st;
+    int err = dsn::utils::filesystem::get_stat_internal(npath, st);
     if (err != 0) {
         return false;
     }
diff --git a/src/utils/filesystem.h b/src/utils/filesystem.h
index be62e7683..2142d1be1 100644
--- a/src/utils/filesystem.h
+++ b/src/utils/filesystem.h
@@ -67,7 +67,7 @@ namespace filesystem {
 
 // TODO(yingchun): Consider using rocksdb APIs to rewrite the following 
functions.
 
-int get_normalized_path(const std::string &path, std::string &npath);
+void get_normalized_path(const std::string &path, std::string &npath);
 
 bool get_absolute_path(const std::string &path1, std::string &path2);
 
diff --git a/src/utils/test/file_utils.cpp b/src/utils/test/file_utils.cpp
index 0cc2173e8..c4cadeb95 100644
--- a/src/utils/test/file_utils.cpp
+++ b/src/utils/test/file_utils.cpp
@@ -25,877 +25,327 @@
  */
 
 // IWYU pragma: no_include <gtest/gtest-message.h>
+// IWYU pragma: no_include <gtest/gtest-param-test.h>
 // IWYU pragma: no_include <gtest/gtest-test-part.h>
 #include <gtest/gtest.h>
+#include <rocksdb/env.h>
+#include <rocksdb/slice.h>
+#include <rocksdb/status.h>
 #include <stdint.h>
 #include <time.h>
 #include <fstream>
 #include <string>
 #include <vector>
 
+#include "test_util/test_util.h"
 #include "utils/env.h"
 #include "utils/error_code.h"
 #include "utils/filesystem.h"
 
-static void file_utils_test_setup()
+class file_utils : public pegasus::encrypt_data_test_base
 {
-    std::string path;
-    bool ret;
-
-    path = "./file_utils_temp.txt";
-    ret = dsn::utils::filesystem::remove_path(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_FALSE(ret);
-
-    path = "./file_utils_temp";
-    ret = dsn::utils::filesystem::remove_path(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_FALSE(ret);
-}
+public:
+    void file_utils_test_setup()
+    {
+        std::string path = "./file_utils_temp.txt";
+        ASSERT_TRUE(dsn::utils::filesystem::remove_path(path));
+        ASSERT_FALSE(dsn::utils::filesystem::file_exists(path));
+
+        path = "./file_utils_temp";
+        ASSERT_TRUE(dsn::utils::filesystem::remove_path(path));
+        ASSERT_FALSE(dsn::utils::filesystem::directory_exists(path));
+    }
 
-static void file_utils_test_get_process_image_path()
-{
-    std::string path;
-    std::string imagepath;
-    dsn::error_code ret;
-    // int pid;
+    void file_utils_test_get_process_image_path()
+    {
+        std::string imagepath;
+        ASSERT_TRUE(dsn::utils::filesystem::get_current_directory(imagepath));
+        imagepath = dsn::utils::filesystem::path_combine(imagepath, 
"dsn_utils_tests");
 
-    if (!dsn::utils::filesystem::get_current_directory(imagepath)) {
-        EXPECT_TRUE(false);
+        std::string path;
+        ASSERT_EQ(dsn::ERR_OK, 
dsn::utils::filesystem::get_current_process_image_path(path));
     }
-    imagepath = dsn::utils::filesystem::path_combine(imagepath, 
"dsn_utils_tests");
 
-    ret = dsn::utils::filesystem::get_current_process_image_path(path);
-    EXPECT_TRUE(ret == dsn::ERR_OK);
-    // TODO: not always true when running dir is not where the test resides
-    // EXPECT_TRUE(path == imagepath); // e: vs E:
-}
+    void file_utils_test_get_normalized_path()
+    {
+        struct same_normalized_paths
+        {
+            std::string path;
+        } same_normalized_path_tests[] = {{"\\\\?\\"},
+                                          {"c:\\"},
+                                          {"c:"},
+                                          {"\\\\?\\c:\\"},
+                                          {"\\\\?\\c:"},
+                                          {"c:\\a"},
+                                          {"c:\\\\a"},
+                                          {"c:\\\\a\\"},
+                                          {"c:\\\\a\\\\"},
+                                          {"\\\\?\\c:\\a"},
+                                          {"\\\\?\\c:\\\\a"},
+                                          {"\\\\?\\c:\\\\a\\"},
+                                          {"\\\\?\\c:\\\\a\\\\"},
+                                          {"\\"},
+                                          {"\\\\"},
+                                          {"\\\\\\"},
+                                          {"\\\\a"},
+                                          {"\\\\\\a"},
+                                          {"\\\\a\\"},
+                                          {"\\\\\\a\\"},
+                                          {"\\\\\\a\\\\"},
+                                          {"/"},
+                                          {"c:/a"},
+                                          {"."},
+                                          {"./a"},
+                                          {"./a/b"},
+                                          {".."},
+                                          {"../a"},
+                                          {"../a/b"}};
+        for (const auto &test : same_normalized_path_tests) {
+            std::string npath;
+            dsn::utils::filesystem::get_normalized_path(test.path, npath);
+            ASSERT_EQ(test.path, npath);
+        }
+
+        struct normalized_paths
+        {
+            std::string path;
+            std::string normalized_path;
+        } normalized_path_tests[] = {
+            {"//", "/"},
+            {"//?/", "/?"},
+            {"//a", "/a"},
+            {"//a/", "/a"},
+            {"//a//", "/a"},
+            {"c:/", "c:"},
+            {"c://", "c:"},
+            {"c:/a/", "c:/a"},
+            {"c://a/", "c:/a"},
+            {"c://a//", "c:/a"},
+            
{"/////////////////////////////////////////////////////////////////", "/"},
+            
{"/////////////////////////////////////////////////////////////////a/////////////////"
+             "b///"
+             "////////",
+             "/a/b"},
+            {"./", "."},
+            {".//a", "./a"},
+            {"./a/", "./a"},
+            {"./a/b/", "./a/b"},
+            {".///a////b///", "./a/b"},
+            {"../", ".."},
+            {"..//a", "../a"},
+            {"../a/", "../a"},
+            {"../a/b/", "../a/b"},
+            {"..///a////b///", "../a/b"}};
+        for (const auto &test : normalized_path_tests) {
+            std::string npath;
+            dsn::utils::filesystem::get_normalized_path(test.path, npath);
+            ASSERT_EQ(test.normalized_path, npath) << test.path;
+        }
+    }
 
-static void file_utils_test_get_normalized_path()
-{
-    int ret;
-    std::string path;
-    std::string npath;
-
-    path = "\\\\?\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "c:\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "c:";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "\\\\?\\c:\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "\\\\?\\c:";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "c:\\a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "c:\\\\a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "c:\\\\a\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "c:\\\\a\\\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\?\\c:\\a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "\\\\?\\c:\\\\a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\?\\c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\?\\c:\\\\a\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\?\\c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\?\\c:\\\\a\\\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\?\\c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "\\\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "\\\\\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "\\\\\\a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\a\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\\\a\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "\\\\\\a\\\\";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "//";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\");
-#else
-    EXPECT_TRUE(npath == "/");
-#endif
-
-    path = "//?/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\?\\");
-#else
-    EXPECT_TRUE(npath == "/?");
-#endif
-
-    path = "//a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == "/a");
-#endif
-
-    path = "//a/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == "/a");
-#endif
-
-    path = "//a//";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a");
-#else
-    EXPECT_TRUE(npath == "/a");
-#endif
-
-    path = "c:/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\");
-#else
-    EXPECT_TRUE(npath == "c:");
-#endif
-
-    path = "c://";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\");
-#else
-    EXPECT_TRUE(npath == "c:");
-#endif
-
-    path = "c:/a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "c:/a/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == "c:/a");
-#endif
-
-    path = "c://a/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == "c:/a");
-#endif
-
-    path = "c://a//";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "c:\\a");
-#else
-    EXPECT_TRUE(npath == "c:/a");
-#endif
-
-    path = "/////////////////////////////////////////////////////////////////";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\");
-#else
-    EXPECT_TRUE(npath == "/");
-#endif
-
-    path = 
"/////////////////////////////////////////////////////////////////a/////////////////b///"
-           "////////";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "\\\\a\\b");
-#else
-    EXPECT_TRUE(npath == "/a/b");
-#endif
-
-    path = ".";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "./";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == ".");
-
-    path = "./a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == ".\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = ".//a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == ".\\a");
-#else
-    EXPECT_TRUE(npath == "./a");
-#endif
-
-    path = "./a/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == ".\\a");
-#else
-    EXPECT_TRUE(npath == "./a");
-#endif
-
-    path = "./a/b";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == ".\\a\\b");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "./a/b/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == ".\\a\\b");
-#else
-    EXPECT_TRUE(npath == "./a/b");
-#endif
-
-    path = ".///a////b///";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == ".\\a\\b");
-#else
-    EXPECT_TRUE(npath == "./a/b");
-#endif
-
-    path = "..";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == path);
-
-    path = "../";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-    EXPECT_TRUE(npath == "..");
-
-    path = "../a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "..\\a");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "..//a";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "..\\a");
-#else
-    EXPECT_TRUE(npath == "../a");
-#endif
-
-    path = "../a/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "..\\a");
-#else
-    EXPECT_TRUE(npath == "../a");
-#endif
-
-    path = "../a/b";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "..\\a\\b");
-#else
-    EXPECT_TRUE(npath == path);
-#endif
-
-    path = "../a/b/";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "..\\a\\b");
-#else
-    EXPECT_TRUE(npath == "../a/b");
-#endif
-
-    path = "..///a////b///";
-    ret = dsn::utils::filesystem::get_normalized_path(path, npath);
-    EXPECT_TRUE(ret == 0);
-#ifdef _WIN32
-    EXPECT_TRUE(npath == "..\\a\\b");
-#else
-    EXPECT_TRUE(npath == "../a/b");
-#endif
-}
+    void file_utils_test_get_current_directory()
+    {
+        std::string path;
+        ASSERT_TRUE(dsn::utils::filesystem::get_current_directory(path));
+        ASSERT_TRUE(!path.empty());
+    }
 
-static void file_utils_test_get_current_directory()
-{
-    std::string path;
-    bool ret;
+    void file_utils_test_path_combine()
+    {
+        struct combine_paths
+        {
+            std::string path1;
+            std::string path2;
+            std::string combined_path;
+        } tests[] = {{"", "", ""},
+                     {"c:", "Windows\\explorer.exe", 
"c:/Windows\\explorer.exe"},
+                     {"c:", "\\Windows\\explorer.exe", 
"c:/Windows\\explorer.exe"},
+                     {"c:\\", "\\Windows\\explorer.exe", 
"c:\\/Windows\\explorer.exe"},
+                     {"/bin", "ls", "/bin/ls"},
+                     {"/bin/", "ls", "/bin/ls"},
+                     {"/bin", "/ls", "/bin/ls"},
+                     {"/bin/", "/ls", "/bin/ls"}};
+        for (const auto &test : tests) {
+            std::string path = 
dsn::utils::filesystem::path_combine(test.path1, test.path2);
+            ASSERT_EQ(test.combined_path, path) << test.path1 << " + " << 
test.path2;
+        }
+    }
 
-    path = "";
-    ret = dsn::utils::filesystem::get_current_directory(path);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(!path.empty());
-}
+    void file_utils_test_get_file_name()
+    {
+        struct combine_paths
+        {
+            std::string path;
+            std::string file_name;
+        } tests[] = {{"", ""},
+                     {"c:", "c:"},
+                     {"c:\\", ""},
+                     {"c:1.txt", "c:1.txt"},
+                     {"c:\\1.txt", "1.txt"},
+                     {"c:\\Windows\\1.txt", "1.txt"},
+                     {"/bin/", ""},
+                     {"/bin/ls", "ls"}};
+        for (const auto &test : tests) {
+            std::string file_name = 
dsn::utils::filesystem::get_file_name(test.path);
+            ASSERT_EQ(test.file_name, file_name) << test.path;
+        }
+    }
 
-static void file_utils_test_path_combine()
-{
-    std::string path;
-    std::string path1;
-    std::string path2;
-
-    path1 = "";
-    path2 = "";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-    EXPECT_TRUE(path == "");
-
-    path1 = "c:";
-    path2 = "Windows\\explorer.exe";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "c:Windows\\explorer.exe");
-#else
-    EXPECT_TRUE(path == "c:/Windows\\explorer.exe");
-#endif
-
-    path1 = "c:";
-    path2 = "\\Windows\\explorer.exe";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "c:\\Windows\\explorer.exe");
-#else
-    EXPECT_TRUE(path == "c:/Windows\\explorer.exe");
-#endif
-
-    path1 = "c:\\";
-    path2 = "\\Windows\\explorer.exe";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "c:\\Windows\\explorer.exe");
-#else
-    EXPECT_TRUE(path == "c:\\/Windows\\explorer.exe");
-#endif
-
-    path1 = "/bin";
-    path2 = "ls";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "\\bin\\ls");
-#else
-    EXPECT_TRUE(path == "/bin/ls");
-#endif
-
-    path1 = "/bin/";
-    path2 = "ls";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "\\bin\\ls");
-#else
-    EXPECT_TRUE(path == "/bin/ls");
-#endif
-
-    path1 = "/bin";
-    path2 = "/ls";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "\\bin\\ls");
-#else
-    EXPECT_TRUE(path == "/bin/ls");
-#endif
-
-    path1 = "/bin/";
-    path2 = "/ls";
-    path = dsn::utils::filesystem::path_combine(path1, path2);
-#ifdef _WIN32
-    EXPECT_TRUE(path == "\\bin\\ls");
-#else
-    EXPECT_TRUE(path == "/bin/ls");
-#endif
-}
+    void file_utils_test_create()
+    {
+        std::string path = "./file_utils_temp.txt";
+        ASSERT_TRUE(dsn::utils::filesystem::create_file(path));
+        ASSERT_TRUE(dsn::utils::filesystem::file_exists(path));
+
+        time_t current_time = ::time(nullptr);
+        ASSERT_NE(current_time, 1);
+
+        auto s = rocksdb::WriteStringToFile(
+            dsn::utils::PegasusEnv(dsn::utils::FileDataType::kNonSensitive),
+            rocksdb::Slice("Hello world!"),
+            path,
+            /* should_sync */ true);
+        ASSERT_TRUE(s.ok()) << s.ToString();
+
+        time_t last_write_time;
+        ASSERT_TRUE(dsn::utils::filesystem::last_write_time(path, 
last_write_time));
+        ASSERT_NE(last_write_time, -1);
+        ASSERT_GE(last_write_time, current_time);
+
+        path = "./file_utils_temp";
+        ASSERT_TRUE(dsn::utils::filesystem::create_directory(path));
+        ASSERT_TRUE(dsn::utils::filesystem::directory_exists(path));
+
+        path = "./file_utils_temp/a/b/c/d//";
+        ASSERT_TRUE(dsn::utils::filesystem::create_directory(path));
+        ASSERT_TRUE(dsn::utils::filesystem::directory_exists(path));
+
+        struct create_files
+        {
+            std::string filename;
+        } tests[] = {{"./file_utils_temp/a/1.txt"},
+                     {"./file_utils_temp/a/2.txt"},
+                     {"./file_utils_temp/b/c/d/1.txt"}};
+        for (const auto &test : tests) {
+            ASSERT_TRUE(dsn::utils::filesystem::create_file(test.filename)) << 
test.filename;
+            ASSERT_TRUE(dsn::utils::filesystem::file_exists(test.filename)) << 
test.filename;
+        }
+    }
 
-static void file_utils_test_get_file_name()
-{
-    std::string path1;
-    std::string path2;
-
-    path1 = "";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-    EXPECT_TRUE(path2 == "");
-
-    path1 = "c:";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-#ifdef _WIN32
-    EXPECT_TRUE(path2 == "");
-#else
-    EXPECT_TRUE(path2 == "c:");
-#endif
-
-    path1 = "c:\\";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-    EXPECT_TRUE(path2 == "");
-
-    path1 = "c:1.txt";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-#ifdef _WIN32
-    EXPECT_TRUE(path2 == "1.txt");
-#else
-    EXPECT_TRUE(path2 == "c:1.txt");
-#endif
-
-    path1 = "c:\\1.txt";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-    EXPECT_TRUE(path2 == "1.txt");
-
-    path1 = "c:\\Windows\\1.txt";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-    EXPECT_TRUE(path2 == "1.txt");
-
-    path1 = "/bin/";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-    EXPECT_TRUE(path2 == "");
-
-    path1 = "/bin/ls";
-    path2 = dsn::utils::filesystem::get_file_name(path1);
-    EXPECT_TRUE(path2 == "ls");
-}
+    void file_utils_test_file_size()
+    {
+        std::string path = "./file_utils_temp.txt";
+        int64_t sz;
+        ASSERT_TRUE(
+            dsn::utils::filesystem::file_size(path, 
dsn::utils::FileDataType::kNonSensitive, sz));
+        ASSERT_EQ(12, sz);
+
+        path = "./file_utils_temp2.txt";
+        ASSERT_FALSE(
+            dsn::utils::filesystem::file_size(path, 
dsn::utils::FileDataType::kNonSensitive, sz));
+    }
 
-static void file_utils_test_create()
-{
-    std::string path;
-    bool ret;
-
-    path = "./file_utils_temp.txt";
-    ret = dsn::utils::filesystem::create_file(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_TRUE(ret);
-
-    time_t current_time = ::time(nullptr);
-    EXPECT_TRUE(current_time != 1);
-
-    std::ofstream myfile(path.c_str(), std::ios::out | std::ios::app | 
std::ios::binary);
-    EXPECT_TRUE(myfile.is_open());
-    myfile << "Hello world!";
-    myfile.close();
-
-    time_t last_write_time;
-    ret = dsn::utils::filesystem::last_write_time(path, last_write_time);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE((last_write_time != -1) && (last_write_time >= current_time));
-
-    path = "./file_utils_temp";
-    ret = dsn::utils::filesystem::create_directory(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "./file_utils_temp/a/b/c/d//";
-    ret = dsn::utils::filesystem::create_directory(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "./file_utils_temp/a/1.txt";
-    ret = dsn::utils::filesystem::create_file(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "./file_utils_temp/a/1.txt";
-    ret = dsn::utils::filesystem::create_file(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "./file_utils_temp/a/2.txt";
-    ret = dsn::utils::filesystem::create_file(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "./file_utils_temp/b/c/d/1.txt";
-    ret = dsn::utils::filesystem::create_file(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_TRUE(ret);
-}
+    void file_utils_test_path_exists()
+    {
+        std::string path = "/";
+        ASSERT_TRUE(dsn::utils::filesystem::path_exists(path));
+        ASSERT_TRUE(dsn::utils::filesystem::directory_exists(path));
+        ASSERT_FALSE(dsn::utils::filesystem::file_exists(path));
 
-static void file_utils_test_file_size()
-{
-    std::string path;
-    int64_t sz;
-    bool ret;
-
-    path = "./file_utils_temp.txt";
-    ret = dsn::utils::filesystem::file_size(path, 
dsn::utils::FileDataType::kNonSensitive, sz);
-    ASSERT_TRUE(ret);
-    ASSERT_EQ(12, sz);
-
-    path = "./file_utils_temp2.txt";
-    ret = dsn::utils::filesystem::file_size(path, 
dsn::utils::FileDataType::kNonSensitive, sz);
-    EXPECT_FALSE(ret);
-}
+        path = "./not_exists_not_exists";
+        ASSERT_FALSE(dsn::utils::filesystem::path_exists(path));
 
-static void file_utils_test_path_exists()
-{
-    std::string path;
-    bool ret;
-
-    path = "c:\\";
-    ret = dsn::utils::filesystem::path_exists(path);
-#ifdef _WIN32
-    EXPECT_TRUE(ret);
-#else
-    EXPECT_FALSE(ret);
-#endif
-
-    path = "c:\\";
-    ret = dsn::utils::filesystem::directory_exists(path);
-#ifdef _WIN32
-    EXPECT_TRUE(ret);
-#else
-    EXPECT_FALSE(ret);
-#endif
-
-    path = "c:\\";
-    ret = dsn::utils::filesystem::file_exists(path);
-#ifdef _WIN32
-    EXPECT_FALSE(ret);
-#else
-    EXPECT_FALSE(ret);
-#endif
-
-    path = "/";
-    ret = dsn::utils::filesystem::path_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "/";
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_TRUE(ret);
-
-    path = "/";
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_FALSE(ret);
-
-    path = "./not_exists_not_exists";
-    ret = dsn::utils::filesystem::path_exists(path);
-    EXPECT_FALSE(ret);
-
-    path = "c:\\Windows\\System32\\notepad.exe";
-    ret = dsn::utils::filesystem::path_exists(path);
-#ifdef _WIN32
-    EXPECT_TRUE(ret);
-#else
-    EXPECT_FALSE(ret);
-#endif
-
-    path = "c:\\Windows\\System32\\notepad.exe";
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_FALSE(ret);
-
-    path = "c:\\Windows\\System32\\notepad.exe";
-    ret = dsn::utils::filesystem::file_exists(path);
-#ifdef _WIN32
-    EXPECT_TRUE(ret);
-#else
-    EXPECT_FALSE(ret);
-#endif
-
-    path = "/bin/ls";
-    ret = dsn::utils::filesystem::path_exists(path);
-#ifdef _WIN32
-    EXPECT_FALSE(ret);
-#else
-    EXPECT_TRUE(ret);
-#endif
-
-    path = "/bin/ls";
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_FALSE(ret);
-
-    path = "/bin/ls";
-    ret = dsn::utils::filesystem::file_exists(path);
-#ifdef _WIN32
-    EXPECT_FALSE(ret);
-#else
-    EXPECT_TRUE(ret);
-#endif
-}
+        path = "/bin/ls";
+        ASSERT_TRUE(dsn::utils::filesystem::path_exists(path));
+        ASSERT_FALSE(dsn::utils::filesystem::directory_exists(path));
+        ASSERT_TRUE(dsn::utils::filesystem::file_exists(path));
+    }
 
-static void file_utils_test_get_paths()
-{
-    std::string path;
-    bool ret;
-    std::vector<std::string> file_list;
-
-    path = ".";
-    ret = dsn::utils::filesystem::get_subfiles(path, file_list, false);
-    EXPECT_TRUE(ret);
-#ifdef _WIN32
-    EXPECT_TRUE(file_list.size() >= 3);
-#else
-    EXPECT_TRUE(file_list.size() >= 2);
-#endif
-    file_list.clear();
-
-    path = ".";
-    ret = dsn::utils::filesystem::get_subfiles(path, file_list, true);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() >= 3);
-    file_list.clear();
-
-    path = "../../";
-    ret = dsn::utils::filesystem::get_subfiles(path, file_list, true);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() >= 3);
-    file_list.clear();
-
-    path = "./file_utils_temp/";
-    ret = dsn::utils::filesystem::get_subfiles(path, file_list, true);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 3);
-    file_list.clear();
-
-    path = "./file_utils_temp/";
-    ret = dsn::utils::filesystem::get_subdirectories(path, file_list, true);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 7);
-    file_list.clear();
-
-    path = "./file_utils_temp/";
-    ret = dsn::utils::filesystem::get_subdirectories(path, file_list, false);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 2);
-    file_list.clear();
-
-    path = "./file_utils_temp/";
-    ret = dsn::utils::filesystem::get_subpaths(path, file_list, true);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 10);
-    file_list.clear();
-
-    path = "./file_utils_temp/";
-    ret = dsn::utils::filesystem::get_subpaths(path, file_list, false);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 2);
-    file_list.clear();
-
-    path = "./file_utils_temp/a/";
-    ret = dsn::utils::filesystem::get_subfiles(path, file_list, false);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 2);
-    file_list.clear();
-
-    path = "./file_utils_temp/a/";
-    ret = dsn::utils::filesystem::get_subpaths(path, file_list, false);
-    EXPECT_TRUE(ret);
-    EXPECT_TRUE(file_list.size() == 3);
-    file_list.clear();
-}
+    void file_utils_test_get_paths()
+    {
+        std::string path = ".";
+        std::vector<std::string> file_list;
+        ASSERT_TRUE(dsn::utils::filesystem::get_subfiles(path, file_list, 
false));
+        ASSERT_GE(file_list.size(), 2);
+        file_list.clear();
+
+        path = ".";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subfiles(path, file_list, 
true));
+        ASSERT_GE(file_list.size(), 3);
+        file_list.clear();
+
+        path = "../../";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subfiles(path, file_list, 
true));
+        ASSERT_GE(file_list.size(), 3);
+        file_list.clear();
+
+        path = "./file_utils_temp/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subfiles(path, file_list, 
true));
+        ASSERT_EQ(file_list.size(), 3);
+        file_list.clear();
+
+        path = "./file_utils_temp/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subdirectories(path, 
file_list, true));
+        ASSERT_EQ(file_list.size(), 7);
+        file_list.clear();
+
+        path = "./file_utils_temp/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subdirectories(path, 
file_list, false));
+        ASSERT_EQ(file_list.size(), 2);
+        file_list.clear();
+
+        path = "./file_utils_temp/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subpaths(path, file_list, 
true));
+        ASSERT_EQ(file_list.size(), 10);
+        file_list.clear();
+
+        path = "./file_utils_temp/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subpaths(path, file_list, 
false));
+        ASSERT_EQ(file_list.size(), 2);
+        file_list.clear();
+
+        path = "./file_utils_temp/a/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subfiles(path, file_list, 
false));
+        ASSERT_EQ(file_list.size(), 2);
+        file_list.clear();
+
+        path = "./file_utils_temp/a/";
+        ASSERT_TRUE(dsn::utils::filesystem::get_subpaths(path, file_list, 
false));
+        ASSERT_EQ(file_list.size(), 3);
+        file_list.clear();
+    }
 
-static void file_utils_test_rename()
-{
-    std::string path;
-    std::string path2;
-    bool ret;
-
-    path = "./file_utils_temp/b/c/d/1.txt";
-    path2 = "./file_utils_temp/b/c/d/2.txt";
-    ret = dsn::utils::filesystem::rename_path(path, path2);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_FALSE(ret);
-    ret = dsn::utils::filesystem::file_exists(path2);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::rename_path(path, path2);
-    EXPECT_FALSE(ret);
-}
+    void file_utils_test_rename()
+    {
+        std::string path = "./file_utils_temp/b/c/d/1.txt";
+        std::string path2 = "./file_utils_temp/b/c/d/2.txt";
+        ASSERT_TRUE(dsn::utils::filesystem::rename_path(path, path2));
+        ASSERT_FALSE(dsn::utils::filesystem::file_exists(path));
+        ASSERT_TRUE(dsn::utils::filesystem::file_exists(path2));
+        ASSERT_FALSE(dsn::utils::filesystem::rename_path(path, path2));
+    }
 
-static void file_utils_test_remove()
-{
-    std::string path;
-    std::vector<std::string> file_list;
-    bool ret;
-
-    path = "./file_utils_temp.txt";
-    ret = dsn::utils::filesystem::remove_path(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::file_exists(path);
-    EXPECT_FALSE(ret);
-
-    path = "./file_utils_temp/a/2.txt";
-    ret = dsn::utils::filesystem::remove_path(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::remove_path(path);
-    EXPECT_TRUE(ret);
-
-    path = "./file_utils_temp/";
-    ret = dsn::utils::filesystem::remove_path(path);
-    EXPECT_TRUE(ret);
-    ret = dsn::utils::filesystem::directory_exists(path);
-    EXPECT_FALSE(ret);
-}
+    void file_utils_test_remove()
+    {
+        std::string path = "./file_utils_temp.txt";
+        ASSERT_TRUE(dsn::utils::filesystem::remove_path(path));
+        ASSERT_FALSE(dsn::utils::filesystem::file_exists(path));
+
+        path = "./file_utils_temp/a/2.txt";
+        ASSERT_TRUE(dsn::utils::filesystem::remove_path(path));
+        ASSERT_TRUE(dsn::utils::filesystem::remove_path(path));
+
+        path = "./file_utils_temp/";
+        ASSERT_TRUE(dsn::utils::filesystem::remove_path(path));
+        ASSERT_FALSE(dsn::utils::filesystem::directory_exists(path));
+    }
+
+    void file_utils_test_cleanup() {}
+};
 
-static void file_utils_test_cleanup() {}
+INSTANTIATE_TEST_CASE_P(, file_utils, ::testing::Values(false));
 
-TEST(core, file_utils)
+TEST_P(file_utils, basic)
 {
     file_utils_test_setup();
     file_utils_test_get_process_image_path();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to