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

yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.1 by this push:
     new 7e279813341 add temp dir in testutil (#68638)
7e279813341 is described below

commit 7e27981334144ddcc42a2e863dabef7bdfba9e45
Author: yiguolei <[email protected]>
AuthorDate: Tue Sep 29 17:39:12 2026 +0800

    add temp dir in testutil (#68638)
    
    ### What problem does this PR solve?
    
    Issue Number: close #xxx
    
    Related PR: #xxx
    
    Problem Summary:
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test <!-- At least one of them must be included. -->
        - [ ] Regression test
        - [ ] Unit Test
        - [ ] Manual test (add detailed scripts or steps below)
        - [ ] No need to test or manual test. Explain why:
    - [ ] This is a refactor/code format and no logic has been changed.
            - [ ] Previous test can cover this change.
            - [ ] No code files have been changed.
            - [ ] Other reason <!-- Add your reason?  -->
    
    - Behavior changed:
        - [ ] No.
        - [ ] Yes. <!-- Explain the behavior change -->
    
    - Does this need documentation?
        - [ ] No.
    - [ ] Yes. <!-- Add document PR link here. eg:
    https://github.com/apache/doris-website/pull/1214 -->
    
    ### Check List (For Reviewer who merge this PR)
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label <!-- Add branch pick label that this PR
    should merge into -->
---
 be/test/testutil/scoped_temp_dir.h | 60 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/be/test/testutil/scoped_temp_dir.h 
b/be/test/testutil/scoped_temp_dir.h
new file mode 100644
index 00000000000..0c5e02a95ed
--- /dev/null
+++ b/be/test/testutil/scoped_temp_dir.h
@@ -0,0 +1,60 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+#pragma once
+
+#include <unistd.h>
+
+#include <cerrno>
+#include <filesystem>
+#include <string>
+#include <string_view>
+#include <system_error>
+#include <utility>
+
+namespace doris::test {
+
+class ScopedTempDirectory {
+public:
+    explicit ScopedTempDirectory(std::string_view prefix) {
+        std::string path_template =
+                (std::filesystem::temp_directory_path() / (std::string(prefix) 
+ "_XXXXXX"))
+                        .string();
+        if (::mkdtemp(path_template.data()) == nullptr) {
+            const int error = errno;
+            throw std::filesystem::filesystem_error(
+                    "cannot create temporary directory", path_template,
+                    std::error_code(error, std::generic_category()));
+        }
+        _path = std::move(path_template);
+    }
+
+    ~ScopedTempDirectory() {
+        std::error_code error;
+        std::filesystem::remove_all(_path, error);
+    }
+
+    ScopedTempDirectory(const ScopedTempDirectory&) = delete;
+    ScopedTempDirectory& operator=(const ScopedTempDirectory&) = delete;
+
+    const std::filesystem::path& path() const { return _path; }
+
+private:
+    std::filesystem::path _path;
+};
+
+} // namespace doris::test


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

Reply via email to