summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runner.py26
-rw-r--r--tests/test_runner.py14
2 files changed, 37 insertions, 3 deletions
diff --git a/runner.py b/runner.py
index d55310c..8fd406f 100644
--- a/runner.py
+++ b/runner.py
@@ -9,6 +9,7 @@ import itertools
import json
import logging
import os
+import re
import shutil
import sys
import traceback
@@ -404,6 +405,13 @@ async def run_work_item(
git_repository: git.Repository,
logger: logging.Logger,
) -> Optional[common.Error]:
+ error: Optional[common.Error]
+
+ submodule = get_submodule(work_item.repository)
+ match submodule:
+ case common.Error() as error:
+ return error
+
message = "Resetting the Qt repository"
logger.info(message)
await coordinator_connection.send_status(
@@ -411,7 +419,7 @@ async def run_work_item(
)
error = await reset_git_repository(
git_repository=git_repository,
- submodule=work_item.repository,
+ submodule=submodule,
revision=work_item.revision,
log_directory=work_item_directory,
retries=3,
@@ -429,7 +437,7 @@ async def run_work_item(
error = await qt.Module.configure(
build_directory=build_directory,
repository_directory=git_repository.directory,
- submodule=work_item.repository,
+ submodule=submodule,
log_directory=work_item_directory,
)
if error:
@@ -442,7 +450,7 @@ async def run_work_item(
)
module = await qt.Module.build(
build_directory=build_directory,
- submodule=work_item.repository,
+ submodule=submodule,
test_file=runner_mode.test_file,
log_directory=work_item_directory,
logger=logger,
@@ -502,6 +510,18 @@ async def run_work_item(
return None
+def get_submodule(work_item_repository: str) -> Union[common.Error, str]:
+ """
+ Get a submodule from a work item repository string.
+ """
+ match = re.match(pattern=r"qt/([^/]+)$", string=work_item_repository)
+ if not match:
+ return common.Error(f"Unsupported work item repository: {work_item_repository}")
+
+ submodule = match.group(1)
+ return submodule
+
+
async def reset_git_repository(
git_repository: git.Repository,
submodule: str,
diff --git a/tests/test_runner.py b/tests/test_runner.py
index d4de019..b1c0e70 100644
--- a/tests/test_runner.py
+++ b/tests/test_runner.py
@@ -9,6 +9,20 @@ import common
import runner
+class Test(unittest.TestCase):
+ def test_get_submodule(self) -> None:
+ """
+ We can locate submodules.
+ """
+ submodule = runner.get_submodule("qt/qtbase")
+ self.assertIsInstance(submodule, str)
+ submodule = cast(str, submodule)
+ self.assertEqual(submodule, "qtbase")
+
+ self.assertIsInstance(runner.get_submodule("qtbase"), common.Error)
+ self.assertIsInstance(runner.get_submodule("qt/qt/qtbase"), common.Error)
+
+
class TestArguments(unittest.TestCase):
def test_parse(self) -> None:
"""