write-sglang-test

Installation
SKILL.md

Writing SGLang CI / UT Tests

This skill covers how to write and register tests. For CI pipeline internals (stage ordering, fast-fail, gating, partitioning, debugging CI failures), see the CI workflow guide.

Core Rules

  1. Always use CustomTestCase — never raw unittest.TestCase. It ensures tearDownClass runs even when setUpClass fails, preventing resource leaks in CI.
  2. tearDownClass must be defensive — use hasattr/null checks before accessing resources (e.g. cls.process) that setUpClass may not have finished allocating.
  3. Place tests in test/registered/<category>/ — including JIT kernel tests and benchmarks, which live in test/registered/jit/ and test/registered/jit/benchmark/ (nested subfolders are allowed)
  4. Reuse server fixtures — inherit from DefaultServerBase or write setUpClass/tearDownClass with popen_launch_server
  5. Prefer mock over real server — when testing logic that doesn't need a server / engine launch (middleware, request routing, config validation, argument parsing), use unittest.mock.patch / MagicMock and place tests in test/registered/unit/. Only launch a real server when the test genuinely needs inference results or server lifecycle behavior.

JIT kernel notes:

  • If the task is adding or updating code under python/sglang/kernels/jit/, prefer the add-jit-kernel skill first.
  • JIT kernel correctness tests use test/registered/jit/**/test_*.py.
  • JIT kernel benchmarks use test/registered/jit/benchmark/**/bench_*.py.
  • Those files are executed by test/run_suite.py through dedicated kernel suites (base-b-kernel-*); a register_*_ci(...) call placed under python/sglang/ is rejected by the check-no-registered-tests-in-package pre-commit hook.

Installs
11
GitHub Stars
35.7K
First Seen
May 16, 2026
write-sglang-test — sgl-project/sglang