Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

When run_tests.py is in --quiet mode, write verbose logs to a file #51029

Merged
merged 1 commit into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ci/builders/linux_unopt.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@
"name": "test: Host_Tests_for_host_debug_unopt",
"script": "flutter/testing/run_tests.py",
"parameters": [
"--quiet",
"--logs-dir",
"${FLUTTER_LOGS_DIR}",
"--variant",
"host_debug_unopt",
"--type",
Expand Down
34 changes: 28 additions & 6 deletions testing/run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@

ENCODING = 'UTF-8'

LOG_FILE = os.path.join(OUT_DIR, 'run_tests.log')
logger = logging.getLogger(__name__)
logger_handler = logging.StreamHandler()
console_logger_handler = logging.StreamHandler()
file_logger_handler = logging.FileHandler(LOG_FILE)


# Override print so that it uses the logger instead of stdout directly.
Expand Down Expand Up @@ -952,7 +954,8 @@ def run_benchmark_tests(build_dir):
def worker_init(queue, level):
queue_handler = logging.handlers.QueueHandler(queue)
log = logging.getLogger(__name__)
log.setLevel(level)
log.setLevel(logging.INFO)
queue_handler.setLevel(level)
log.addHandler(queue_handler)


Expand All @@ -971,7 +974,12 @@ def run_engine_tasks_in_parallel(tasks):
max_processes = 60

queue = multiprocessing.Queue()
queue_listener = logging.handlers.QueueListener(queue, logger_handler)
queue_listener = logging.handlers.QueueListener(
queue,
console_logger_handler,
file_logger_handler,
respect_handler_level=True,
)
queue_listener.start()

failures = []
Expand Down Expand Up @@ -1165,12 +1173,23 @@ def main():
default=False,
help='Only emit output when there is an error.'
)
parser.add_argument(
'--logs-dir',
dest='logs_dir',
type=str,
help='The directory that verbose logs will be copied to in --quiet mode.',
)

args = parser.parse_args()

logger.addHandler(logger_handler)
if not args.quiet:
logger.setLevel(logging.INFO)
logger.addHandler(console_logger_handler)
logger.addHandler(file_logger_handler)
logger.setLevel(logging.INFO)
if args.quiet:
file_logger_handler.setLevel(logging.INFO)
console_logger_handler.setLevel(logging.WARNING)
else:
console_logger_handler.setLevel(logging.INFO)

if args.type == 'all':
types = all_types
Expand Down Expand Up @@ -1268,6 +1287,9 @@ def main():
if 'impeller-golden' in types:
run_impeller_golden_tests(build_dir)

if args.quiet and args.logs_dir:
shutil.copy(LOG_FILE, os.path.join(args.logs_dir, 'run_tests.log'))

return 0 if success else 1


Expand Down