aboutsummaryrefslogtreecommitdiff
path: root/tests/cli
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-02 02:45:20 +0300
committerGitHub <noreply@github.com>2026-09-02 02:45:20 +0300
commitcc88b3b8e5bb9f7d9f23ed6ae85a52fd7b5b9ed6 (patch)
tree4d37c760099070f1a1488b61c7b7271875aafef8 /tests/cli
parent18e69891dca486d669a584facd80644bb51f54a2 (diff)
feat: add stable client endpoint compatibility (#3509)
* feat: add stable client endpoint compatibility * fix: keep portable-pty patch checks composable * ci: run maintenance checks in pull requests * fix: reject endpoint errors from terminal clients * feat: keep compatible servers running across updates
Diffstat (limited to 'tests/cli')
-rw-r--r--tests/cli/sessions.rs28
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/cli/sessions.rs b/tests/cli/sessions.rs
index cc8474eb..8e5fc48f 100644
--- a/tests/cli/sessions.rs
+++ b/tests/cli/sessions.rs
@@ -398,7 +398,11 @@ fn status_commands_report_client_and_server_versions() {
"stdout: {full_stdout}"
);
assert!(
- full_stdout.contains(" compatible: yes"),
+ full_stdout.contains(" private_protocol_compatible: yes"),
+ "stdout: {full_stdout}"
+ );
+ assert!(
+ full_stdout.contains(" endpoint_compatible: yes"),
"stdout: {full_stdout}"
);
assert!(
@@ -406,6 +410,10 @@ fn status_commands_report_client_and_server_versions() {
"stdout: {full_stdout}"
);
assert!(
+ full_stdout.contains(" server_binary_stale: no"),
+ "stdout: {full_stdout}"
+ );
+ assert!(
full_stdout.contains(&socket_path.display().to_string()),
"stdout: {full_stdout}"
);
@@ -422,7 +430,7 @@ fn status_commands_report_client_and_server_versions() {
"stdout: {server_stdout}"
);
assert!(
- server_stdout.contains("protocol: 22"),
+ server_stdout.contains("private_protocol: 22"),
"stdout: {server_stdout}"
);
@@ -438,6 +446,10 @@ fn status_commands_report_client_and_server_versions() {
"stdout: {client_stdout}"
);
assert!(
+ client_stdout.contains("endpoint_protocol_generation: 1"),
+ "stdout: {client_stdout}"
+ );
+ assert!(
client_stdout.contains("binary: "),
"stdout: {client_stdout}"
);
@@ -445,25 +457,31 @@ fn status_commands_report_client_and_server_versions() {
let full_json = run_cli_json(&socket_path, &["status", "--json"]);
assert_eq!(full_json["client"]["version"], env!("CARGO_PKG_VERSION"));
assert_eq!(full_json["client"]["protocol"], 22);
+ assert_eq!(full_json["client"]["endpoint_protocol_generation"], 1);
assert_eq!(full_json["server"]["status"], "running");
assert_eq!(full_json["server"]["running"], true);
assert_eq!(full_json["server"]["compatible"], true);
+ assert_eq!(full_json["server"]["endpoint_compatible"], true);
assert_eq!(
full_json["server"]["socket"],
socket_path.display().to_string()
);
assert_eq!(full_json["server"]["restart_needed"], false);
+ assert_eq!(full_json["server"]["server_binary_stale"], false);
assert_eq!(full_json["update"]["restart_needed"], false);
+ assert_eq!(full_json["update"]["server_binary_stale"], false);
let server_json = run_cli_json(&socket_path, &["status", "server", "--json"]);
assert_eq!(server_json["status"], "running");
assert_eq!(server_json["version"], env!("CARGO_PKG_VERSION"));
assert_eq!(server_json["protocol"], 22);
assert_eq!(server_json["compatible"], true);
+ assert_eq!(server_json["endpoint_compatible"], true);
let client_json = run_cli_json(&socket_path, &["status", "client", "--json"]);
assert_eq!(client_json["version"], env!("CARGO_PKG_VERSION"));
assert_eq!(client_json["protocol"], 22);
+ assert_eq!(client_json["endpoint_protocol_generation"], 1);
assert!(client_json["binary"]
.as_str()
.is_some_and(|path| !path.is_empty()));
@@ -485,6 +503,10 @@ fn status_reports_not_running_when_server_socket_is_missing() {
assert!(stdout.contains(" status: not running"), "stdout: {stdout}");
assert!(stdout.contains(" restart_needed: no"), "stdout: {stdout}");
assert!(
+ stdout.contains(" server_binary_stale: no"),
+ "stdout: {stdout}"
+ );
+ assert!(
stdout.contains(&socket_path.display().to_string()),
"stdout: {stdout}"
);
@@ -497,7 +519,9 @@ fn status_reports_not_running_when_server_socket_is_missing() {
socket_path.display().to_string()
);
assert_eq!(status_json["server"]["restart_needed"], false);
+ assert_eq!(status_json["server"]["server_binary_stale"], false);
assert_eq!(status_json["update"]["restart_needed"], false);
+ assert_eq!(status_json["update"]["server_binary_stale"], false);
cleanup_test_base(&base);
}