mirror of https://github.com/mongodb/mongo
100 lines
4.1 KiB
Python
100 lines
4.1 KiB
Python
"""Unit tests for the evergreen_task_timeout script."""
|
|
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from git import Commit, Repo
|
|
|
|
from buildscripts.validate_commit_message import (
|
|
get_non_merge_queue_squashed_commits,
|
|
is_valid_commit,
|
|
)
|
|
|
|
|
|
class ValidateCommitMessageTest(unittest.TestCase):
|
|
def test_valid(self):
|
|
fake_repo = Repo()
|
|
messages = [
|
|
Commit(repo=fake_repo, binsha=b"deadbeefdeadbeefdead", message="SERVER-44338"),
|
|
Commit(repo=fake_repo, binsha=b"deadbeefdeadbeefdead", message='Revert "SERVER-60'),
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message="Import wiredtiger: 58115abb6fbb3c1cc7bfd087d41a47347bce9a69 from branch mongodb-4.4",
|
|
),
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message='Revert "Import wiredtiger: 58115abb6fbb3c1cc7bfd087d41a47347bce9a69 from branch mongodb-4.4"',
|
|
),
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message="SERVER-44338 blablablalbabla\nmultiline message\nasdfasdf",
|
|
),
|
|
]
|
|
|
|
self.assertTrue(all(is_valid_commit(message) for message in messages))
|
|
|
|
def test_invalid(self):
|
|
fake_repo = Repo()
|
|
messages = [
|
|
Commit(
|
|
repo=fake_repo, binsha=b"deadbeefdeadbeefdead", message="SERVER-"
|
|
), # missing number
|
|
Commit(
|
|
repo=fake_repo, binsha=b"deadbeefdeadbeefdead", message="Revert SERVER-60"
|
|
), # missing quote before SERVER
|
|
Commit(repo=fake_repo, binsha=b"deadbeefdeadbeefdead", message=""), # empty value
|
|
Commit(
|
|
repo=fake_repo, binsha=b"deadbeefdeadbeefdead", message="nonsense"
|
|
), # nonsense value
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message="SERVER-123 asdf\nhttps://spruce.mongodb.com",
|
|
), # Contains some banned strings
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message="SERVER-123 asdf\nhttps://evergreen.mongodb.com",
|
|
), # Contains some banned strings
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message="SERVER-123 asdf\nAnything in this description will be included in the commit message. Replace or delete this text before merging. Add links to testing in the comments of the PR.",
|
|
), # Contains some banned strings
|
|
Commit(
|
|
repo=fake_repo,
|
|
binsha=b"deadbeefdeadbeefdead",
|
|
message="SERVER-123 asdf\nAnything\n\n in this description will be included in the commit message.\nReplace or delete this text before merging. Add links to testing in the\ncomments of the PR.",
|
|
), # Contains some banned strings with extra newlines
|
|
]
|
|
|
|
self.assertTrue(all(not is_valid_commit(message) for message in messages))
|
|
|
|
@patch("requests.post")
|
|
def test_squashed_commit(self, mock_request):
|
|
class FakeResponse:
|
|
def json(self):
|
|
return {
|
|
"data": {
|
|
"repository": {
|
|
"pullRequest": {
|
|
"viewerMergeHeadlineText": "SERVER-1234 Add a ton of great support (#32823)",
|
|
"viewerMergeBodyText": "This PR adds back support for a lot of things\nMany great things!",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
mock_request.return_value = FakeResponse()
|
|
commits = get_non_merge_queue_squashed_commits(
|
|
github_org="fun_org", github_repo="fun_repo", pr_number=1024, github_token="fun_token"
|
|
)
|
|
self.assertEqual(len(commits), 1)
|
|
self.assertEqual(
|
|
commits[0].message,
|
|
"SERVER-1234 Add a ton of great support (#32823)\nThis PR adds back support for a lot of things\nMany great things!",
|
|
)
|