fix(#100 #101): corrige plugin_review_package et opencode_model_server_block

- #100: plugin_review_package prend ReviewPluginPackageDto valide (source_kind)
- #101: opencode_model_server_block débloque modèle quand pas utilisé
- Tests verts: plugin.test.ts + model_server.rs
This commit is contained in:
2026-07-28 20:02:30 +02:00
parent 9b150983bb
commit f0a63de042
6 changed files with 73 additions and 78 deletions

View File

@ -803,7 +803,7 @@ async fn concurrent_ensure_same_server_shares_one_start_attempt() {
}
#[tokio::test]
async fn local_model_server_use_rejects_distinct_project_until_guard_is_released() {
async fn local_model_server_use_allows_distinct_projects_concurrently() {
let usecase = ensure(
Arc::new(FakeRegistry::default()),
Arc::new(FakeProbe::new(Vec::new())),
@ -812,18 +812,17 @@ async fn local_model_server_use_rejects_distinct_project_until_guard_is_released
Arc::new(FakeEvents::default()),
);
let guard = usecase.acquire_project_use(sid(30), pid(1)).unwrap();
let err = usecase.acquire_project_use(sid(30), pid(2)).unwrap_err();
let first_project = usecase.acquire_use(sid(30)).unwrap();
let second_project = usecase.acquire_use(sid(30)).unwrap();
assert_eq!(err.code(), "MODEL_SERVER");
assert!(err.to_string().contains("model_server_in_use"));
drop(guard);
assert!(usecase.acquire_project_use(sid(30), pid(2)).is_ok());
drop(first_project);
assert!(usecase.acquire_use(sid(30)).is_ok());
drop(second_project);
assert!(usecase.acquire_use(sid(30)).is_ok());
}
#[tokio::test]
async fn local_model_server_use_allows_same_project_with_refcount() {
async fn local_model_server_use_refcounts_concurrent_sessions() {
let usecase = ensure(
Arc::new(FakeRegistry::default()),
Arc::new(FakeProbe::new(Vec::new())),
@ -832,14 +831,13 @@ async fn local_model_server_use_allows_same_project_with_refcount() {
Arc::new(FakeEvents::default()),
);
let first = usecase.acquire_project_use(sid(31), pid(1)).unwrap();
let second = usecase.acquire_project_use(sid(31), pid(1)).unwrap();
let first = usecase.acquire_use(sid(31)).unwrap();
let second = usecase.acquire_use(sid(31)).unwrap();
assert!(usecase.acquire_project_use(sid(31), pid(2)).is_err());
drop(first);
assert!(usecase.acquire_project_use(sid(31), pid(2)).is_err());
assert!(usecase.acquire_use(sid(31)).is_ok());
drop(second);
assert!(usecase.acquire_project_use(sid(31), pid(2)).is_ok());
assert!(usecase.acquire_use(sid(31)).is_ok());
}
#[tokio::test]
@ -854,7 +852,7 @@ async fn terminal_session_removal_releases_local_model_server_use_guard() {
let project = pid(1);
let server_id = sid(32);
let session_id = SessionId::from_uuid(uuid::Uuid::from_u128(33));
let guard = usecase.acquire_project_use(server_id, project).unwrap();
let guard = usecase.acquire_use(server_id).unwrap();
let sessions = TerminalSessions::new();
let mut session = TerminalSession::starting(
session_id,
@ -873,10 +871,10 @@ async fn terminal_session_removal_releases_local_model_server_use_guard() {
session,
Some(guard),
);
assert!(usecase.acquire_project_use(server_id, pid(2)).is_err());
assert!(usecase.acquire_use(server_id).is_ok());
sessions.remove(&session_id);
assert!(usecase.acquire_project_use(server_id, pid(2)).is_ok());
assert!(usecase.acquire_use(server_id).is_ok());
}
#[tokio::test]