100% coverage in Utils

This commit is contained in:
2022-04-23 01:16:44 +02:00
parent 63f7d1b3aa
commit 5b6cb17edc
5 changed files with 69 additions and 29 deletions

View File

@@ -11,4 +11,5 @@ exclude_lines =
ignore_errors = True ignore_errors = True
omit = omit =
benchmark/__init__.py benchmark/__init__.py
benchmark/_version.py benchmark/_version.py
benchmark/tests/*

2
.gitignore vendored
View File

@@ -102,7 +102,7 @@ celerybeat.pid
*.sage.py *.sage.py
# Environments # Environments
.env /.env
.venv .venv
env/ env/
venv/ venv/

View File

@@ -102,14 +102,13 @@ class Files:
return None return None
def get_all_results(self, hidden) -> list[str]: def get_all_results(self, hidden) -> list[str]:
first_path = "." result_path = os.path.join(
first_try = os.path.join( ".", Folders.hidden_results if hidden else Folders.results
first_path, Folders.hidden_results if hidden else Folders.results
) )
if os.path.isdir(first_try): if os.path.isdir(result_path):
files_list = os.listdir(first_try) files_list = os.listdir(result_path)
else: else:
raise ValueError(f"{first_try} does not exist") raise ValueError(f"{result_path} does not exist")
result = [] result = []
prefix, suffix = self.results_suffixes() prefix, suffix = self.results_suffixes()
for result_file in files_list: for result_file in files_list:
@@ -143,17 +142,12 @@ class EnvDefault(argparse.Action):
# Thanks to https://stackoverflow.com/users/445507/russell-heilling # Thanks to https://stackoverflow.com/users/445507/russell-heilling
def __init__(self, envvar, required=True, default=None, **kwargs): def __init__(self, envvar, required=True, default=None, **kwargs):
self._args = EnvData.load() self._args = EnvData.load()
if not default and envvar in self._args: default = self._args[envvar]
default = self._args[envvar] required = False
if required and default:
required = False
super(EnvDefault, self).__init__( super(EnvDefault, self).__init__(
default=default, required=required, **kwargs default=default, required=required, **kwargs
) )
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, values)
class TextColor: class TextColor:
BLUE = "\033[94m" BLUE = "\033[94m"

7
benchmark/tests/.env Normal file
View File

@@ -0,0 +1,7 @@
score=accuracy
platform=iMac27
n_folds=5
model=ODTE
stratified=0
# Source of data Tanveer/Surcov
source_data=Tanveer

View File

@@ -132,6 +132,29 @@ class UtilTest(unittest.TestCase):
["results_accuracy_STree_iMac27_2021-11-01_23:55:16_0.json"], ["results_accuracy_STree_iMac27_2021-11-01_23:55:16_0.json"],
) )
def test_Files_get_results_Error(self):
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# check with results
os.rename(Folders.results, f"{Folders.results}.test")
try:
Files().get_all_results(hidden=False)
except ValueError:
pass
else:
self.fail("Files.get_all_results() should raise ValueError")
finally:
os.rename(f"{Folders.results}.test", Folders.results)
# check with hidden_results
os.rename(Folders.hidden_results, f"{Folders.hidden_results}.test")
try:
Files().get_all_results(hidden=True)
except ValueError:
pass
else:
self.fail("Files.get_all_results() should raise ValueError")
finally:
os.rename(f"{Folders.hidden_results}.test", Folders.hidden_results)
def test_Symbols(self): def test_Symbols(self):
self.assertEqual(Symbols.check_mark, "\N{heavy check mark}") self.assertEqual(Symbols.check_mark, "\N{heavy check mark}")
@@ -156,6 +179,13 @@ class UtilTest(unittest.TestCase):
self.assertDictEqual(computed, expected) self.assertDictEqual(computed, expected)
def test_EnvDefault(self): def test_EnvDefault(self):
expected = {
"score": "accuracy",
"platform": "iMac27",
"n_folds": 5,
"model": "ODTE",
"stratified": "0",
}
ap = argparse.ArgumentParser() ap = argparse.ArgumentParser()
ap.add_argument( ap.add_argument(
"-s", "-s",
@@ -178,6 +208,8 @@ class UtilTest(unittest.TestCase):
ap.add_argument( ap.add_argument(
"-m", "-m",
"--model", "--model",
action=EnvDefault,
envvar="model",
type=str, type=str,
required=True, required=True,
help="model name", help="model name",
@@ -200,20 +232,26 @@ class UtilTest(unittest.TestCase):
required=True, required=True,
help="Stratified", help="Stratified",
) )
# ap.add_argument( ap.add_argument(
# "--title", "--title",
# type=str, type=str,
# required=True, required=True,
# ) )
# args = ap.parse_args([ ap.add_argument(
# "--title", "--test",
# "test", type=str,
# ]) required=False,
# args = ap.parse_known_args(namespace=unittest) default=None,
# computed = args.__dict__ )
# for key, value in expected.items(): args = ap.parse_args(
# self.assertEqual(computed[key], value) [
# print(computed) "--title",
"test",
],
)
computed = args.__dict__
for key, value in expected.items():
self.assertEqual(computed[key], value)
def test_TextColor(self): def test_TextColor(self):
self.assertEqual(TextColor.BLUE, "\033[94m") self.assertEqual(TextColor.BLUE, "\033[94m")