82 lines
3.0 KiB
Python
82 lines
3.0 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
"""Unit tests for version compatibility warnings."""
|
|
|
|
import warnings
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from vllm_omni.version import warn_if_misaligned_vllm_version
|
|
|
|
|
|
@mock.patch("vllm_omni.version.__version_tuple__", (0, 19, 0))
|
|
@mock.patch("vllm_omni.version.__version__", "0.19.0")
|
|
@mock.patch("vllm.__version_tuple__", (0, 18, 0))
|
|
@mock.patch("vllm.__version__", "0.18.0")
|
|
def test_version_mismatch_warning():
|
|
"""Ensure that we warn when vLLM and vLLM-Omni major/minor versions differ."""
|
|
with pytest.warns(RuntimeWarning, match="mismatched major/minor versions"):
|
|
warn_if_misaligned_vllm_version()
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"vllm_ver,vllm_tuple,omni_ver,omni_tuple",
|
|
[
|
|
("0.19.0", (0, 19, 0), "0.19.5", (0, 19, 5)), # Patch differs
|
|
("0.18.0", (0, 18, 0), "dev", (0, 0, "dev")), # Omni dev
|
|
("dev", (0, 0, "dev"), "0.19.0", (0, 19, 0)), # vLLM dev
|
|
# Ensure local identifies don't matter for the warning
|
|
("0.19.0+foo", (0, 19, 0, "foo"), "0.19.5", (0, 19, 0)),
|
|
("0.19.0", (0, 19, 0), "0.19.5+bar", (0, 19, 0, "bar")),
|
|
("0.19.0+foo", (0, 19, 0, "foo"), "0.19.5+bar", (0, 19, 0, "bar")),
|
|
],
|
|
)
|
|
def test_no_warning_cases(vllm_ver, vllm_tuple, omni_ver, omni_tuple):
|
|
"""Ensure we don't warn when minor versions match or either is a dev build."""
|
|
with (
|
|
mock.patch.multiple("vllm", __version__=vllm_ver, __version_tuple__=vllm_tuple),
|
|
mock.patch.multiple("vllm_omni.version", __version__=omni_ver, __version_tuple__=omni_tuple),
|
|
):
|
|
with warnings.catch_warnings():
|
|
warnings.simplefilter("error")
|
|
warn_if_misaligned_vllm_version()
|
|
|
|
|
|
@mock.patch("vllm_omni.version.__version_tuple__", (0, 19, 0))
|
|
@mock.patch("vllm_omni.version.__version__", "0.19.0rc2.dev21")
|
|
@mock.patch("vllm.__version_tuple__", (0, 18, 0))
|
|
@mock.patch("vllm.__version__", "0.18.0")
|
|
def test_warning_contains_version_strings():
|
|
"""Ensure that the warning contains the full version strings."""
|
|
with pytest.warns(RuntimeWarning) as record:
|
|
warn_if_misaligned_vllm_version()
|
|
|
|
assert len(record) == 1
|
|
msg = str(record[0].message)
|
|
assert "0.19.0rc2.dev21" in msg
|
|
assert "0.18.0" in msg
|
|
|
|
|
|
def test_omni_plugin_loader_invokes_vllm_general_plugins_first(monkeypatch):
|
|
import vllm.plugins as vllm_plugins
|
|
|
|
import vllm_omni.plugins as omni_plugins
|
|
|
|
calls = []
|
|
monkeypatch.setattr(omni_plugins, "omni_plugins_loaded", False)
|
|
monkeypatch.setattr(vllm_plugins, "load_general_plugins", lambda: calls.append("vllm"))
|
|
monkeypatch.setattr(
|
|
omni_plugins,
|
|
"load_omni_plugins_by_group",
|
|
lambda group: {"omni": lambda: calls.append(group)},
|
|
)
|
|
|
|
omni_plugins.load_omni_general_plugins()
|
|
|
|
assert calls == ["vllm", omni_plugins.OMNI_DEFAULT_PLUGINS_GROUP]
|
|
|
|
omni_plugins.load_omni_general_plugins()
|
|
|
|
assert calls == ["vllm", omni_plugins.OMNI_DEFAULT_PLUGINS_GROUP]
|