Files
SEQUA-Engine/platform/process/tests/temp_dir.hpp
T
Ange-Marie MAURIN - A2M Systèmes 464ff6ce88 refactor(platform): lanceur de processus commun, enfant lié au parent
Le lancement de processus de Studio host (CoreProcess) devient sequa::platform::ChildProcess dans platform/process, pour être partagé par Studio host et le Core (qui lancera le rendu, ADR 0009). Nouvelle option kill_with_parent : l'enfant meurt avec le parent, même brutalement (job object KILL_ON_JOB_CLOSE sous Windows, fork + PR_SET_PDEATHSIG sous Linux, ignorée sous macOS). Les tests de copie fantôme restent dans studio/host/supervisor (test_shadow.cpp) avec l'enfant de test de platform/process.
2026-11-07 14:41:56 +01:00

41 lines
1.1 KiB
C++

// SPDX-License-Identifier: MPL-2.0
// Dossier temporaire propre à un test, supprimé à la fin. Jamais le vrai dossier
// d'exécution de SEQUA.
#pragma once
#include "sequa/platform/process.hpp"
#include <filesystem>
#include <system_error>
namespace sequa::platform::testing {
class TempDir {
public:
TempDir()
: path_(std::filesystem::temp_directory_path()
/ ("sequa-process-" + std::to_string(current_process_id()) + "-"
+ std::to_string(++counter_)))
{
std::filesystem::create_directories(path_);
}
~TempDir()
{
std::error_code ignored;
std::filesystem::remove_all(path_, ignored);
}
TempDir(const TempDir&) = delete;
TempDir& operator=(const TempDir&) = delete;
[[nodiscard]] const std::filesystem::path& path() const noexcept { return path_; }
private:
// Compteur de secours : deux dossiers créés dans la même milliseconde par le
// même processus ne se chevauchent pas.
inline static int counter_ = 0;
std::filesystem::path path_;
};
} // namespace sequa::platform::testing