[CI] Enable failfast (-f) by default in run_suite.py (#21330)
This commit is contained in:
@@ -160,10 +160,12 @@ def run_unittest_files(
|
|||||||
)
|
)
|
||||||
file_tic = time.perf_counter()
|
file_tic = time.perf_counter()
|
||||||
|
|
||||||
|
cmd = ["python3", full_path, "-f"]
|
||||||
|
|
||||||
if capture_output:
|
if capture_output:
|
||||||
# Capture output for retry decision
|
# Capture output for retry decision
|
||||||
process = subprocess.Popen(
|
process = subprocess.Popen(
|
||||||
["python3", full_path],
|
cmd,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.STDOUT,
|
stderr=subprocess.STDOUT,
|
||||||
text=True,
|
text=True,
|
||||||
@@ -175,9 +177,7 @@ def run_unittest_files(
|
|||||||
output_lines.append(line)
|
output_lines.append(line)
|
||||||
process.wait()
|
process.wait()
|
||||||
else:
|
else:
|
||||||
process = subprocess.Popen(
|
process = subprocess.Popen(cmd, stdout=None, stderr=None)
|
||||||
["python3", full_path], stdout=None, stderr=None
|
|
||||||
)
|
|
||||||
process.wait()
|
process.wait()
|
||||||
|
|
||||||
elapsed = time.perf_counter() - file_tic
|
elapsed = time.perf_counter() - file_tic
|
||||||
|
|||||||
+3
-1
@@ -88,7 +88,9 @@ Here is an illustration
|
|||||||
|
|
||||||
Because the system uses a custom registry and the `run_suite.py` launcher, it supports both Python's built-in [unittest](https://docs.python.org/3/library/unittest.html) and the popular [pytest](https://docs.pytest.org/en/stable/) framework.
|
Because the system uses a custom registry and the `run_suite.py` launcher, it supports both Python's built-in [unittest](https://docs.python.org/3/library/unittest.html) and the popular [pytest](https://docs.pytest.org/en/stable/) framework.
|
||||||
The basic unit is a file, and you can use either framework in your file.
|
The basic unit is a file, and you can use either framework in your file.
|
||||||
The launcher runs `python filename.py` to execute tests, so make sure your file includes the following lines. Otherwise, CI will not run it.
|
The launcher runs `python filename.py -f` to execute tests with **failfast enabled by default** — the first test method failure stops the file immediately. This avoids wasting CI time on remaining tests after a failure.
|
||||||
|
|
||||||
|
Make sure your file ends with **exactly** one of the following blocks. Do not add custom `argparse` or modify `sys.argv` before calling `unittest.main()` / `pytest.main()` — the CI runner appends `-f` for failfast, and custom argument parsing will break it.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# for unittest
|
# for unittest
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
import argparse
|
|
||||||
import random
|
import random
|
||||||
import sys
|
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
@@ -8,7 +6,6 @@ from types import SimpleNamespace
|
|||||||
from sglang.srt.utils import is_hip
|
from sglang.srt.utils import is_hip
|
||||||
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
|
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
|
||||||
from sglang.test.kits.mmmu_vlm_kit import (
|
from sglang.test.kits.mmmu_vlm_kit import (
|
||||||
DEFAULT_MEM_FRACTION_STATIC,
|
|
||||||
MMMUMultiModelTestBase,
|
MMMUMultiModelTestBase,
|
||||||
)
|
)
|
||||||
from sglang.test.test_utils import is_in_ci
|
from sglang.test.test_utils import is_in_ci
|
||||||
@@ -48,20 +45,4 @@ class TestVLMModels(MMMUMultiModelTestBase):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Define and parse arguments here, before unittest.main
|
unittest.main()
|
||||||
parser = argparse.ArgumentParser(description="Test VLM models")
|
|
||||||
parser.add_argument(
|
|
||||||
"--mem-fraction-static",
|
|
||||||
type=float,
|
|
||||||
help="Static memory fraction for the model",
|
|
||||||
default=DEFAULT_MEM_FRACTION_STATIC,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Parse args intended for unittest
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
# Store the parsed args object on the class
|
|
||||||
TestVLMModels.parsed_args = args
|
|
||||||
|
|
||||||
# Pass args to unittest
|
|
||||||
unittest.main(argv=[sys.argv[0]])
|
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
import argparse
|
|
||||||
import glob
|
import glob
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import sys
|
|
||||||
import unittest
|
import unittest
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
|
|
||||||
@@ -255,20 +253,4 @@ class TestVLMEncoderDP(CustomTestCase):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Define and parse arguments here, before unittest.main
|
unittest.main()
|
||||||
parser = argparse.ArgumentParser(description="Test VLM models")
|
|
||||||
parser.add_argument(
|
|
||||||
"--mem-fraction-static",
|
|
||||||
type=float,
|
|
||||||
help="Static memory fraction for the model",
|
|
||||||
default=DEFAULT_MEM_FRACTION_STATIC,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Parse args intended for unittest
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
# Store the parsed args object on the class
|
|
||||||
TestVLMEncoderDP.parsed_args = args
|
|
||||||
|
|
||||||
# Pass args to unittest
|
|
||||||
unittest.main(argv=[sys.argv[0]])
|
|
||||||
|
|||||||
Reference in New Issue
Block a user