aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/shirabe/src/config.rs21
-rw-r--r--crates/shirabe/tests/downloader/git_downloader_test.rs8
2 files changed, 3 insertions, 26 deletions
diff --git a/crates/shirabe/src/config.rs b/crates/shirabe/src/config.rs
index 966d6bac..8f78ecca 100644
--- a/crates/shirabe/src/config.rs
+++ b/crates/shirabe/src/config.rs
@@ -841,29 +841,14 @@ impl Config {
.and_then(|v| v.as_bool())
.unwrap_or(false);
if secure_http {
- let map: IndexMap<String, String> = protos
- .iter()
- .enumerate()
- .map(|(i, s)| (i.to_string(), s.clone()))
- .collect();
let found = array_search_mixed(
&PhpMixed::String("git".to_string()),
- &PhpMixed::Array(
- map.into_iter()
- .map(|(k, v)| (k, PhpMixed::String(v)))
- .collect(),
- ),
+ &PhpMixed::List(protos.iter().cloned().map(PhpMixed::String).collect()),
false,
);
if let Some(idx_val) = found {
- let idx = idx_val
- .as_string()
- .unwrap_or("")
- .parse::<usize>()
- .unwrap_or(usize::MAX);
- if idx < protos.len() {
- protos.remove(idx);
- }
+ let idx = idx_val.as_int().expect("list search index") as usize;
+ protos.remove(idx);
}
}
let first = protos.first().cloned();
diff --git a/crates/shirabe/tests/downloader/git_downloader_test.rs b/crates/shirabe/tests/downloader/git_downloader_test.rs
index 41852300..748dfb14 100644
--- a/crates/shirabe/tests/downloader/git_downloader_test.rs
+++ b/crates/shirabe/tests/downloader/git_downloader_test.rs
@@ -787,14 +787,6 @@ fn test_update_with_new_repo_url() {
});
}
-#[ignore = "Blocked by a Config bug: Config::get(\"github-protocols\") does not drop the \
- insecure \"git\" protocol under secure-http. array_search_mixed returns the \
- matched index as PhpMixed::Int, but config.rs reads it via as_string (which is \
- Some only for String), so the removal is skipped and get() returns \
- [https, ssh, git] instead of [https, ssh]. The downloader then attempts a third \
- git:// fetch (absent from the process mock) and the error message reads \
- \"via https, ssh, git protocols\", failing the assertion. PHP's new Config() \
- reduces it to two protocols."]
#[serial]
#[test]
fn test_update_throws_runtime_exception_if_git_command_fails() {