@@ -440,18 +440,14 @@ fn find_matching_submodule(
440440}
441441
442442/// Helper function to determine which SHA to use for the API
443- /// Returns the original partial SHA if it looks like a partial SHA that would be padded ,
443+ /// Returns the original partial SHA if it looks like a partial SHA,
444444/// otherwise returns the resolved SHA
445445fn get_api_sha ( original : & str , resolved : & str ) -> String {
446446 let is_original_partial = original. len ( ) >= 4
447447 && original. len ( ) < 40
448448 && original. chars ( ) . all ( |c| c. is_ascii_hexdigit ( ) ) ;
449449
450- let is_resolved_padded = resolved. len ( ) == 40
451- && resolved. starts_with ( original)
452- && resolved[ original. len ( ) ..] . chars ( ) . all ( |c| c == '0' ) ;
453-
454- if is_resolved_padded && is_original_partial {
450+ if is_original_partial {
455451 original. to_owned ( )
456452 } else {
457453 resolved. to_owned ( )
@@ -1342,4 +1338,62 @@ mod tests {
13421338 std:: env:: remove_var ( "GITHUB_EVENT_NAME" ) ;
13431339 std:: env:: remove_var ( "GITHUB_REF" ) ;
13441340 }
1341+
1342+ #[ test]
1343+ fn test_get_api_sha_partial_sha ( ) {
1344+ let original = "4eba" ;
1345+ let resolved = "4eba000000000000000000000000000000000000" ;
1346+ assert_eq ! ( get_api_sha( original, resolved) , "4eba" ) ;
1347+
1348+ let original = "4ebad56" ;
1349+ let resolved = "4ebad56000000000000000000000000000000000" ;
1350+ assert_eq ! ( get_api_sha( original, resolved) , "4ebad56" ) ;
1351+
1352+ let original = "abc123def" ;
1353+ let resolved = "abc123def0000000000000000000000000000000" ;
1354+ assert_eq ! ( get_api_sha( original, resolved) , "abc123def" ) ;
1355+
1356+ let original = "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c8" ;
1357+ let resolved = "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c80" ;
1358+ assert_eq ! (
1359+ get_api_sha( original, resolved) ,
1360+ "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c8"
1361+ ) ;
1362+ }
1363+
1364+ #[ test]
1365+ fn test_get_api_sha_full_sha ( ) {
1366+ let original = "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c8c8" ;
1367+ let resolved = "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c8c8" ;
1368+ assert_eq ! ( get_api_sha( original, resolved) , resolved) ;
1369+ }
1370+
1371+ #[ test]
1372+ fn test_get_api_sha_too_short ( ) {
1373+ let original = "4eb" ;
1374+ let resolved = "4eb0000000000000000000000000000000000000" ;
1375+ assert_eq ! ( get_api_sha( original, resolved) , resolved) ;
1376+ }
1377+
1378+ #[ test]
1379+ fn test_get_api_sha_symbolic ( ) {
1380+ let original = "HEAD" ;
1381+ let resolved = "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c8c8" ;
1382+ assert_eq ! ( get_api_sha( original, resolved) , resolved) ;
1383+
1384+ let original = "main" ;
1385+ let resolved = "4ebad56f915d32a0b8c8c8c8c8c8c8c8c8c8c8c8c8" ;
1386+ assert_eq ! ( get_api_sha( original, resolved) , resolved) ;
1387+ }
1388+
1389+ #[ test]
1390+ fn test_get_api_sha_mixed_case_hex ( ) {
1391+ let original = "4EbAd56" ;
1392+ let resolved = "4EbAd56000000000000000000000000000000000" ;
1393+ assert_eq ! ( get_api_sha( original, resolved) , "4EbAd56" ) ;
1394+
1395+ let original = "ABCDEF1" ;
1396+ let resolved = "ABCDEF1000000000000000000000000000000000" ;
1397+ assert_eq ! ( get_api_sha( original, resolved) , "ABCDEF1" ) ;
1398+ }
13451399}
0 commit comments