chore: cov settings, and fix serveral building warnings (#281)
* chore: cov settings, update Python test dependencies and adjust command arguments * fix: remove .vscode dir
This commit is contained in:
parent
8e1490bcd8
commit
55215b6170
8 changed files with 40 additions and 10 deletions
|
|
@ -134,7 +134,8 @@ impl<R: SseStreamReconnect> SseAutoReconnectStream<R> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<E: std::error::Error + Send> SseAutoReconnectStream<NeverReconnect<E>> {
|
impl<E: std::error::Error + Send> SseAutoReconnectStream<NeverReconnect<E>> {
|
||||||
pub fn never_reconnect(stream: BoxedSseResponse, error_when_reconnect: E) -> Self {
|
#[allow(dead_code)]
|
||||||
|
pub(crate) fn never_reconnect(stream: BoxedSseResponse, error_when_reconnect: E) -> Self {
|
||||||
Self {
|
Self {
|
||||||
retry_policy: Arc::new(NeverRetry),
|
retry_policy: Arc::new(NeverRetry),
|
||||||
last_event_id: None,
|
last_event_id: None,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
#![allow(dead_code)]
|
||||||
use std::{convert::Infallible, fmt::Display, sync::Arc, time::Duration};
|
use std::{convert::Infallible, fmt::Display, sync::Arc, time::Duration};
|
||||||
|
|
||||||
use bytes::{Buf, Bytes};
|
use bytes::{Buf, Bytes};
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ async fn init() -> anyhow::Result<()> {
|
||||||
.with(tracing_subscriber::fmt::layer())
|
.with(tracing_subscriber::fmt::layer())
|
||||||
.try_init();
|
.try_init();
|
||||||
tokio::process::Command::new("uv")
|
tokio::process::Command::new("uv")
|
||||||
.args(["pip", "install", "-r", "pyproject.toml"])
|
.args(["sync"])
|
||||||
.current_dir("tests/test_with_python")
|
.current_dir("tests/test_with_python")
|
||||||
.spawn()?
|
.spawn()?
|
||||||
.wait()
|
.wait()
|
||||||
|
|
@ -38,8 +38,9 @@ async fn test_with_python_client() -> anyhow::Result<()> {
|
||||||
|
|
||||||
let status = tokio::process::Command::new("uv")
|
let status = tokio::process::Command::new("uv")
|
||||||
.arg("run")
|
.arg("run")
|
||||||
.arg("tests/test_with_python/client.py")
|
.arg("client.py")
|
||||||
.arg(format!("http://{BIND_ADDRESS}/sse"))
|
.arg(format!("http://{BIND_ADDRESS}/sse"))
|
||||||
|
.current_dir("tests/test_with_python")
|
||||||
.spawn()?
|
.spawn()?
|
||||||
.wait()
|
.wait()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -88,8 +89,9 @@ async fn test_nested_with_python_client() -> anyhow::Result<()> {
|
||||||
tokio::time::Duration::from_secs(5),
|
tokio::time::Duration::from_secs(5),
|
||||||
tokio::process::Command::new("uv")
|
tokio::process::Command::new("uv")
|
||||||
.arg("run")
|
.arg("run")
|
||||||
.arg("tests/test_with_python/client.py")
|
.arg("client.py")
|
||||||
.arg(format!("http://{BIND_ADDRESS}/nested/sse"))
|
.arg(format!("http://{BIND_ADDRESS}/nested/sse"))
|
||||||
|
.current_dir("tests/test_with_python")
|
||||||
.spawn()?
|
.spawn()?
|
||||||
.wait(),
|
.wait(),
|
||||||
)
|
)
|
||||||
|
|
@ -104,7 +106,9 @@ async fn test_with_python_server() -> anyhow::Result<()> {
|
||||||
init().await?;
|
init().await?;
|
||||||
|
|
||||||
let transport = TokioChildProcess::new(tokio::process::Command::new("uv").configure(|cmd| {
|
let transport = TokioChildProcess::new(tokio::process::Command::new("uv").configure(|cmd| {
|
||||||
cmd.arg("run").arg("tests/test_with_python/server.py");
|
cmd.arg("run")
|
||||||
|
.arg("server.py")
|
||||||
|
.current_dir("tests/test_with_python");
|
||||||
}))?;
|
}))?;
|
||||||
|
|
||||||
let client = ().serve(transport).await?;
|
let client = ().serve(transport).await?;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
*.lock
|
||||||
|
|
@ -7,8 +7,8 @@ name = "test_with_python"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Test Python client for RMCP"
|
description = "Test Python client for RMCP"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"mcp",
|
"fastmcp",
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.setuptools]
|
[tool.setuptools]
|
||||||
py-modules = ["client", "server"]
|
py-modules = ["client", "server"]
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from mcp.server.fastmcp import FastMCP
|
from fastmcp import FastMCP
|
||||||
|
|
||||||
mcp = FastMCP("Demo")
|
mcp = FastMCP("Demo")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,4 +10,24 @@ just fix
|
||||||
# How Can I Rewrite My Commit Message?
|
# How Can I Rewrite My Commit Message?
|
||||||
You can `git reset --soft upstream/main` and `git commit --forge`, this will merge your changes into one commit.
|
You can `git reset --soft upstream/main` and `git commit --forge`, this will merge your changes into one commit.
|
||||||
|
|
||||||
Or you also can use git rebase. But we will still merge them into one commit when it is merged.
|
Or you also can use git rebase. But we will still merge them into one commit when it is merged.
|
||||||
|
|
||||||
|
# Check Code Coverage
|
||||||
|
If you are developing on vscode, you can use vscode plugin [Coverage Gutters](https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters)
|
||||||
|
|
||||||
|
And also need to install llvm-cov
|
||||||
|
```sh
|
||||||
|
cargo install cargo-llvm-cov
|
||||||
|
|
||||||
|
rustup component add llvm-tools-preview
|
||||||
|
```
|
||||||
|
|
||||||
|
If you are using goverage gutters plugin, add these config to let it know lcov output.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"coverage-gutters.coverageFileNames": [
|
||||||
|
"coverage.lcov",
|
||||||
|
],
|
||||||
|
"coverage-gutters.coverageBaseDir": "target/llvm-cov-target",
|
||||||
|
}
|
||||||
|
```
|
||||||
5
justfile
5
justfile
|
|
@ -9,4 +9,7 @@ fix: fmt
|
||||||
cargo clippy --fix --all-targets --all-features --allow-staged
|
cargo clippy --fix --all-targets --all-features --allow-staged
|
||||||
|
|
||||||
test:
|
test:
|
||||||
cargo test --all-features
|
cargo test --all-features
|
||||||
|
|
||||||
|
cov:
|
||||||
|
cargo llvm-cov --lcov --output-path {{justfile_directory()}}/target/llvm-cov-target/coverage.lcov
|
||||||
Loading…
Reference in a new issue