mirror of
https://github.com/gryf/coach.git
synced 2026-01-08 06:44:16 +01:00
tests: added new setup configuration + test args (#211)
- added utils for future tests and conftest - added test args
This commit is contained in:
85
rl_coach/tests/utils/presets_utils.py
Normal file
85
rl_coach/tests/utils/presets_utils.py
Normal file
@@ -0,0 +1,85 @@
|
||||
#
|
||||
# Copyright (c) 2019 Intel Corporation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
"""Manage all preset"""
|
||||
|
||||
import os
|
||||
from importlib import import_module
|
||||
from rl_coach.tests.utils.definitions import Definitions as Def
|
||||
|
||||
|
||||
def import_preset(preset_name):
|
||||
"""
|
||||
Import preset name module from presets directory
|
||||
:param preset_name: preset name
|
||||
:return: imported module
|
||||
"""
|
||||
return import_module('{}.presets.{}'.format(Def.GROUP_NAME, preset_name))
|
||||
|
||||
|
||||
def validation_params(preset_name):
|
||||
"""
|
||||
Validate parameters based on preset name
|
||||
:param preset_name: preset name
|
||||
:return: |bool| true if preset has params
|
||||
"""
|
||||
return import_preset(preset_name).graph_manager.preset_validation_params
|
||||
|
||||
|
||||
def all_presets():
|
||||
"""
|
||||
Get all preset from preset directory
|
||||
:return: |Array| preset list
|
||||
"""
|
||||
return [
|
||||
f[:-3] for f in os.listdir(os.path.join(Def.GROUP_NAME, 'presets'))
|
||||
if f[-3:] == '.py' and not f == '__init__.py'
|
||||
]
|
||||
|
||||
|
||||
def importable(preset_name):
|
||||
"""
|
||||
Try to import preset name
|
||||
:param preset_name: |name| preset name
|
||||
:return: |bool| true if possible to import preset
|
||||
"""
|
||||
try:
|
||||
import_preset(preset_name)
|
||||
return True
|
||||
except BaseException:
|
||||
return False
|
||||
|
||||
|
||||
def has_test_parameters(preset_name):
|
||||
"""
|
||||
Check if preset has parameters
|
||||
:param preset_name: |string| preset name
|
||||
:return: |bool| true: if preset have parameters
|
||||
"""
|
||||
return bool(validation_params(preset_name).test)
|
||||
|
||||
|
||||
def collect_presets():
|
||||
"""
|
||||
Collect all presets in presets directory
|
||||
:yield: preset name
|
||||
"""
|
||||
for preset_name in all_presets():
|
||||
# if it isn't importable, still include it so we can fail the test
|
||||
if not importable(preset_name):
|
||||
yield preset_name
|
||||
# otherwise, make sure it has test parameters before including it
|
||||
elif has_test_parameters(preset_name):
|
||||
yield preset_name
|
||||
Reference in New Issue
Block a user