fix(unittest): correct arg order for test vs suite

See #45
This commit is contained in:
Rónán Carrigan
2023-02-18 09:34:37 +00:00
parent 75fdeb460d
commit 6c06041cfb

View File

@@ -26,7 +26,7 @@ class UnittestNeotestAdapter(NeotestAdapter):
def case_id(self, case: "TestCase | TestSuite") -> str: def case_id(self, case: "TestCase | TestSuite") -> str:
return "::".join(self.case_id_elems(case)) return "::".join(self.case_id_elems(case))
def id_to_unittest_args(self, case_id: str) -> List[str]: def convert_args(self, case_id: str, args: List[str]) -> List[str]:
"""Converts a neotest ID into test specifier for unittest""" """Converts a neotest ID into test specifier for unittest"""
path, *child_ids = case_id.split("::") path, *child_ids = case_id.split("::")
if not child_ids: if not child_ids:
@@ -34,13 +34,13 @@ class UnittestNeotestAdapter(NeotestAdapter):
# Test files can be passed directly to unittest # Test files can be passed directly to unittest
return [path] return [path]
# Directories need to be run via the 'discover' argument # Directories need to be run via the 'discover' argument
return ["discover", "-s", path] return ["discover", "-s", path, *args]
# Otherwise, convert the ID into a dotted path, relative to current dir # Otherwise, convert the ID into a dotted path, relative to current dir
relative_file = os.path.relpath(path, os.getcwd()) relative_file = os.path.relpath(path, os.getcwd())
relative_stem = os.path.splitext(relative_file)[0] relative_stem = os.path.splitext(relative_file)[0]
relative_dotted = relative_stem.replace(os.sep, ".") relative_dotted = relative_stem.replace(os.sep, ".")
return [".".join([relative_dotted, *child_ids])] return [*args, ".".join([relative_dotted, *child_ids])]
# TODO: Stream results # TODO: Stream results
def run(self, args: List[str], _) -> Dict: def run(self, args: List[str], _) -> Dict:
@@ -93,7 +93,7 @@ class UnittestNeotestAdapter(NeotestAdapter):
sys.path.insert(0, os.getcwd()) sys.path.insert(0, os.getcwd())
# Prepend an executable name which is just used in output # Prepend an executable name which is just used in output
argv = ["neotest-python"] + self.id_to_unittest_args(args[-1]) + args[:-1] argv = ["neotest-python"] + self.convert_args(args[-1], args[:-1])
unittest.main( unittest.main(
module=None, module=None,
argv=argv, argv=argv,