From b070cb2ae05f3b28a4e0f3ca7734403bed717b4c Mon Sep 17 00:00:00 2001 From: Elizaveta Martirosian Date: Sun, 5 Jul 2026 11:43:50 +0300 Subject: [PATCH] Fix Diffusion GT generation pipelines (#29926) Co-authored-by: Elizaveta Martirosian Co-authored-by: ronnie_zheng --- .../test/scripts/gen_diffusion_ci_outputs.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/python/sglang/multimodal_gen/test/scripts/gen_diffusion_ci_outputs.py b/python/sglang/multimodal_gen/test/scripts/gen_diffusion_ci_outputs.py index 4c8a61732..939cb20e0 100755 --- a/python/sglang/multimodal_gen/test/scripts/gen_diffusion_ci_outputs.py +++ b/python/sglang/multimodal_gen/test/scripts/gen_diffusion_ci_outputs.py @@ -13,6 +13,7 @@ Usage: import argparse import os +import subprocess import sys from pathlib import Path @@ -32,6 +33,46 @@ from sglang.multimodal_gen.test.runner.pytest_runner import collect_test_items logger = init_logger(__name__) +def collect_test_items(files: list[str], filter_expr: str | None = None) -> list[str]: + """Collect test node IDs from the given files using pytest --collect-only.""" + cmd = [sys.executable, "-m", "pytest", "--collect-only", "-q"] + if filter_expr: + cmd.extend(["-k", filter_expr]) + cmd.extend(files) + + filter_note = f" with filter: {filter_expr}" if filter_expr else "" + print(f"Collecting tests from {len(files)} file(s){filter_note}") + result = subprocess.run(cmd, capture_output=True, text=True) + + if result.returncode not in (0, 5): + error_msg = ( + f"pytest --collect-only failed with exit code {result.returncode}\n" + f"Command: {' '.join(cmd)}\n" + ) + if result.stderr: + error_msg += f"stderr:\n{result.stderr}\n" + if result.stdout: + error_msg += f"stdout:\n{result.stdout}\n" + logger.error(error_msg) + raise RuntimeError(error_msg) + + if result.returncode == 5: + print( + "No tests were collected (exit code 5). This may be expected with filters." + ) + + test_items = [] + for line in result.stdout.strip().split("\n"): + line = line.strip() + if line and "::" in line and not line.startswith(("=", "-", " ")): + test_id = line.split()[0] if " " in line else line + if "::" in test_id: + test_items.append(test_id) + + print(f"Collected {len(test_items)} test items") + return test_items + + def main(): """Main entry point.""" parser = argparse.ArgumentParser(description="Generate diffusion CI outputs")