aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/command/diagnose_command_test.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-20 08:13:12 +0900
committernsfisis <nsfisis@gmail.com>2026-07-20 08:13:12 +0900
commit087865ef50283350a3cc74a5363ba44fa7dbe5c5 (patch)
treeb27ded5001c46feb587839771347389f609a7c57 /crates/shirabe/tests/command/diagnose_command_test.rs
parenta9dc11a1a0d8d442ab85b3eeb8791f2a8069d528 (diff)
downloadphp-shirabe-087865ef50283350a3cc74a5363ba44fa7dbe5c5.tar.gz
php-shirabe-087865ef50283350a3cc74a5363ba44fa7dbe5c5.tar.zst
php-shirabe-087865ef50283350a3cc74a5363ba44fa7dbe5c5.zip
feat(php-rpc): implement phpinfo() capture over RPC
DiagnoseCommand::check_platform needed phpinfo() output but shirabe-php-shim's ob_start()/phpinfo()/ob_get_clean() are unmodeled todo!()s. Add a phpinfo dispatch entry to the PHP worker (capturing output the same way extension_info already does) and a get_phpinfo() wrapper, then switch check_platform to call it directly. This unblocks the phpinfo-related panic in diagnose; the ignored tests now hit a separate RefCell double-borrow bug in check_http, so their ignore reasons are updated to point at that instead.
Diffstat (limited to 'crates/shirabe/tests/command/diagnose_command_test.rs')
-rw-r--r--crates/shirabe/tests/command/diagnose_command_test.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/crates/shirabe/tests/command/diagnose_command_test.rs b/crates/shirabe/tests/command/diagnose_command_test.rs
index 95c713ff..521cea84 100644
--- a/crates/shirabe/tests/command/diagnose_command_test.rs
+++ b/crates/shirabe/tests/command/diagnose_command_test.rs
@@ -7,11 +7,11 @@ use shirabe_php_shim::PhpMixed;
#[test]
#[serial]
-#[ignore = "DiagnoseCommand::check_platform captures phpinfo() via ob_start()/ob_get_clean(), \
- which are todo!() in shirabe-php-shim (PHP output buffering and runtime introspection \
- are unmodeled), so the command panics before producing output; beyond that, diagnose \
- checks live http/https connectivity to packagist and the github.com rate limit, so the \
- test also requires real network access (as the PHP original does)"]
+#[ignore = "DiagnoseCommand::check_http passes &config.borrow() into a call chain that reaches \
+ CurlDownloader::download, which then does self.config.borrow_mut() on the same \
+ Config RefCell, panicking with 'RefCell already borrowed'; beyond that, diagnose checks \
+ live http/https connectivity to packagist and the github.com rate limit, so the test \
+ also requires real network access (as the PHP original does)"]
fn test_cmd_fail() {
let tear_down = init_temp_composer(
Some(&serde_json::json!({ "name": "foo/bar", "description": "test pkg" })),
@@ -51,11 +51,11 @@ Checking github.com rate limit: "
#[test]
#[serial]
-#[ignore = "DiagnoseCommand::check_platform captures phpinfo() via ob_start()/ob_get_clean(), \
- which are todo!() in shirabe-php-shim (PHP output buffering and runtime introspection \
- are unmodeled), so the command panics before producing output; beyond that, diagnose \
- checks live http/https connectivity to packagist and the github.com rate limit, so the \
- test also requires real network access (as the PHP original does)"]
+#[ignore = "DiagnoseCommand::check_http passes &config.borrow() into a call chain that reaches \
+ CurlDownloader::download, which then does self.config.borrow_mut() on the same \
+ Config RefCell, panicking with 'RefCell already borrowed'; beyond that, diagnose checks \
+ live http/https connectivity to packagist and the github.com rate limit, so the test \
+ also requires real network access (as the PHP original does)"]
fn test_cmd_success() {
let tear_down = init_temp_composer(
Some(&serde_json::json!({