This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-4.2 in repository https://gitbox.apache.org/repos/asf/doris.git
commit d3f3f52ecaa1d2dbae3b59efa4229c6cfa1afb18 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]
