From 91a7085cd83ea50e7013f4b2395e470095c2c313 Mon Sep 17 00:00:00 2001 From: Nadja Brix Koch Date: Mon, 19 Jan 2026 12:31:41 +0100 Subject: [PATCH 1/3] feat(core/scripts): add recursive arg to repository_prep script Signed-off-by: Nadja Brix Koch --- src/cijoe/core/scripts/repository_prep.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/cijoe/core/scripts/repository_prep.py b/src/cijoe/core/scripts/repository_prep.py index ef0feeea..ce55ab09 100644 --- a/src/cijoe/core/scripts/repository_prep.py +++ b/src/cijoe/core/scripts/repository_prep.py @@ -54,6 +54,13 @@ def __call__(self, parser, namespace, values, option_string=None): action=StringToBoolAction, help="Argument for git: Clone only the history leading to the tip of the specified revision.", ) + parser.add_argument( + "--recursive", + choices=["true", "false"], + default=True, + action=StringToBoolAction, + help="Argument for git: Recurse into the registered submodules, and update any nested submodules within.", + ) def main(args, cijoe): @@ -73,6 +80,8 @@ def main(args, cijoe): depth_arg = f"--depth {depth}" if depth else "" single_branch = repos.get("single_branch", args.single_branch) single_branch_arg = "--single-branch" if single_branch else "" + recursive = repos.get("recursive", args.recursive) + recursive_arg = "--recursive" if recursive else "" repos_root = Path(repos["path"]).parent @@ -84,7 +93,7 @@ def main(args, cijoe): err, _ = run( f"[ ! -d {repos['path']} ] && " f"git clone {repos['remote']} {repos['path']} " - f"{depth_arg} {single_branch_arg} --recursive" + f"{depth_arg} {single_branch_arg} {recursive_arg}" ) if err: log.info("either already cloned or failed cloning; continuing optimisticly") @@ -108,9 +117,10 @@ def main(args, cijoe): log.error("failed pulling; giving up") return err - err, _ = run("git submodule update --init --recursive", cwd=repos["path"]) - if err: - log.info("Updating submodules failed; continuin optimisticly") + if recursive: + err, _ = run("git submodule update --init --recursive", cwd=repos["path"]) + if err: + log.info("Updating submodules failed; continuing optimisticly") err, _ = run("git status", cwd=repos["path"]) if err: From 2119694224654392d45cc1db7e4d47306a5561a2 Mon Sep 17 00:00:00 2001 From: Nadja Brix Koch Date: Mon, 19 Jan 2026 12:52:35 +0100 Subject: [PATCH 2/3] fix(core/command): replace dashes in env var keys In the `getconf()` method, we allow users to overwrite configuration file values with local environment variables by replacing all dots in the key with underscores, as dots are not allowed in env var keys. The same goes for dashes however, so there was a bug where it was not possible to overwrite a key like `system-imaging.images.fedora-43-x86_64` because an env var key like "SYSTEM-IMAGING_IMAGES_FEDORA-43-x86_64" could not be defined. This commit changes the approach so that both dots and dashes should be replaced by underscores. Signed-off-by: Nadja Brix Koch --- docs/source/configs/index.rst | 2 +- src/cijoe/core/command.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/configs/index.rst b/docs/source/configs/index.rst index e5fc8cb7..7784f539 100644 --- a/docs/source/configs/index.rst +++ b/docs/source/configs/index.rst @@ -203,7 +203,7 @@ In summary: - Convert the configuration path and name to uppercase. -- Replace any dots (``.``) with underscores (``_``). +- Replace any dots (``.``) or dashes (``-``) with underscores (``_``). .. _sec-resources-configs-multiple: diff --git a/src/cijoe/core/command.py b/src/cijoe/core/command.py index 39200fe0..5a94fdaf 100644 --- a/src/cijoe/core/command.py +++ b/src/cijoe/core/command.py @@ -277,7 +277,7 @@ def getconf(self, key: str, default: Any = None): found in the initiator's environment variables. """ - envkey = key.replace(".", "_").upper() + envkey = key.replace(".", "_").replace("-", ".").upper() envvar = os.getenv(envkey) if envvar: log.debug(f"found {key} ({envkey}) in environment variables.") From 71b6061e63ad64e25969c9466568c31f97b2862d Mon Sep 17 00:00:00 2001 From: Nadja Brix Koch Date: Tue, 10 Feb 2026 14:34:26 +0100 Subject: [PATCH 3/3] fix(core/report): fix styling bug in report template In a previous commit, we added filtering for the test report, so that we can filter by e.g. passed or failed tests. However, when this is done, you cannot click the tests to see the testinfo or runlog. This commit fixes this by not adding `display:none` to items with the `.show` or `.collapse` classes. Signed-off-by: Nadja Brix Koch --- src/cijoe/core/templates/report-workflow.html.jinja2 | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/cijoe/core/templates/report-workflow.html.jinja2 b/src/cijoe/core/templates/report-workflow.html.jinja2 index 37e07ddd..e45bb046 100644 --- a/src/cijoe/core/templates/report-workflow.html.jinja2 +++ b/src/cijoe/core/templates/report-workflow.html.jinja2 @@ -80,15 +80,12 @@ div.image { border-top: 1px solid; } -[id^="CONTENT_TESTREPORT"]:has(.btn-success.selected) .list-group-item:not(.list-group-item-success) { - display: none; -} -[id^="CONTENT_TESTREPORT"]:has(.btn-danger.selected) .list-group-item:not(.list-group-item-danger) { - display: none; -} -[id^="CONTENT_TESTREPORT"]:has(.btn-secondary.selected) .list-group-item:not(.list-group-item-secondary) { +[id^="CONTENT_TESTREPORT"]:has(.btn-success.selected) .list-group-item:not(.list-group-item-success, .show, .collapsing), +[id^="CONTENT_TESTREPORT"]:has(.btn-danger.selected) .list-group-item:not(.list-group-item-danger, .show, .collapsing), +[id^="CONTENT_TESTREPORT"]:has(.btn-secondary.selected) .list-group-item:not(.list-group-item-secondary, .show, .collapsing) { display: none; } + [id^="CONTENT_TESTREPORT"] .btn.selected:not(.btn-primary) { box-shadow: var(--bs-btn-focus-box-shadow); }