Skip to content

Commit

Permalink
Merge pull request #73 from gregoil/fix_resources_adapter
Browse files Browse the repository at this point in the history
Enabled adapting new format resources request and various bug fixes
  • Loading branch information
UnDarkle committed Jul 11, 2018
2 parents 22a57d7 + 9b251ca commit 3b61bf1
Show file tree
Hide file tree
Showing 7 changed files with 240 additions and 240 deletions.
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -3,7 +3,7 @@

from setuptools import setup, find_packages

__version__ = "3.0.3"
__version__ = "3.0.4"

result_handlers = [
"db = rotest.core.result.handlers.db_handler:DBHandler",
Expand Down
3 changes: 0 additions & 3 deletions src/rotest/cli/discover.py
Expand Up @@ -79,9 +79,6 @@ def discover_tests_under_paths(paths):

module = py.path.local(path).pyimport()
tests_discovered = loader.loadTestsFromModule(module)
tests_discovered = [test
for test in tests_discovered
if test.__module__ == module.__name__]
tests_discovered = [test
for test in tests_discovered
if is_test_class(test)]
Expand Down
36 changes: 23 additions & 13 deletions src/rotest/core/abstract_test.py
Expand Up @@ -86,6 +86,23 @@ def __init__(self, indexer=count(), methodName='runTest', save_state=True,
self._is_client_local = False
self.resource_manager = resource_manager

@classmethod
def get_resource_requests_fields(cls):
"""Yield tuples of all the resource request fields of this test.
Yields:
tuple. (requests name, request field) tuples of the test class.
"""
checked_class = cls
while checked_class is not AbstractTest:
for field_name in checked_class.__dict__:
if not field_name.startswith("_"):
field = getattr(checked_class, field_name)
if isinstance(field, BaseResource):
yield (field_name, field)

checked_class = checked_class.__bases__[0]

@classmethod
def get_resource_requests(cls):
"""Return a list of all the resource requests this test makes.
Expand All @@ -98,20 +115,13 @@ def get_resource_requests(cls):
list. resource requests of the test class.
"""
all_requests = list(cls.resources)
checked_class = cls
while checked_class is not AbstractTest:
for field_name in checked_class.__dict__:
if not field_name.startswith("_"):
field = getattr(checked_class, field_name)
if isinstance(field, BaseResource):
new_request = request(field_name,
field.__class__,
**field.kwargs)
for (field_name, field) in cls.get_resource_requests_fields():
new_request = request(field_name,
field.__class__,
**field.kwargs)

if new_request not in all_requests:
all_requests.append(new_request)

checked_class = checked_class.__bases__[0]
if new_request not in all_requests:
all_requests.append(new_request)

return all_requests

Expand Down
3 changes: 2 additions & 1 deletion src/rotest/core/block.py
Expand Up @@ -115,7 +115,8 @@ def get_inputs(cls):
while checked_class is not TestBlock:
all_inputs.update({key: value for (key, value) in
checked_class.__dict__.iteritems()
if isinstance(value, BlockInput)})
if (isinstance(value, BlockInput) and
key not in all_inputs)})

checked_class = checked_class.__bases__[0]

Expand Down
10 changes: 6 additions & 4 deletions src/rotest/core/runner.py
Expand Up @@ -191,10 +191,7 @@ def _update_test_resources(test_element, identifiers_dict):
Args:
test_element (type): target test class inheriting from
:class:`rotest.core.case.TestCase or
:class:`rotest.core.Suite.TestSuite or
:class:`rotest.core.flow.TestFlow` or
:class:`rotest.core.block.TestBlock`.
:class:`rotest.core.abstract_test.AbstractTest`.
identifiers_dict (dict): states the resources constraints in the
form of <request name>: <resource constraints>.
"""
Expand All @@ -206,6 +203,11 @@ def _update_test_resources(test_element, identifiers_dict):
identifiers_dict[resource_request.name])
requests_found.add(resource_request.name)

for (field_name, field) in test_element.get_resource_requests_fields():
if field_name in identifiers_dict:
field.kwargs.update(identifiers_dict[field_name])
requests_found.add(field_name)

return requests_found


Expand Down

0 comments on commit 3b61bf1

Please sign in to comment.