- Add TC-MERGE-008 to 013 for testing MergeMode of workflow-pr - Synchronize integration/test-plan.md with the actual test implementations
82 lines
3.8 KiB
Python
82 lines
3.8 KiB
Python
import pytest
|
|
import re
|
|
import time
|
|
from pathlib import Path
|
|
from tests.lib.common_test_utils import (
|
|
GiteaAPIClient,
|
|
)
|
|
|
|
# =============================================================================
|
|
# TEST CASES
|
|
# =============================================================================
|
|
|
|
@pytest.mark.t001
|
|
@pytest.mark.xfail(reason="review pending label is not applied")
|
|
def test_001_project_pr_labels(label_env, staging_bot_client):
|
|
"""
|
|
Test scenario:
|
|
1. Setup custom workflow.config with Labels: { "StagingAuto": "staging/Backlog", "ReviewPending": "review/Pending" }.
|
|
2. Create a package PR in 'label-test' branch.
|
|
3. Make sure the workflow-pr service created related project PR in 'label-test' branch.
|
|
4. Wait for the project PR to have the label "staging/Backlog".
|
|
5. Post approval from autogits_obs_staging_bot.
|
|
6. Check that the project PR gets the label "review/Pending".
|
|
"""
|
|
gitea_env, test_full_repo_name, branch_name = label_env
|
|
|
|
# 1. Create a package PR
|
|
diff = """diff --git a/label_test_fixture.txt b/label_test_fixture.txt
|
|
new file mode 100644
|
|
index 0000000..e69de29
|
|
"""
|
|
print(f"--- Creating package PR in mypool/pkgA on branch {branch_name} ---")
|
|
package_pr = gitea_env.create_gitea_pr("mypool/pkgA", diff, "Test Labels Fixture", False, base_branch=branch_name)
|
|
package_pr_number = package_pr["number"]
|
|
print(f"Created package PR mypool/pkgA#{package_pr_number}")
|
|
|
|
# 2. Make sure the workflow-pr service created related project PR
|
|
project_pr_number = gitea_env.wait_for_project_pr("mypool/pkgA", package_pr_number)
|
|
assert project_pr_number is not None, "Workflow bot did not create a project PR."
|
|
print(f"Found project PR: myproducts/mySLFO#{project_pr_number}")
|
|
|
|
# 3. Wait for the project PR to have the label "staging/Backlog"
|
|
print(f"Checking for 'staging/Backlog' label on project PR myproducts/mySLFO#{project_pr_number}...")
|
|
|
|
backlog_label_found = False
|
|
expected_backlog_label = "staging/Backlog"
|
|
|
|
for _ in range(20):
|
|
project_pr_details = gitea_env.get_pr_details("myproducts/mySLFO", project_pr_number)
|
|
labels = project_pr_details.get("labels", [])
|
|
label_names = [l["name"] for l in labels]
|
|
if expected_backlog_label in label_names:
|
|
backlog_label_found = True
|
|
break
|
|
time.sleep(1)
|
|
|
|
assert backlog_label_found, f"Project PR myproducts/mySLFO#{project_pr_number} does not have the expected label '{expected_backlog_label}'."
|
|
print(f"Project PR myproducts/mySLFO#{project_pr_number} has the expected label '{expected_backlog_label}'.")
|
|
|
|
# 4. Post approval from autogits_obs_staging_bot
|
|
print(f"--- Posting approval from autogits_obs_staging_bot on project PR myproducts/mySLFO#{project_pr_number} ---")
|
|
staging_bot_client.create_review("myproducts/mySLFO", project_pr_number, event="APPROVED", body="Staging OK")
|
|
|
|
# 5. Check that the project PR has the label "review/Pending"
|
|
print(f"Checking for 'review/Pending' label on project PR myproducts/mySLFO#{project_pr_number}...")
|
|
|
|
pending_label_found = False
|
|
expected_pending_label = "review/Pending"
|
|
|
|
for _ in range(20):
|
|
project_pr_details = gitea_env.get_pr_details("myproducts/mySLFO", project_pr_number)
|
|
labels = project_pr_details.get("labels", [])
|
|
label_names = [l["name"] for l in labels]
|
|
print(f"Current labels: {label_names}")
|
|
if expected_pending_label in label_names:
|
|
pending_label_found = True
|
|
break
|
|
time.sleep(1)
|
|
|
|
assert pending_label_found, f"Project PR myproducts/mySLFO#{project_pr_number} does not have the expected label '{expected_pending_label}'."
|
|
print(f"Project PR myproducts/mySLFO#{project_pr_number} has the expected label '{expected_pending_label}'.")
|