2019-12-06 16:59:35 +00:00
""" Unit tests for the evergreen_task_timeout script. """
2024-05-16 18:00:17 -04:00
2019-12-06 16:59:35 +00:00
import unittest
2025-02-27 15:24:19 -08:00
from unittest . mock import patch
2024-10-10 10:59:18 -07:00
2024-06-18 17:50:28 -07:00
from git import Commit , Repo
2019-12-06 16:59:35 +00:00
2025-02-27 15:24:19 -08:00
from buildscripts . validate_commit_message import (
get_non_merge_queue_squashed_commits ,
is_valid_commit ,
)
2020-04-29 19:00:37 +01:00
2020-04-28 20:46:00 -04:00
class ValidateCommitMessageTest ( unittest . TestCase ) :
2024-05-20 22:17:04 -04:00
def test_valid ( self ) :
2024-06-18 17:50:28 -07:00
fake_repo = Repo ( )
2019-12-06 16:59:35 +00:00
messages = [
2024-06-18 17:50:28 -07:00
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 \n multiline message \n asdfasdf " ,
) ,
2020-01-23 17:52:51 +00:00
]
2021-09-07 12:31:17 -04:00
2024-09-20 09:01:02 -07:00
self . assertTrue ( all ( is_valid_commit ( message ) for message in messages ) )
2021-09-07 12:31:17 -04:00
2024-05-20 22:17:04 -04:00
def test_invalid ( self ) :
2024-06-18 17:50:28 -07:00
fake_repo = Repo ( )
2021-07-13 15:55:44 -04:00
messages = [
2024-06-18 17:50:28 -07:00
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 \n https://spruce.mongodb.com " ,
) , # Contains some banned strings
Commit (
repo = fake_repo ,
binsha = b " deadbeefdeadbeefdead " ,
message = " SERVER-123 asdf \n https://evergreen.mongodb.com " ,
) , # Contains some banned strings
Commit (
repo = fake_repo ,
binsha = b " deadbeefdeadbeefdead " ,
message = " SERVER-123 asdf \n Anything 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
2024-07-23 12:35:07 -04:00
Commit (
repo = fake_repo ,
binsha = b " deadbeefdeadbeefdead " ,
message = " SERVER-123 asdf \n Anything \n \n in this description will be included in the commit message. \n Replace or delete this text before merging. Add links to testing in the \n comments of the PR. " ,
) , # Contains some banned strings with extra newlines
2021-07-13 15:55:44 -04:00
]
2021-12-29 10:57:03 -05:00
2024-09-20 09:01:02 -07:00
self . assertTrue ( all ( not is_valid_commit ( message ) for message in messages ) )
2025-02-27 15:24:19 -08:00
@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 \n Many 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) \n This PR adds back support for a lot of things \n Many great things! " ,
)