diff options
Diffstat (limited to 'crates/shirabe')
| -rw-r--r-- | crates/shirabe/src/config.rs | 21 | ||||
| -rw-r--r-- | crates/shirabe/tests/downloader/git_downloader_test.rs | 8 |
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() { |
