1.4 KiB
1.4 KiB
Repository validation
This is where the validation rules that run against the various repository categories live.
Structure
- All validation rules are in the directory for their category.
- Validation rules that aplies to all categories are in the
common
directory. - There is one file pr. rule.
- All rule needs tests to verify every possible outcome for the rule.
- It's better with multiple files than a big rule.
- All rules uses
ValidationBase
orActionValidationBase
as the base class. - The
ActionValidationBase
are for checks that will breaks compatibility with with existing repositories (default), so these are only run in github actions. - The class name should describe what the check does.
- Only use
validate
orasync_validate
methods to define validation rules. - If a rule should fail, raise
ValidationException
with the failure message.
Example
from custom_components.hacs.validate.base import (
ActionValidationBase,
ValidationBase,
ValidationException,
)
class AwesomeRepository(ValidationBase):
def validate(self):
if self.repository != "awesome":
raise ValidationException("The repository is not awesome")
class SuperAwesomeRepository(ActionValidationBase, category="integration"):
async def async_validate(self):
if self.repository != "super-awesome":
raise ValidationException("The repository is not super-awesome")