1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
from pathlib import Path
from typing import Any, Dict, List, Optional, Union
import pytest
from packaging.version import Version
from scikit_build_core.settings.json_schema import FailedConversionError, convert_type
def test_convert_str():
assert convert_type(str, normalize_keys=False) == {"type": "string"}
def test_convert_str_or_bool():
assert convert_type(Union[str, bool], normalize_keys=False) == {
"oneOf": [{"type": "string"}, {"type": "boolean"}]
}
def test_convert_optional_str():
assert convert_type(Optional[str], normalize_keys=False) == {"type": "string"}
def test_convert_path():
assert convert_type(Path, normalize_keys=False) == {"type": "string"}
def test_convert_version():
assert convert_type(Version, normalize_keys=False) == {"type": "string"}
def test_convert_list():
assert convert_type(List[str], normalize_keys=False) == {
"type": "array",
"items": {"type": "string"},
}
assert convert_type(List[Union[str, bool]], normalize_keys=False) == {
"type": "array",
"items": {"oneOf": [{"type": "string"}, {"type": "boolean"}]},
}
def test_convert_dict():
assert convert_type(Dict[str, str], normalize_keys=False) == {
"type": "object",
"patternProperties": {".+": {"type": "string"}},
}
assert convert_type(Dict[str, Dict[str, str]], normalize_keys=False) == {
"type": "object",
"patternProperties": {
".+": {"type": "object", "patternProperties": {".+": {"type": "string"}}}
},
}
assert convert_type(Dict[str, Any], normalize_keys=False) == {
"type": "object",
}
def test_convert_invalid():
with pytest.raises(FailedConversionError):
convert_type(object, normalize_keys=False)
|