Deskaid

  • tests
#!/usr/bin/env python3 import re from expecttest import TestCase from codemcp.git import append_metadata_to_message class TestGitMessageRealWorldCases(TestCase): """Test Git commit message handling with real-world examples.""" def test_complex_commit_message_with_signatures(self): """Test appending codemcp-id to a complex commit message with different types of signature trailers.""" message = """feat(git): Improve commit message handling This commit enhances the Git commit message parsing logic to handle various forms of trailers and metadata more robustly. It follows the Git trailer conventions while ensuring backward compatibility. The implementation now correctly handles: - Trailers in the conventional format (Key: Value) - Multiple trailers with different keys - Multiline trailer values (with indentation) - Various signature types used in Git projects Fixes #123 Closes: #456 Refs: #789 Reviewed-by: John Smith <john@example.com> Tested-by: Continuous Integration <ci@example.com> Signed-off-by: Developer <dev@example.com> Co-authored-by: Collaborator <collab@example.com>""" # Test appending new metadata new_message = append_metadata_to_message(message, {"codemcp-id": "abc-123456"}) self.assertExpectedInline( new_message, """\ feat(git): Improve commit message handling This commit enhances the Git commit message parsing logic to handle various forms of trailers and metadata more robustly. It follows the Git trailer conventions while ensuring backward compatibility. The implementation now correctly handles: - Trailers in the conventional format (Key: Value) - Multiple trailers with different keys - Multiline trailer values (with indentation) - Various signature types used in Git projects Fixes #123 Closes: #456 Refs: #789 Reviewed-by: John Smith <john@example.com> Tested-by: Continuous Integration <ci@example.com> Signed-off-by: Developer <dev@example.com> Co-authored-by: Collaborator <collab@example.com> codemcp-id: abc-123456 """, ) def test_complex_commit_message_with_existing_codemcp_id(self): """Test appending another codemcp-id to a complex commit message that already has one.""" message = """feat(git): Improve commit message handling This commit enhances the Git commit message parsing logic. Reviewed-by: John Smith <john@example.com> codemcp-id: old-id""" # Test appending new metadata new_message = append_metadata_to_message(message, {"codemcp-id": "new-id"}) self.assertExpectedInline( new_message, """\ feat(git): Improve commit message handling This commit enhances the Git commit message parsing logic. Reviewed-by: John Smith <john@example.com> codemcp-id: old-id codemcp-id: new-id """, ) def test_codemcp_id_extraction_with_regex(self): """Test that the regex used in get_head_commit_chat_id still works after changes.""" # This test verifies the approach used in get_head_commit_chat_id works message = """Subject Foo desc Bar bar codemcp-id: 10-blah Signed-off-by: foobar ghstack-id: blahblahblah""" # Test that get_head_commit_chat_id would correctly extract the codemcp-id # We'll do this by using the regex pattern directly since the function is async matches = re.findall(r"codemcp-id:\s*([^\n]*)", message) # Verify we found a match and it's the correct value self.assertTrue(matches) self.assertEqual(matches[-1].strip(), "10-blah") # Add a new codemcp-id and make sure it works as expected new_message = append_metadata_to_message(message, {"codemcp-id": "new-id"}) # Check the new message has the expected format self.assertExpectedInline( new_message, """\ Subject Foo desc Bar bar codemcp-id: 10-blah Signed-off-by: foobar ghstack-id: blahblahblah codemcp-id: new-id """, ) # Verify the regex can find both codemcp-ids matches = re.findall(r"codemcp-id:\s*([^\n]*)", new_message) self.assertEqual(len(matches), 2) self.assertEqual(matches[-1].strip(), "new-id") if __name__ == "__main__": unittest.main()