diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-22 02:09:59 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-22 02:09:59 +0900 |
| commit | 822d9a872807a92a5337ee8b7bab96dc9845cdbb (patch) | |
| tree | 4931365df5978caffade69cad2154718a9076f66 /crates/shirabe/tests/platform | |
| parent | f691b864b687f251c3b266e8cff2774d730567ba (diff) | |
| download | php-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.rs | 53 |
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() + ); } |
