aboutsummaryrefslogtreecommitdiff
path: root/src/integration/tests.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-18 23:46:34 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-18 23:56:20 +0300
commita51a15914a5b29155022a1fd589d2bcc6409cadf (patch)
tree8602b6d94c811666d49e4c2aa7636bb6a9b0e8a3 /src/integration/tests.rs
parent60c040057e3949ae93ee88d495df09b4b848d22d (diff)
fix: support javascript integrations on windows
refs #1531
Diffstat (limited to 'src/integration/tests.rs')
-rw-r--r--src/integration/tests.rs45
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();