UnitTests/Process: Flush files to avoid read issues

This commit is contained in:
SirLynix
2024-01-23 15:30:40 +01:00
committed by Jérôme Leclercq
parent a228325bd5
commit 0e5e3ab9dd
2 changed files with 28 additions and 15 deletions

View File

@@ -12,8 +12,9 @@ int main(int argc, char* argv[])
{
if (argc != 2)
{
Nz::File errFile(Nz::Utf8Path("step4_failure.txt"), Nz::OpenMode::Write);
Nz::File errFile(Nz::Utf8Path("step4_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
errFile.Write(Nz::Format("unexpected argc: {}", argc));
errFile.Flush();
return EXIT_FAILURE;
}
@@ -21,34 +22,39 @@ int main(int argc, char* argv[])
Nz::Pid pid;
if (auto pidParse = std::from_chars(argv[1], argv[1] + std::strlen(argv[1]), pid); pidParse.ec != std::errc())
{
Nz::File errFile(Nz::Utf8Path("step4_failure.txt"), Nz::OpenMode::Write);
Nz::File errFile(Nz::Utf8Path("step4_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
errFile.Write(Nz::Format("invalid pid: {}", argv[1]));
errFile.Flush();
return EXIT_FAILURE;
}
Nz::File successFile4(Nz::Utf8Path("step4_success.txt"), Nz::OpenMode::Write);
Nz::File successFile4(Nz::Utf8Path("step4_success.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
successFile4.Write("1");
successFile4.Flush();
Nz::Result result = Nz::Process::Exists(pid);
if (!result)
{
Nz::File errFile(Nz::Utf8Path("step5_failure.txt"), Nz::OpenMode::Write);
Nz::File errFile(Nz::Utf8Path("step5_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
errFile.Write(Nz::Format("failed to retrieve parent process status: {}", result.GetError()));
errFile.Flush();
return EXIT_FAILURE;
}
if (!result.GetValue())
{
Nz::File file(Nz::Utf8Path("step5_failure.txt"), Nz::OpenMode::Write);
file.Write("parent process is already dead");
Nz::File errFile(Nz::Utf8Path("step5_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
errFile.Write("parent process is already dead");
errFile.Flush();
return EXIT_FAILURE;
}
Nz::File successFile5(Nz::Utf8Path("step5_success.txt"), Nz::OpenMode::Write);
Nz::File successFile5(Nz::Utf8Path("step5_success.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
successFile5.Write("1");
successFile5.Flush();
// Wait until parent dies
std::this_thread::sleep_for(std::chrono::milliseconds(500));
@@ -56,22 +62,25 @@ int main(int argc, char* argv[])
result = Nz::Process::Exists(pid);
if (!result)
{
Nz::File errFile(Nz::Utf8Path("step6_failure.txt"), Nz::OpenMode::Write);
Nz::File errFile(Nz::Utf8Path("step6_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
errFile.Write(Nz::Format("failed to retrieve parent process status after waiting: {}", result.GetError()));
errFile.Flush();
return EXIT_FAILURE;
}
if (result.GetValue())
{
Nz::File errFile(Nz::Utf8Path("step6_failure.txt"), Nz::OpenMode::Write);
Nz::File errFile(Nz::Utf8Path("step6_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
errFile.Write("parent process is still alive");
errFile.Flush();
return EXIT_FAILURE;
}
Nz::File successFile6(Nz::Utf8Path("step6_success.txt"), Nz::OpenMode::Write);
Nz::File successFile6(Nz::Utf8Path("step6_success.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
successFile6.Write("1");
successFile6.Flush();
// Wait for the unit tests process to check our existence
std::this_thread::sleep_for(std::chrono::milliseconds(3000));