From 0598448fdbc9bd1ad57a21d87a6ffc23cad6053a36631d2a7f4b322da057fe09 Mon Sep 17 00:00:00 2001 From: Andrii Nikitin Date: Sun, 22 Feb 2026 21:34:54 +0100 Subject: [PATCH] t: modularize test branch configurations in conftest.py - Split branch configurations into COMMON and CUSTOM structures to reduce redundancy. - Implemented dynamic field injection for 'Branch' and 'GitProjectName' using branch keys and placeholders. - Enhanced the configuration merging logic to automatically synthesize final settings for each test environment. --- integration/tests/conftest.py | 90 ++++++++++++++--------------------- 1 file changed, 36 insertions(+), 54 deletions(-) diff --git a/integration/tests/conftest.py b/integration/tests/conftest.py index 3715447..13f88db 100644 --- a/integration/tests/conftest.py +++ b/integration/tests/conftest.py @@ -10,83 +10,48 @@ import json import base64 from tests.lib.common_test_utils import GiteaAPIClient -BRANCH_CONFIGS = { +BRANCH_CONFIG_COMMON = { + "workflow.config": { + "Workflows": ["pr"], + "Organization": "pool", + "Reviewers": ["-autogits_obs_staging_bot"], + "GitProjectName": "products/SLFO#{branch}" + }, + "_maintainership.json": { + "": ["ownerX", "ownerY"], + "pkgA": ["ownerA"], + "pkgB": ["ownerB", "ownerBB"] + } +} + +BRANCH_CONFIG_CUSTOM = { "main": { "workflow.config": { - "Workflows": ["pr"], - "GitProjectName": "products/SLFO#main", - "Organization": "pool", - "Branch": "main", - "ManualMergeProject": True, - "Reviewers": ["-autogits_obs_staging_bot"] + "ManualMergeProject": True }, "staging.config": { "ObsProject": "openSUSE:Leap:16.0", "StagingProject": "openSUSE:Leap:16.0:PullRequest" - }, - "_maintainership.json": { - "": ["ownerX", "ownerY"], - "pkgA": ["ownerA"], - "pkgB": ["ownerB", "ownerBB"] } }, "merge": { "workflow.config": { - "Workflows": ["pr"], - "GitProjectName": "products/SLFO#merge", - "Organization": "pool", - "Branch": "merge", "Reviewers": ["+usera", "+userb", "-autogits_obs_staging_bot"] - }, - "_maintainership.json": { - "": ["ownerX", "ownerY"], - "pkgA": ["ownerA"], - "pkgB": ["ownerB", "ownerBB"] } }, "maintainer-merge": { "workflow.config": { - "Workflows": ["pr"], - "GitProjectName": "products/SLFO#maintainer-merge", - "Organization": "pool", - "Branch": "maintainer-merge", - "Reviewers": ["-autogits_obs_staging_bot"] - }, - "_maintainership.json": { - "": ["ownerX", "ownerY"], - "pkgA": ["ownerA"], - "pkgB": ["ownerB", "ownerBB"] } }, "review-required": { "workflow.config": { - "Workflows": ["pr"], - "GitProjectName": "products/SLFO#review-required", - "Organization": "pool", - "Branch": "review-required", - "Reviewers": ["-autogits_obs_staging_bot"], "ReviewRequired": True - }, - "_maintainership.json": { - "": ["ownerX", "ownerY"], - "pkgA": ["ownerA"], - "pkgB": ["ownerB", "ownerBB"] } }, "dev": { "workflow.config": { - "Workflows": ["pr"], - "GitProjectName": "products/SLFO#dev", - "Organization": "pool", - "Branch": "dev", "ManualMergeProject": True, - "Reviewers": ["-autogits_obs_staging_bot"], "NoProjectGitPR": True - }, - "_maintainership.json": { - "": ["ownerX", "ownerY"], - "pkgA": ["ownerA"], - "pkgB": ["ownerB", "ownerBB"] } } } @@ -193,7 +158,7 @@ def gitea_env(): restart_needed = False # Setup all branches and configs - for branch_name, configs in BRANCH_CONFIGS.items(): + for branch_name, custom_configs in BRANCH_CONFIG_CUSTOM.items(): # Ensure branch exists in all 3 repos for owner, repo in [("products", "SLFO"), ("pool", "pkgA"), ("pool", "pkgB")]: if branch_name != "main": @@ -204,13 +169,30 @@ def gitea_env(): if "already exists" not in str(e).lower(): raise + # Merge configs + merged_configs = {} + for file_name, common_content in BRANCH_CONFIG_COMMON.items(): + merged_configs[file_name] = common_content.copy() + # Dynamically format values containing {branch} + if file_name == "workflow.config": + if "GitProjectName" in merged_configs[file_name]: + merged_configs[file_name]["GitProjectName"] = merged_configs[file_name]["GitProjectName"].format(branch=branch_name) + # Inject branch name dynamically + merged_configs[file_name]["Branch"] = branch_name + + for file_name, custom_content in custom_configs.items(): + if file_name in merged_configs: + merged_configs[file_name].update(custom_content) + else: + merged_configs[file_name] = custom_content + # Ensure config files in products/SLFO - for file_name, content_dict in configs.items(): + for file_name, content_dict in merged_configs.items(): if ensure_config_file(client, "products", "SLFO", branch_name, file_name, content_dict): restart_needed = True # Setup users (using configs from this branch) - setup_users_from_config(client, configs.get("workflow.config", {}), configs.get("_maintainership.json", {})) + setup_users_from_config(client, merged_configs.get("workflow.config", {}), merged_configs.get("_maintainership.json", {})) if restart_needed: client.restart_service("workflow-pr") -- 2.51.1