aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/platform
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-22 02:09:59 +0900
committernsfisis <nsfisis@gmail.com>2026-06-22 02:09:59 +0900
commit822d9a872807a92a5337ee8b7bab96dc9845cdbb (patch)
tree4931365df5978caffade69cad2154718a9076f66 /crates/shirabe/tests/platform
parentf691b864b687f251c3b266e8cff2774d730567ba (diff)
downloadphp-shirabe-822d9a872807a92a5337ee8b7bab96dc9845cdbb.tar.gz
php-shirabe-822d9a872807a92a5337ee8b7bab96dc9845cdbb.tar.zst
php-shirabe-822d9a872807a92a5337ee8b7bab96dc9845cdbb.zip
test: port more test cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/platform')
-rw-r--r--crates/shirabe/tests/platform/hhvm_detector_test.rs53
1 files changed, 49 insertions, 4 deletions
diff --git a/crates/shirabe/tests/platform/hhvm_detector_test.rs b/crates/shirabe/tests/platform/hhvm_detector_test.rs
index 1b35450..12a966a 100644
--- a/crates/shirabe/tests/platform/hhvm_detector_test.rs
+++ b/crates/shirabe/tests/platform/hhvm_detector_test.rs
@@ -1,6 +1,11 @@
//! ref: composer/tests/Composer/Test/Platform/HhvmDetectorTest.php
use shirabe::platform::hhvm_detector::HhvmDetector;
+use shirabe::util::Platform;
+use shirabe::util::ProcessExecutor;
+use shirabe_external_packages::symfony::process::ExecutableFinder;
+use shirabe_php_shim::{PhpMixed, defined};
+use shirabe_semver::version_parser::VersionParser;
fn set_up() -> HhvmDetector {
let hhvm_detector = HhvmDetector::new(None, None);
@@ -9,15 +14,55 @@ fn set_up() -> HhvmDetector {
}
#[test]
-#[ignore = "skipped unless running under HHVM (HHVM_VERSION_ID defined), which never holds here"]
+#[ignore = "requires HHVM_VERSION_ID constant, which the shim does not define"]
fn test_hhvm_version_when_executing_in_hhvm() {
let _hhvm_detector = set_up();
todo!()
}
+#[ignore]
#[test]
-#[ignore = "needs an installed hhvm executable plus ExecutableFinder/ProcessExecutor; skipped in PHP when hhvm is absent"]
fn test_hhvm_version_when_executing_in_php() {
- let _hhvm_detector = set_up();
- todo!()
+ let mut hhvm_detector = set_up();
+ if defined("HHVM_VERSION_ID") {
+ // markTestSkipped('Running with HHVM')
+ return;
+ }
+ if Platform::is_windows() {
+ // markTestSkipped('Test does not run on Windows')
+ return;
+ }
+ let finder = ExecutableFinder::new();
+ let hhvm = finder.find("hhvm", None, &[]);
+ let hhvm = match hhvm {
+ Some(hhvm) => hhvm,
+ None => {
+ // markTestSkipped('HHVM is not installed')
+ return;
+ }
+ };
+
+ let detected_version = hhvm_detector.get_version();
+ assert!(detected_version.is_some(), "Failed to detect HHVM version");
+ let detected_version = detected_version.unwrap();
+
+ let mut process = ProcessExecutor::new(None);
+ let mut version = PhpMixed::Null;
+ let cmd = format!(
+ "{} --php -d hhvm.jit=0 -r \"echo HHVM_VERSION;\" 2>/dev/null",
+ ProcessExecutor::escape(&hhvm)
+ );
+ let exit_code = process
+ .execute(cmd.as_str(), Some(&mut version), ())
+ .unwrap();
+ assert_eq!(0, exit_code);
+
+ let version = version
+ .as_string()
+ .map(|s| s.to_string())
+ .unwrap_or_default();
+ assert_eq!(
+ VersionParser.normalize(&version, None).unwrap(),
+ VersionParser.normalize(&detected_version, None).unwrap()
+ );
}