Skip to content

Commit b5cdfbe

Browse files
committed
some refactoring
1 parent 32978d3 commit b5cdfbe

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

src/bmi_tester/main.py

+24-11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#! /usr/bin/env python
1+
from __future__ import annotations
2+
23
import argparse
34
import os
45
import pathlib
@@ -96,6 +97,10 @@ def main(argv: tuple[str, ...] | None = None) -> int:
9697
args = parser.parse_args(argv)
9798

9899
if args.root_dir:
100+
if not args.config_file:
101+
err("using --root-dir but no config file specified (use --config-file)")
102+
return -1
103+
99104
stage = Stage(
100105
args.root_dir,
101106
config_file=args.config_file,
@@ -123,31 +128,34 @@ def main(argv: tuple[str, ...] | None = None) -> int:
123128

124129
class Stage:
125130
def __init__(
126-
self, stage_dir, config_file, manifest: str | Iterator[str] | None = None
131+
self,
132+
stage_dir: str,
133+
config_file: str,
134+
manifest: str | Iterator[str] | None = None,
127135
):
128136
self._stage_dir = stage_dir
129137
self._config_file = config_file
130138
if manifest is None:
131139
manifest = stage_dir
132140
if isinstance(manifest, str):
133-
self._manifest = os.listdir(manifest)
141+
self._manifest = tuple(os.listdir(manifest))
134142
else:
135-
self._manifest = list(manifest)
143+
self._manifest = tuple(manifest)
136144

137145
@property
138-
def dir(self):
146+
def dir(self) -> str:
139147
return self._stage_dir
140148

141149
@property
142-
def manifest(self):
150+
def manifest(self) -> tuple[str, ...]:
143151
return self._manifest
144152

145153
@property
146-
def config_file(self):
154+
def config_file(self) -> str:
147155
return self._config_file
148156

149157
@classmethod
150-
def from_entry_point(cls, entry_point):
158+
def from_entry_point(cls, entry_point: str) -> Stage:
151159
module_name, class_name = parse_entry_point(entry_point)
152160
try:
153161
Bmi = load_component(module_name, class_name)
@@ -156,7 +164,7 @@ def from_entry_point(cls, entry_point):
156164
f"unable to import BMI implementation, {class_name},"
157165
f" from {module_name}"
158166
)
159-
return 1
167+
raise
160168

161169
stage_dir = tempfile.mkdtemp()
162170
manifest = stage(Bmi, str(stage_dir))
@@ -168,7 +176,7 @@ def from_entry_point(cls, entry_point):
168176
def run_the_tests(
169177
entry_point: str,
170178
config_file: str,
171-
manifest: str,
179+
manifest: tuple[str, ...],
172180
bmi_version: str = "2.0",
173181
pytest_help: bool = False,
174182
) -> int:
@@ -229,7 +237,8 @@ def __call__(
229237

230238
path = values
231239

232-
if not os.path.isdir(path):
240+
# if not os.path.isdir(path):
241+
if not os.path.exists(path):
233242
parser.error(f"{path}: path does not exist")
234243
else:
235244
setattr(namespace, self.dest, path)
@@ -241,3 +250,7 @@ def _tree(files):
241250
for p, fname in zip(prefix, files):
242251
tree.append(f"{p} {fname}")
243252
return os.linesep.join(tree)
253+
254+
255+
if __name__ == "__main__":
256+
SystemExit(main())

0 commit comments

Comments
 (0)