Skip to content

Commit e5983dc

Browse files
committed
fix logic & tests
1 parent 651c7c2 commit e5983dc

1 file changed

Lines changed: 60 additions & 6 deletions

File tree

src/utils/vcs.rs

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
445445
fn 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

Comments
 (0)