UnitTests/Process: Flush files to avoid read issues
This commit is contained in:
parent
a228325bd5
commit
0e5e3ab9dd
|
|
@ -9,14 +9,16 @@
|
|||
int main(int argc, char* argv[])
|
||||
{
|
||||
{
|
||||
Nz::File file(Nz::Utf8Path("step1_success.txt"), Nz::OpenMode::Write);
|
||||
Nz::File file(Nz::Utf8Path("step1_success.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
|
||||
file.Write("1");
|
||||
file.Flush();
|
||||
}
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
Nz::File file(Nz::Utf8Path(Nz::Format("step2_param{}.txt", i)), Nz::OpenMode::Write);
|
||||
Nz::File file(Nz::Utf8Path(Nz::Format("step2_param{}.txt", i)), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
|
||||
file.Write(argv[i]);
|
||||
file.Flush();
|
||||
}
|
||||
|
||||
std::vector<std::string> parameters;
|
||||
|
|
@ -25,13 +27,15 @@ int main(int argc, char* argv[])
|
|||
Nz::Result result = Nz::Process::SpawnDetached("../UnitTests_sub2", parameters);
|
||||
if (result)
|
||||
{
|
||||
Nz::File file(Nz::Utf8Path("step3_pid.txt"), Nz::OpenMode::Write);
|
||||
Nz::File file(Nz::Utf8Path("step3_pid.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
|
||||
file.Write(std::to_string(result.GetValue()));
|
||||
file.Flush();
|
||||
}
|
||||
else
|
||||
{
|
||||
Nz::File file(Nz::Utf8Path("step3_failure.txt"), Nz::OpenMode::Write);
|
||||
file.Write(result.GetError());
|
||||
Nz::File errFile(Nz::Utf8Path("step3_failure.txt"), Nz::OpenMode::Write | Nz::OpenMode::Unbuffered);
|
||||
errFile.Write(result.GetError());
|
||||
errFile.Flush();
|
||||
}
|
||||
|
||||
// Wait for our child process to start and check for our existence
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Reference in New Issue