diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-18 23:46:34 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-18 23:56:20 +0300 |
| commit | a51a15914a5b29155022a1fd589d2bcc6409cadf (patch) | |
| tree | 8602b6d94c811666d49e4c2aa7636bb6a9b0e8a3 /src/integration/tests.rs | |
| parent | 60c040057e3949ae93ee88d495df09b4b848d22d (diff) | |
fix: support javascript integrations on windows
refs #1531
Diffstat (limited to 'src/integration/tests.rs')
| -rw-r--r-- | src/integration/tests.rs | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/src/integration/tests.rs b/src/integration/tests.rs index 3d578c53..41714ffa 100644 --- a/src/integration/tests.rs +++ b/src/integration/tests.rs @@ -165,21 +165,21 @@ fn home_dir_uses_userprofile_when_home_is_missing() { #[cfg(windows)] #[test] -fn windows_supports_only_cli_hook_integrations() { +fn windows_supports_portable_integrations() { use crate::api::schema::IntegrationTarget; - assert!(!integration_target_supported(IntegrationTarget::Pi)); - assert!(!integration_target_supported(IntegrationTarget::Omp)); - assert!(!integration_target_supported(IntegrationTarget::Opencode)); - assert!(!integration_target_supported(IntegrationTarget::Kilo)); assert!(!integration_target_supported(IntegrationTarget::Hermes)); assert!(!integration_target_supported(IntegrationTarget::Cursor)); assert!(!integration_target_supported(IntegrationTarget::Devin)); assert!(!integration_target_supported(IntegrationTarget::Mastracode)); + assert!(integration_target_supported(IntegrationTarget::Pi)); + assert!(integration_target_supported(IntegrationTarget::Omp)); assert!(integration_target_supported(IntegrationTarget::Claude)); assert!(integration_target_supported(IntegrationTarget::Codex)); assert!(integration_target_supported(IntegrationTarget::Copilot)); + assert!(integration_target_supported(IntegrationTarget::Opencode)); + assert!(integration_target_supported(IntegrationTarget::Kilo)); assert!(integration_target_supported(IntegrationTarget::Droid)); assert!(integration_target_supported(IntegrationTarget::Kimi)); assert!(integration_target_supported(IntegrationTarget::Qodercli)); @@ -187,7 +187,7 @@ fn windows_supports_only_cli_hook_integrations() { #[cfg(windows)] #[test] -fn windows_does_not_offer_unsupported_integrations_even_when_commands_exist() { +fn windows_availability_excludes_unsupported_integrations() { use crate::api::schema::IntegrationTarget; let _lock = integration_env_lock(); @@ -206,10 +206,10 @@ fn windows_does_not_offer_unsupported_integrations_even_when_commands_exist() { fs::write(bin.join("devin.cmd"), "@echo off\r\n").unwrap(); fs::write(bin.join("mastracode.cmd"), "@echo off\r\n").unwrap(); - assert!(!integration_target_available(IntegrationTarget::Pi)); - assert!(!integration_target_available(IntegrationTarget::Omp)); - assert!(!integration_target_available(IntegrationTarget::Opencode)); - assert!(!integration_target_available(IntegrationTarget::Kilo)); + assert!(integration_target_available(IntegrationTarget::Pi)); + assert!(integration_target_available(IntegrationTarget::Omp)); + assert!(integration_target_available(IntegrationTarget::Opencode)); + assert!(integration_target_available(IntegrationTarget::Kilo)); assert!(!integration_target_available(IntegrationTarget::Hermes)); assert!(!integration_target_available(IntegrationTarget::Cursor)); assert!(!integration_target_available(IntegrationTarget::Devin)); @@ -238,10 +238,10 @@ fn windows_install_rejects_unsupported_integration_before_config_lookup() { std::env::remove_var("HOMEDRIVE"); std::env::remove_var("HOMEPATH"); - let err = install_target(IntegrationTarget::Pi).unwrap_err(); + let err = install_target(IntegrationTarget::Hermes).unwrap_err(); assert_eq!( err.to_string(), - "pi integration is not supported on Windows" + "hermes integration is not supported on Windows" ); if let Some(home) = original_home { @@ -487,6 +487,27 @@ fn install_pi_writes_embedded_asset_to_pi_extensions_dir() { } #[test] +fn install_pi_creates_extensions_dir_when_agent_dir_exists() { + let _lock = integration_env_lock(); + let base = unique_base(); + let home = base.join("home"); + let agent_dir = home.join(".pi/agent"); + fs::create_dir_all(&agent_dir).unwrap(); + std::env::set_var("HOME", &home); + + let path = install_pi().unwrap(); + + assert_eq!( + path, + agent_dir.join("extensions").join(PI_EXTENSION_INSTALL_NAME) + ); + assert!(path.is_file()); + + std::env::remove_var("HOME"); + let _ = fs::remove_dir_all(base); +} + +#[test] fn install_pi_uses_pi_coding_agent_dir_env() { let _lock = integration_env_lock(); let base = unique_base(); |
