conf: add settings for running and skipping specific tests

This commit is contained in:
Fabio Valentini 2023-10-06 19:29:27 +02:00
parent 05cfcd8aee
commit 3a06b7e2bc
No known key found for this signature in database
GPG key ID: 5AC5F572E5D410AF
4 changed files with 116 additions and 0 deletions

View file

@ -12,6 +12,7 @@ from rust2rpm import log
TOML_SCHEMA = { TOML_SCHEMA = {
"type": "object", "type": "object",
"properties": { "properties": {
# package properties
"package": { "package": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -28,11 +29,44 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
}, },
"additionalProperties": False, "additionalProperties": False,
}, },
# configure which tests are run
"tests": {
"type": "object",
"properties": {
"run": {
"type": "array",
"items": {
"type": "string",
"enum": ["none", "all", "lib", "bin", "doc", "bins", "tests"],
"uniqueItems": True,
},
},
"skip": {
"type": "array",
"items": {
"type": "string",
"uniqueItems": True,
},
},
"skip-exact": {
"type": "boolean",
},
"comments": {
"type": "array",
"items": {
"type": "string",
},
},
},
"additionalProperties": False,
"required": ["comments"],
},
# feature flags passed to cargo # feature flags passed to cargo
"features": { "features": {
"type": "object", "type": "object",
@ -46,6 +80,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
# hide feature subpackages # hide feature subpackages
@ -53,6 +88,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
}, },
@ -67,6 +103,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
# additional BuildRequires gated by the "check" bconf # additional BuildRequires gated by the "check" bconf
@ -74,6 +111,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
# additional Requires for the -devel subpackage # additional Requires for the -devel subpackage
@ -81,6 +119,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
# additional Requires for the binary subpackage # additional Requires for the binary subpackage
@ -88,6 +127,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
# additional Requires for feature subpackages # additional Requires for feature subpackages
@ -98,6 +138,7 @@ TOML_SCHEMA = {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"uniqueItems": True,
}, },
}, },
}, },
@ -309,6 +350,34 @@ class TomlConf:
else: else:
return None return None
@property
def _tests(self) -> Optional[dict[str, Any]]:
return self._data.get("tests")
@property
def tests_run(self) -> Optional[list[str]]:
if tests := self._tests:
return tests.get("run")
return None
@property
def tests_skip(self) -> Optional[list[str]]:
if tests := self._tests:
return tests.get("skip")
return None
@property
def tests_skip_exact(self) -> Optional[bool]:
if tests := self._tests:
return tests.get("skip-exact")
return None
@property
def tests_comments(self) -> Optional[list[str]]:
if tests := self._tests:
return tests.get("comments")
return None
@property @property
def _features(self) -> Optional[dict]: def _features(self) -> Optional[dict]:
return self._data.get("features") return self._data.get("features")

View file

@ -0,0 +1,3 @@
[tests]
run = ["lib", "tests"]
comments = ["files required by doctests are not included in published crates"]

View file

@ -0,0 +1,8 @@
[tests]
skip = [
"test_allowed_methods",
"test_badssl_modern",
"test_badssl_self_signed",
]
skip-exact = true
comments = ["skip tests which require internet access"]

View file

@ -104,6 +104,23 @@ def test_ini_conf_load(
}, },
), ),
), ),
(
"dotenvy-0.15.7.rust2rpm.toml",
set(),
TomlConf(
{
"tests": {
"run": [
"lib",
"tests",
],
"comments": [
"files required by doctests are not included in published crates",
],
},
},
),
),
( (
"glib-sys-0.17.2.rust2rpm.toml", "glib-sys-0.17.2.rust2rpm.toml",
{"v2_58", "v2_60", "v2_62", "v2_64", "v2_66", "v2_68", "v2_70", "v2_72", "v2_74", "v2_76"}, {"v2_58", "v2_60", "v2_62", "v2_64", "v2_66", "v2_68", "v2_70", "v2_72", "v2_74", "v2_76"},
@ -156,6 +173,25 @@ def test_ini_conf_load(
}, },
), ),
), ),
(
"reqwest-0.11.20.rust2rpm.toml",
set(),
TomlConf(
{
"tests": {
"skip": [
"test_allowed_methods",
"test_badssl_modern",
"test_badssl_self_signed",
],
"skip-exact": True,
"comments": [
"skip tests which require internet access",
],
},
},
),
),
], ],
) )
def test_toml_conf_load( def test_toml_conf_load(