namespace {
-Process::Arguments combine_args(const TempDir &dir, const Process::Arguments &in, bool cmd) {
+Process::Arguments combine_args(
+ const TempDir &dir,
+ const Process::Arguments &in,
+ bool cmd,
+ bool temp_save
+) {
Process::Arguments out;
out.reserve(in.size() + (cmd ? 5 : 3));
out.emplace_back("blank");
out.insert(out.end(), in.begin(), in.end());
- out.emplace_back("--save-path");
- out.emplace_back(dir.Path());
+ if (temp_save) {
+ out.emplace_back("--save-path");
+ out.emplace_back(dir.Path());
+ }
if (cmd) {
out.emplace_back("--cmd-port");
out.emplace_back("12354");
}
-TestInstance::TestInstance(const Process::Arguments &args, bool cmd)
+TestInstance::TestInstance(const Process::Arguments &args, bool cmd, bool temp_save)
: dir()
-, proc("./blank" BLANK_SUFFIX, combine_args(dir, args, cmd))
+, proc("./blank" BLANK_SUFFIX, combine_args(dir, args, cmd, temp_save))
, conn()
, out_buf()
, err_buf()
void TestInstance::ReadOutputLine(string &line) {
while (!out_buf.Extract(line)) {
// buffer exhausted, fetch more data
- int len = proc.ReadOut(out_buf.WriteHead(), out_buf.Remain(), 5000);
+ int len = proc.ReadOut(out_buf.WriteHead(), out_buf.Remain(), 10000);
if (len == 0) {
throw runtime_error("failed read from stdout of " + name);
}
output += '\n';
} else {
// buffer exhausted, fetch more data
- int len = proc.ReadOut(out_buf.WriteHead(), out_buf.Remain(), 5000);
+ int len = proc.ReadOut(out_buf.WriteHead(), out_buf.Remain(), 10000);
if (len == 0) {
// eof
return;
void TestInstance::ReadErrorLine(string &line) {
while (!err_buf.Extract(line)) {
// buffer exhausted, fetch more data
- int len = proc.ReadErr(err_buf.WriteHead(), err_buf.Remain(), 5000);
+ int len = proc.ReadErr(err_buf.WriteHead(), err_buf.Remain(), 10000);
if (len == 0) {
throw runtime_error("failed read from stderr of " + name);
}
error += '\n';
} else {
// buffer exhausted, fetch more data
- int len = proc.ReadErr(err_buf.WriteHead(), err_buf.Remain(), 5000);
+ int len = proc.ReadErr(err_buf.WriteHead(), err_buf.Remain(), 10000);
if (len == 0) {
// eof
return;