@@ -64,34 +64,67 @@ def test_override_step_configuration_for_single_action_type():
6464 ([], None ),
6565 (["foo" ], None ),
6666 (["fail:/format" ], None ),
67- (["foo" , "http://jira.net/123" ], "123" ),
67+ # Non-matching project keys should return None
68+ (["foo" , "http://jira.net/123" ], None ),
6869 (["http://org/123" ], None ),
6970 (["http://jira.com" ], None ),
7071 (["http://mozilla.jira.com/" ], None ),
71- (["http://mozilla.jira.com/123" ], "123" ),
72- (["http://mozilla.jira.com/123/" ], "123" ),
73- (["http://mozilla.jira.com/ticket/123" ], "123" ),
74- (["http://atlassian.com/ticket/123" ], "123" ),
75- (["http://mozilla.jira.com/123" , "http://mozilla.jira.com/456" ], "123" ),
72+ (["http://mozilla.jira.com/123" ], None ),
73+ (["http://mozilla.jira.com/123/" ], None ),
74+ (["http://mozilla.jira.com/ticket/123" ], None ),
75+ (["http://atlassian.com/ticket/123" ], None ),
76+ (["http://mozilla.jira.com/123" , "http://mozilla.jira.com/456" ], None ),
77+ # Multiple Jira issues from different projects should return None if none match
7678 (
7779 ["http://mozilla.jira.com/FOO-123" , "http://mozilla.jira.com/BAR-456" ],
78- "FOO-123" ,
80+ None ,
7981 ),
82+ # Issue keys that don't match the project format should return None
8083 (
8184 ["http://mozilla.jira.com/FOO-123" , "http://mozilla.jira.com/JBI456" ],
82- "FOO-123" ,
85+ None ,
8386 ),
87+ # Only return issue key if it matches the specified project
8488 (
8589 ["http://mozilla.jira.com/FOO-123" , "http://mozilla.jira.com/JBI-456" ],
8690 "JBI-456" ,
8791 ),
92+ # Test the specific scenario: BZFFX issue shouldn't prevent GENAI creation
93+ (
94+ ["http://mozilla.jira.com/BZFFX-123" ],
95+ None ,
96+ ),
8897 ],
8998)
9099def test_extract_see_also (see_also , expected , bug_factory ):
91100 bug = bug_factory (see_also = see_also )
92101 assert bug .extract_from_see_also ("JBI" ) == expected
93102
94103
104+ def test_extract_see_also_different_projects (bug_factory ):
105+ """Test that a bug with a BZFFX issue can still match GENAI project."""
106+ bug = bug_factory (see_also = ["http://mozilla.jira.com/browse/BZFFX-123" ])
107+ # When looking for GENAI project, should return None (allowing new ticket creation)
108+ assert bug .extract_from_see_also ("GENAI" ) is None
109+ # When looking for BZFFX project, should return the issue key
110+ assert bug .extract_from_see_also ("BZFFX" ) == "BZFFX-123"
111+
112+
113+ def test_extract_see_also_multiple_projects (bug_factory ):
114+ """Test that extract_from_see_also correctly handles bugs linked to multiple projects."""
115+ bug = bug_factory (
116+ see_also = [
117+ "http://mozilla.jira.com/browse/BZFFX-123" ,
118+ "http://mozilla.jira.com/browse/GENAI-456" ,
119+ ]
120+ )
121+ # Each project should only match its own issue
122+ assert bug .extract_from_see_also ("BZFFX" ) == "BZFFX-123"
123+ assert bug .extract_from_see_also ("GENAI" ) == "GENAI-456"
124+ # Non-matching project should return None
125+ assert bug .extract_from_see_also ("FOOBAR" ) is None
126+
127+
95128@pytest .mark .parametrize (
96129 "product,component,expected" ,
97130 [
0 commit comments