Fix Test* mixin classes being collected as standalone pytest tests (#20417)

This commit is contained in:
Pai Liu
2026-03-13 12:18:45 +11:00
committed by GitHub
parent 9865f11421
commit 65dd08153d
9 changed files with 45 additions and 41 deletions

View File

@@ -3,7 +3,8 @@ import json
import requests
class TestEBNFConstrainedMixin:
class EBNFConstrainedMixin:
ebnf_grammar = 'root ::= "test"' # Default grammar
def _run_decode_ebnf(

View File

@@ -5,7 +5,8 @@ import openai
import requests
class TestJSONConstrainedMixin:
class JSONConstrainedMixin:
json_schema = json.dumps(
{
"type": "object",

View File

@@ -3,7 +3,8 @@ import json
import requests
class TestRegexConstrainedMixin:
class RegexConstrainedMixin:
def _run_decode_regex(
self,
regex,

View File

@@ -2056,6 +2056,7 @@ def _distributed_worker(rank, world_size, backend, port, func, result_queue, kwa
class CustomTestCase(unittest.TestCase):
def _callTestMethod(self, method):
max_retry = envs.SGLANG_TEST_MAX_RETRY.get()
if max_retry is None:

View File

@@ -2,9 +2,9 @@ import unittest
from sglang.srt.utils import kill_process_tree
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.kits.ebnf_constrained_kit import TestEBNFConstrainedMixin
from sglang.test.kits.json_constrained_kit import TestJSONConstrainedMixin
from sglang.test.kits.regex_constrained_kit import TestRegexConstrainedMixin
from sglang.test.kits.ebnf_constrained_kit import EBNFConstrainedMixin
from sglang.test.kits.json_constrained_kit import JSONConstrainedMixin
from sglang.test.kits.regex_constrained_kit import RegexConstrainedMixin
from sglang.test.test_utils import (
DEFAULT_SMALL_MODEL_NAME_FOR_TEST,
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
@@ -49,22 +49,22 @@ class ServerWithGrammar(CustomTestCase):
class TestXGrammarBackend(
ServerWithGrammar,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
backend = "xgrammar"
class TestOutlinesBackend(ServerWithGrammar, TestJSONConstrainedMixin):
class TestOutlinesBackend(ServerWithGrammar, JSONConstrainedMixin):
backend = "outlines"
class TestLLGuidanceBackend(
ServerWithGrammar,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
backend = "llguidance"

View File

@@ -8,10 +8,10 @@ from sglang.srt.environ import envs
from sglang.srt.utils import kill_process_tree
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.few_shot_gsm8k import run_eval as run_eval_few_shot_gsm8k
from sglang.test.kits.ebnf_constrained_kit import TestEBNFConstrainedMixin
from sglang.test.kits.json_constrained_kit import TestJSONConstrainedMixin
from sglang.test.kits.ebnf_constrained_kit import EBNFConstrainedMixin
from sglang.test.kits.json_constrained_kit import JSONConstrainedMixin
from sglang.test.kits.radix_cache_server_kit import run_radix_attention_test
from sglang.test.kits.regex_constrained_kit import TestRegexConstrainedMixin
from sglang.test.kits.regex_constrained_kit import RegexConstrainedMixin
from sglang.test.run_eval import run_eval
from sglang.test.test_utils import (
DEFAULT_IMAGE_URL,
@@ -30,9 +30,9 @@ register_cuda_ci(est_time=350, suite="stage-b-test-large-2-gpu")
class TestDPAttentionDP2TP2(
CustomTestCase,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
@classmethod
def setUpClass(cls):
@@ -75,9 +75,9 @@ class TestDPAttentionDP2TP2(
class TestDPRetract(
CustomTestCase,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
@classmethod
def setUpClass(cls):
@@ -115,9 +115,9 @@ class TestDPRetract(
class TestDPAttentionDP2TP2DeepseekV3MTP(
CustomTestCase,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
@classmethod
def setUpClass(cls):

View File

@@ -7,9 +7,9 @@ from sglang.lang.chat_template import get_chat_template_by_model_path
from sglang.srt.utils import kill_process_tree
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.few_shot_gsm8k import run_eval as run_eval_few_shot_gsm8k
from sglang.test.kits.ebnf_constrained_kit import TestEBNFConstrainedMixin
from sglang.test.kits.json_constrained_kit import TestJSONConstrainedMixin
from sglang.test.kits.regex_constrained_kit import TestRegexConstrainedMixin
from sglang.test.kits.ebnf_constrained_kit import EBNFConstrainedMixin
from sglang.test.kits.json_constrained_kit import JSONConstrainedMixin
from sglang.test.kits.regex_constrained_kit import RegexConstrainedMixin
from sglang.test.run_eval import run_eval
from sglang.test.test_utils import (
DEFAULT_IMAGE_URL,
@@ -28,9 +28,9 @@ register_cuda_ci(est_time=350, suite="stage-c-test-4-gpu-h100")
class TestDPAttentionDP2TP4(
CustomTestCase,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
@classmethod
def setUpClass(cls):
@@ -68,9 +68,9 @@ class TestDPAttentionDP2TP4(
class TestDPAttentionDP2TP2DeepseekV3MTP(
CustomTestCase,
TestJSONConstrainedMixin,
TestEBNFConstrainedMixin,
TestRegexConstrainedMixin,
JSONConstrainedMixin,
EBNFConstrainedMixin,
RegexConstrainedMixin,
):
@classmethod
def setUpClass(cls):

View File

@@ -18,7 +18,7 @@ register_cuda_ci(est_time=109, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=180, suite="stage-b-test-small-1-gpu-amd")
class TestJSONModeMixin:
class JSONModeMixin:
"""Mixin class containing JSON mode test methods"""
def test_json_mode_response(self):
@@ -123,15 +123,15 @@ class ServerWithGrammarBackend(CustomTestCase):
kill_process_tree(cls.process.pid)
class TestJSONModeXGrammar(ServerWithGrammarBackend, TestJSONModeMixin):
class TestJSONModeXGrammar(ServerWithGrammarBackend, JSONModeMixin):
backend = "xgrammar"
class TestJSONModeOutlines(ServerWithGrammarBackend, TestJSONModeMixin):
class TestJSONModeOutlines(ServerWithGrammarBackend, JSONModeMixin):
backend = "outlines"
class TestJSONModeLLGuidance(ServerWithGrammarBackend, TestJSONModeMixin):
class TestJSONModeLLGuidance(ServerWithGrammarBackend, JSONModeMixin):
backend = "llguidance"

View File

@@ -3,8 +3,8 @@ import unittest
from sglang.srt.environ import envs
from sglang.srt.utils import kill_process_tree
from sglang.test.ci.ci_register import register_cuda_ci
from sglang.test.kits.json_constrained_kit import TestJSONConstrainedMixin
from sglang.test.kits.regex_constrained_kit import TestRegexConstrainedMixin
from sglang.test.kits.json_constrained_kit import JSONConstrainedMixin
from sglang.test.kits.regex_constrained_kit import RegexConstrainedMixin
from sglang.test.test_utils import (
DEFAULT_DRAFT_MODEL_EAGLE,
DEFAULT_TARGET_MODEL_EAGLE,
@@ -18,7 +18,7 @@ register_cuda_ci(est_time=100, suite="stage-b-test-large-1-gpu")
class TestEagleConstrainedDecoding(
CustomTestCase, TestRegexConstrainedMixin, TestJSONConstrainedMixin
CustomTestCase, RegexConstrainedMixin, JSONConstrainedMixin
):
max_running_requests = 64
attention_backend = "triton"