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
- 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
52 lines
1.5 KiB
Rust
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"),
|
|
}
|
|
}
|