nushell-plugins/nu_plugin_mcp/tests/integration_tests.rs
Jesús Pérez d9ef2f0d5b
Some checks failed
Build and Test / Validate Setup (push) Has been cancelled
Build and Test / Build (darwin-amd64) (push) Has been cancelled
Build and Test / Build (darwin-arm64) (push) Has been cancelled
Build and Test / Build (linux-amd64) (push) Has been cancelled
Build and Test / Build (windows-amd64) (push) Has been cancelled
Build and Test / Build (linux-arm64) (push) Has been cancelled
Build and Test / Security Audit (push) Has been cancelled
Build and Test / Package Results (push) Has been cancelled
Build and Test / Quality Gate (push) Has been cancelled
Nightly Build / Check for Changes (push) Has been cancelled
Nightly Build / Validate Setup (push) Has been cancelled
Nightly Build / Nightly Build (darwin-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (darwin-arm64) (push) Has been cancelled
Nightly Build / Nightly Build (linux-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (windows-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (linux-arm64) (push) Has been cancelled
Nightly Build / Create Nightly Pre-release (push) Has been cancelled
Nightly Build / Notify Build Status (push) Has been cancelled
Nightly Build / Nightly Maintenance (push) Has been cancelled
chore: update all plugins to Nushell 0.111.0
- Bump all 18 plugins from 0.110.0 to 0.111.0
  - Update rust-toolchain.toml channel to 1.93.1 (nu 0.111.0 requires ≥1.91.1)

  Fixes:
  - interprocess pin =2.2.x → ^2.3.1 in nu_plugin_mcp, nu_plugin_nats, nu_plugin_typedialog
    (required by nu-plugin-core 0.111.0)
  - nu_plugin_typedialog: BackendType::Web initializer — add open_browser: false field
  - nu_plugin_auth: implement missing user_info_to_value helper referenced in tests

  Scripts:
  - update_all_plugins.nu: fix [package].version update on minor bumps; add [dev-dependencies]
    pass; add nu-plugin-test-support to managed crates
  - download_nushell.nu: rustup override unset before rm -rf on nushell dir replace;
    fix unclosed ) in string interpolation
2026-03-11 03:22:42 +00:00

52 lines
1.5 KiB
Rust

use nu_plugin::Plugin;
use nu_plugin_mcp::McpPlugin;
use std::sync::{Arc, Mutex};
#[test]
fn plugin_command_names_match_expected() {
let plugin = McpPlugin::new();
let cmds = plugin.commands();
let names: Vec<String> = cmds.iter().map(|c| c.name().to_string()).collect();
assert!(names.contains(&"mcp connect".to_string()));
assert!(names.contains(&"mcp tools list".to_string()));
assert!(names.contains(&"mcp tool call".to_string()));
assert!(names.contains(&"mcp disconnect".to_string()));
}
#[test]
fn plugin_version_matches_cargo() {
let plugin = McpPlugin::new();
assert_eq!(plugin.version(), env!("CARGO_PKG_VERSION"));
}
#[test]
fn session_starts_disconnected() {
let plugin = McpPlugin::new();
let guard = plugin.session.lock().unwrap();
assert!(guard.is_none());
}
#[test]
fn session_arc_is_shared() {
let plugin = McpPlugin::new();
let cloned: Arc<Mutex<Option<nu_plugin_mcp::session::McpSession>>> =
Arc::clone(&plugin.session);
// Both point to the same underlying mutex
assert!(Arc::ptr_eq(&plugin.session, &cloned));
}
#[test]
fn connect_to_nonexistent_binary_errors() {
use nu_plugin_mcp::session::McpSession;
match McpSession::connect("/nonexistent/binary_that_does_not_exist", None) {
Err(e) => {
let msg = e.to_string();
assert!(
msg.contains("spawn failed") || msg.contains("No such file"),
"unexpected error: {msg}"
);
}
Ok(_) => panic!("expected spawn to fail"),
}
}