Skip to content

Commit 1c30d1c

Browse files
authored
fix: honor --asset-regex matches during asset selection (#63)
fixes: #62
1 parent d200378 commit 1c30d1c

1 file changed

Lines changed: 47 additions & 1 deletion

File tree

src/release.rs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ fn select_asset<'a>(
229229
score_asset(&asset.name, repo, detected_os, detected_arch, file_type),
230230
)
231231
})
232-
.filter(|(_, score)| *score > 0)
232+
.filter(|(_, score)| asset_regex.is_some() || *score > 0)
233233
.collect();
234234

235235
let mut candidates = candidates;
@@ -613,6 +613,7 @@ fn binary_score(path: &Path, repo: &str) -> i32 {
613613
#[cfg(test)]
614614
mod tests {
615615
use super::*;
616+
use crate::github::GitHubReleaseAsset;
616617
use anyhow::Result;
617618
use std::fs;
618619
use std::path::PathBuf;
@@ -631,6 +632,51 @@ mod tests {
631632
))
632633
}
633634

635+
fn asset(name: &str, size: u64) -> GitHubReleaseAsset {
636+
GitHubReleaseAsset {
637+
name: name.to_string(),
638+
browser_download_url: format!("https://example.com/{}", name),
639+
content_type: None,
640+
size,
641+
}
642+
}
643+
644+
#[test]
645+
fn select_asset_name_respects_regex_even_when_score_is_low() -> Result<()> {
646+
let assets = vec![
647+
asset("WinDirStat.zip", 1_000),
648+
asset("WinDirStat-x64.msi", 2_000),
649+
];
650+
651+
let selected = select_asset_name_for_request(
652+
&assets,
653+
"windirstat",
654+
Some(r"^WinDirStat\.zip$"),
655+
Some("windows"),
656+
Some("amd64"),
657+
FileTypePreference::Archive,
658+
)?;
659+
660+
assert_eq!(selected, "WinDirStat.zip");
661+
Ok(())
662+
}
663+
664+
#[test]
665+
fn select_asset_name_without_regex_still_rejects_low_scores() {
666+
let assets = vec![asset("WinDirStat.zip", 1_000)];
667+
668+
let result = select_asset_name_for_request(
669+
&assets,
670+
"windirstat",
671+
None,
672+
Some("windows"),
673+
Some("amd64"),
674+
FileTypePreference::Archive,
675+
);
676+
677+
assert!(result.is_err());
678+
}
679+
634680
#[test]
635681
fn probable_binary_rejects_archives() {
636682
assert!(!is_probable_binary(Path::new(

0 commit comments

Comments
 (0)