42 """Return the first .log file under root matching the folder_name.
44 If folder_name is None, look for log files directly under the day
45 directory (i.e. not in stdout/stderr subfolders).
47 logs_root = root / CONST.LOG_FOLDER_BASE_NAME
48 if not logs_root.exists():
52 for p
in logs_root.rglob(
"*.log"):
55 if parent.name
not in (CONST.FOLDER_STDOUT, CONST.FOLDER_STDERR, CONST.FOLDER_STDIN, CONST.FOLDER_STDUNKNOWN):
58 if parent.name == folder_name:
61 f
"No log file found for folder {folder_name!r} under {root}")
69 rl.start_logging(log_folder=tmp_path, merged=
False, log_to_file=
True)
71 sys.stdout.write(
"OUT: hello split\n")
72 sys.stderr.write(
"ERR: goodbye split\n")
91 assert out_file.exists()
92 assert err_file.exists()
94 out_text = out_file.read_text(encoding=
"utf-8")
95 err_text = err_file.read_text(encoding=
"utf-8")
97 assert "OUT: hello split" in out_text
98 assert "ERR: goodbye split" in err_text
130 """With merge_stdin=True and merged=True, stdin uses the same FileInstance as stdout/stderr."""
132 rl.start_logging(log_folder=tmp_path, merged=
True,
133 merge_stdin=
True, log_to_file=
False)
135 assert rl.stdin_stream
is not None
136 assert rl.stdout_stream
is not None
138 assert rl.stdin_stream.file_instance
is rl.stdout_stream.file_instance
139 assert rl.stderr_stream
is not None
140 assert rl.stderr_stream.file_instance
is rl.stdout_stream.file_instance
146 """In split mode (merged=False), stdin gets its own FileInstance separate from stdout."""
148 rl.start_logging(log_folder=tmp_path, merged=
False, log_to_file=
False)
150 assert rl.stdin_stream
is not None
151 assert rl.stdout_stream
is not None
153 assert rl.stdin_stream.file_instance
is not rl.stdout_stream.file_instance
154 assert rl.stderr_stream
is not None
155 assert rl.stderr_stream.file_instance
is not rl.stdout_stream.file_instance