summaryrefslogtreecommitdiff
path: root/buildscripts
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2021-05-11 13:26:16 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-12 20:35:47 +0000
commit2b131880f5e71c733cc628a61bf34cb2f5a813ce (patch)
treed42e103b0070767d739c97e5e3a9baa43d162297 /buildscripts
parent7dbfa3f3c2f9fa105a78094d7f58cd33bd60bdd8 (diff)
downloadmongo-2b131880f5e71c733cc628a61bf34cb2f5a813ce.tar.gz
SERVER-56751: Add patch build task for todo comment checks
(cherry picked from commit d2da02cf6654b60948408cdcaaf9c520e8d1bc0e) (cherry picked from commit 42004e2c2bf59e586a8086d7c84724bc77085d68)
Diffstat (limited to 'buildscripts')
-rwxr-xr-x[-rw-r--r--]buildscripts/todo_check.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/buildscripts/todo_check.py b/buildscripts/todo_check.py
index 3a2bc407d62..f21a1f31da2 100644..100755
--- a/buildscripts/todo_check.py
+++ b/buildscripts/todo_check.py
@@ -8,7 +8,9 @@ from dataclasses import dataclass
from typing import Iterable, Callable, Optional, NamedTuple, Dict, List
import click
+from evergreen import RetryingEvergreenApi
+EVG_CONFIG_FILE = "./.evergreen.yml"
BASE_SEARCH_DIR = "."
IGNORED_PATHS = [".git"]
ISSUE_RE = re.compile('(BUILD|SERVER|WT|PM|TOOLS|TIG|PERF|BF)-[0-9]+')
@@ -194,12 +196,26 @@ def walk_fs(root: str, action: Callable[[str, Iterable[str]], None]) -> None:
continue
+def get_summary_for_patch(version_id: str) -> str:
+ """
+ Get the description provided for the given patch build.
+
+ :param version_id: Version ID of the patch build to query.
+ :return: Description provided for the patch build.
+ """
+ evg_api = RetryingEvergreenApi.get_api(config_file=EVG_CONFIG_FILE)
+ return evg_api.version_by_id(version_id).message
+
+
@click.command()
@click.option("--ticket", help="Only report on TODOs associated with given Jira ticket.")
@click.option("--base-dir", default=BASE_SEARCH_DIR, help="Base directory to search in.")
@click.option("--commit-message",
help="For commit-queue execution only, ensure no TODOs for this commit")
-def main(ticket: Optional[str], base_dir: str, commit_message: Optional[str]):
+@click.option("--patch-build", type=str,
+ help="For patch build execution only, check for any TODOs from patch description")
+def main(ticket: Optional[str], base_dir: str, commit_message: Optional[str],
+ patch_build: Optional[str]):
"""
Search for and report on TODO comments in the code base.
@@ -242,12 +258,18 @@ def main(ticket: Optional[str], base_dir: str, commit_message: Optional[str]):
\f
:param ticket: Only report on TODOs associated with this jira ticket.
:param base_dir: Search files in this base directory.
- :param commit_message: Commit message if running in the commit-queue.[
+ :param commit_message: Commit message if running in the commit-queue.
+ :param patch_build: Version ID of patch build to check.
"""
if commit_message and ticket is not None:
raise click.UsageError("--ticket cannot be used in commit queue.")
+ if patch_build:
+ if ticket is not None:
+ raise click.UsageError("--ticket cannot be used in patch builds.")
+ commit_message = get_summary_for_patch(patch_build)
+
todo_checker = TodoChecker()
todo_checker.check_all_files(base_dir)