Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Commit c6ccee8

Browse files
committed
Explicit Config.validate() method
1 parent a4339b0 commit c6ccee8

5 files changed

Lines changed: 33 additions & 2 deletions

File tree

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 1.32.1
2+
current_version = 1.33.0
33
commit = true
44
tag = false
55

configmanager/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '1.32.1'
1+
__version__ = '1.33.0'
22

33
from .managers import Config
44
from .items import Item

configmanager/items.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,10 @@ def get_path(self):
325325
return self.section.get_path() + (self.name,)
326326
else:
327327
return self.name,
328+
329+
def validate(self):
330+
"""
331+
Validate item.
332+
"""
333+
if self.required and not self.has_value:
334+
raise RequiredValueMissing(name=self.name, item=self)

configmanager/managers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,3 +226,7 @@ def load(self):
226226
adapter = getattr(self, _get_persistence_adapter_for(source))
227227
if adapter.store_exists(source):
228228
adapter.load(source)
229+
230+
def validate(self):
231+
for item in self.iter_items(recursive=True, key=None):
232+
item.validate()

tests/test_validation.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import pytest
2+
3+
from configmanager import Config, Item, RequiredValueMissing
4+
5+
6+
def test_validate_raises_required_value_missing():
7+
config = Config({
8+
'a': Item(required=True),
9+
'b': Item(),
10+
})
11+
12+
with pytest.raises(RequiredValueMissing):
13+
config.validate()
14+
15+
config.a.set('value')
16+
config.validate()
17+
18+
config.a.reset()
19+
with pytest.raises(RequiredValueMissing):
20+
config.validate()

0 commit comments

Comments
 (0)