mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-10 10:06:03 +08:00
64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
from argparse import ArgumentTypeError
|
|
|
|
import pytest
|
|
|
|
from vllm.engine.arg_utils import EngineArgs, nullable_kvs
|
|
from vllm.utils import FlexibleArgumentParser
|
|
|
|
|
|
@pytest.mark.parametrize(("arg", "expected"), [
|
|
(None, None),
|
|
("image=16", {
|
|
"image": 16
|
|
}),
|
|
("image=16,video=2", {
|
|
"image": 16,
|
|
"video": 2
|
|
}),
|
|
("Image=16, Video=2", {
|
|
"image": 16,
|
|
"video": 2
|
|
}),
|
|
])
|
|
def test_limit_mm_per_prompt_parser(arg, expected):
|
|
parser = EngineArgs.add_cli_args(FlexibleArgumentParser())
|
|
if arg is None:
|
|
args = parser.parse_args([])
|
|
else:
|
|
args = parser.parse_args(["--limit-mm-per-prompt", arg])
|
|
|
|
assert args.limit_mm_per_prompt == expected
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("arg"),
|
|
[
|
|
"image", # Missing =
|
|
"image=4,image=5", # Conflicting values
|
|
"image=video=4" # Too many = in tokenized arg
|
|
])
|
|
def test_bad_nullable_kvs(arg):
|
|
with pytest.raises(ArgumentTypeError):
|
|
nullable_kvs(arg)
|
|
|
|
|
|
@pytest.mark.parametrize(("arg", "expected"), [
|
|
(None, None),
|
|
("{}", {}),
|
|
('{"num_crops": 4}', {
|
|
"num_crops": 4
|
|
}),
|
|
('{"foo": {"bar": "baz"}}', {
|
|
"foo": {
|
|
"bar": "baz"
|
|
}
|
|
}),
|
|
])
|
|
def test_mm_processor_kwargs_prompt_parser(arg, expected):
|
|
parser = EngineArgs.add_cli_args(FlexibleArgumentParser())
|
|
if arg is None:
|
|
args = parser.parse_args([])
|
|
else:
|
|
args = parser.parse_args(["--mm-processor-kwargs", arg])
|
|
assert args.mm_processor_kwargs == expected
|