From 62261c25174c5f19a448031eb3195b38b643e2fd Mon Sep 17 00:00:00 2001 From: saisravani20 Date: Fri, 23 May 2025 09:37:29 +0530 Subject: [PATCH 1/4] update path --- .github/workflows/validate-description.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-description.yml b/.github/workflows/validate-description.yml index 826c93d..4758577 100644 --- a/.github/workflows/validate-description.yml +++ b/.github/workflows/validate-description.yml @@ -9,4 +9,4 @@ jobs: - name: Check PR description for work item link run: | echo "Checking PR description for work item link" - python .global-checks-tooling/checks/check_pr_description.py "${{ github.event.pull_request.body }}" + python checks/check_pr_description.py "${{ github.event.pull_request.body }}" From 74aeeb0ab39010004d82f4c841c9557cd3e9152f Mon Sep 17 00:00:00 2001 From: saisravani20 Date: Fri, 23 May 2025 09:47:12 +0530 Subject: [PATCH 2/4] add test --- .github/workflows/validate-description.yml | 3 ++ checks/check_pr_description.py | 11 +++++-- .../pr_description/invalid/no_link.txt | 6 ++++ .../pr_description/invalid/wrong_format.txt | 3 ++ .../pr_description/valid/full_url.txt | 7 ++++ .../pr_description/valid/iss_link.txt | 5 +++ .../pr_description/valid/task_link.txt | 3 ++ .../pr_description/valid/tkt_link.txt | 4 +++ checks/test_checks.py | 32 ++++++++++++++++++- 9 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 checks/fixtures/pr_description/invalid/no_link.txt create mode 100644 checks/fixtures/pr_description/invalid/wrong_format.txt create mode 100644 checks/fixtures/pr_description/valid/full_url.txt create mode 100644 checks/fixtures/pr_description/valid/iss_link.txt create mode 100644 checks/fixtures/pr_description/valid/task_link.txt create mode 100644 checks/fixtures/pr_description/valid/tkt_link.txt diff --git a/.github/workflows/validate-description.yml b/.github/workflows/validate-description.yml index 4758577..a60b554 100644 --- a/.github/workflows/validate-description.yml +++ b/.github/workflows/validate-description.yml @@ -6,6 +6,9 @@ jobs: validate_description: runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Check PR description for work item link run: | echo "Checking PR description for work item link" diff --git a/checks/check_pr_description.py b/checks/check_pr_description.py index e82e86c..1f2b04c 100644 --- a/checks/check_pr_description.py +++ b/checks/check_pr_description.py @@ -4,9 +4,16 @@ def check_description(description): """ Checks if the PR description contains a work item link. + Returns True if valid, False otherwise. """ regex = r"(^|\s)(https:\/\/app\.devrev\.ai\/devrev\/works\/)?(ISS|TKT|TASK)-\d+\b" - if not re.search(regex, description): + return bool(re.search(regex, description)) + +def check_description_cli(description): + """ + CLI version that prints messages and exits. + """ + if not check_description(description): print("PR description must include a link to the work item (e.g., ISS-123, TKT-456, TASK-789, or a full https://app.devrev.ai/devrev/works/ISS-123 link).") sys.exit(1) print("PR description contains a valid work item link.") @@ -18,4 +25,4 @@ def check_description(description): sys.exit(1) pr_description = sys.argv[1] - check_description(pr_description) + check_description_cli(pr_description) diff --git a/checks/fixtures/pr_description/invalid/no_link.txt b/checks/fixtures/pr_description/invalid/no_link.txt new file mode 100644 index 0000000..1e2dede --- /dev/null +++ b/checks/fixtures/pr_description/invalid/no_link.txt @@ -0,0 +1,6 @@ +This PR adds a new feature to the application. + +## Changes +- Added new functionality +- Updated tests +- Fixed styling issues \ No newline at end of file diff --git a/checks/fixtures/pr_description/invalid/wrong_format.txt b/checks/fixtures/pr_description/invalid/wrong_format.txt new file mode 100644 index 0000000..631e02c --- /dev/null +++ b/checks/fixtures/pr_description/invalid/wrong_format.txt @@ -0,0 +1,3 @@ +This PR addresses issue ISSUE-123 and ticket TICKET-456. + +The work items don't follow the correct format. \ No newline at end of file diff --git a/checks/fixtures/pr_description/valid/full_url.txt b/checks/fixtures/pr_description/valid/full_url.txt new file mode 100644 index 0000000..0002319 --- /dev/null +++ b/checks/fixtures/pr_description/valid/full_url.txt @@ -0,0 +1,7 @@ +Fixes bug reported in https://app.devrev.ai/devrev/works/ISS-999. + +## Bug Description +The application was crashing when handling large datasets. + +## Solution +Implemented pagination to handle large data efficiently. \ No newline at end of file diff --git a/checks/fixtures/pr_description/valid/iss_link.txt b/checks/fixtures/pr_description/valid/iss_link.txt new file mode 100644 index 0000000..d52f6e9 --- /dev/null +++ b/checks/fixtures/pr_description/valid/iss_link.txt @@ -0,0 +1,5 @@ +This PR fixes the login issue described in ISS-123. + +## Changes +- Updated authentication flow +- Fixed token validation \ No newline at end of file diff --git a/checks/fixtures/pr_description/valid/task_link.txt b/checks/fixtures/pr_description/valid/task_link.txt new file mode 100644 index 0000000..cb4400f --- /dev/null +++ b/checks/fixtures/pr_description/valid/task_link.txt @@ -0,0 +1,3 @@ +Refactoring code structure for TASK-789. + +This refactoring improves maintainability and performance. \ No newline at end of file diff --git a/checks/fixtures/pr_description/valid/tkt_link.txt b/checks/fixtures/pr_description/valid/tkt_link.txt new file mode 100644 index 0000000..7bcf227 --- /dev/null +++ b/checks/fixtures/pr_description/valid/tkt_link.txt @@ -0,0 +1,4 @@ +Implements new feature as requested in TKT-456. + +- Added new API endpoint +- Updated documentation \ No newline at end of file diff --git a/checks/test_checks.py b/checks/test_checks.py index 2026391..79ff369 100644 --- a/checks/test_checks.py +++ b/checks/test_checks.py @@ -2,6 +2,7 @@ import checks.check_commit_emails import checks.check_repo_yml import checks.check_trufflehog +import checks.check_pr_description import unittest import os @@ -71,7 +72,36 @@ def test_bad(self): with change_dir("checks/fixtures/emails/bad"): self.assertFalse(checks.check_commit_emails.check_commit_emails()) - +class TestPRDescription(unittest.TestCase): + def test_valid_iss_link(self): + with open("checks/fixtures/pr_description/valid/iss_link.txt", "r") as f: + description = f.read() + self.assertTrue(checks.check_pr_description.check_description(description)) + + def test_valid_tkt_link(self): + with open("checks/fixtures/pr_description/valid/tkt_link.txt", "r") as f: + description = f.read() + self.assertTrue(checks.check_pr_description.check_description(description)) + + def test_valid_task_link(self): + with open("checks/fixtures/pr_description/valid/task_link.txt", "r") as f: + description = f.read() + self.assertTrue(checks.check_pr_description.check_description(description)) + + def test_valid_full_url(self): + with open("checks/fixtures/pr_description/valid/full_url.txt", "r") as f: + description = f.read() + self.assertTrue(checks.check_pr_description.check_description(description)) + + def test_invalid_no_link(self): + with open("checks/fixtures/pr_description/invalid/no_link.txt", "r") as f: + description = f.read() + self.assertFalse(checks.check_pr_description.check_description(description)) + + def test_invalid_wrong_format(self): + with open("checks/fixtures/pr_description/invalid/wrong_format.txt", "r") as f: + description = f.read() + self.assertFalse(checks.check_pr_description.check_description(description)) if __name__ == '__main__': unittest.main() \ No newline at end of file From 5eb186e082ad98657a4b16c484b789f685ef3787 Mon Sep 17 00:00:00 2001 From: saisravani20 Date: Fri, 23 May 2025 09:48:50 +0530 Subject: [PATCH 3/4] Empty-Commit From 47ea8925a533273ba8782095f66ad077f5c3dfcd Mon Sep 17 00:00:00 2001 From: saisravani20 Date: Fri, 23 May 2025 10:28:01 +0530 Subject: [PATCH 4/4] add eof --- checks/test_checks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checks/test_checks.py b/checks/test_checks.py index 79ff369..6a3283b 100644 --- a/checks/test_checks.py +++ b/checks/test_checks.py @@ -104,4 +104,4 @@ def test_invalid_wrong_format(self): self.assertFalse(checks.check_pr_description.check_description(description)) if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main()