commit 20f4659909b8d65f17cd8b40f19504df09679e95
parent bb2a16356704ab439b979bc0ed73853e2bca606e
Author: triesap <tyson@radroots.org>
Date: Sat, 25 Apr 2026 06:57:39 +0000
tests: remove ambient workspace config setup
Diffstat:
9 files changed, 135 insertions(+), 88 deletions(-)
diff --git a/src/runtime/config.rs b/src/runtime/config.rs
@@ -1931,23 +1931,33 @@ RADROOTS_CLI_LOGGING_STDOUT=false
fn user_relay_config_overrides_workspace_relay_config() {
let temp = tempdir().expect("tempdir");
let workspace_root = temp.path().join("workspace");
+ let repo_local_root = workspace_root.join("infra/local/runtime/radroots");
+ let app_config_dir = repo_local_root.join("config/apps/cli");
let user_home = temp.path().join("home");
- fs::create_dir_all(workspace_root.join("infra/local/runtime/radroots"))
- .expect("workspace config dir");
- fs::create_dir_all(user_home.join(".radroots/config/apps/cli")).expect("app config dir");
+ fs::create_dir_all(&repo_local_root).expect("workspace config dir");
+ fs::create_dir_all(&app_config_dir).expect("app config dir");
fs::write(
- workspace_root.join("infra/local/runtime/radroots/config.toml"),
+ repo_local_root.join("config.toml"),
"[relay]\nurls = [\"wss://relay.workspace\"]\npublish_policy = \"any\"\n",
)
.expect("write workspace config");
fs::write(
- user_home.join(".radroots/config/apps/cli/config.toml"),
+ app_config_dir.join("config.toml"),
"[relay]\nurls = [\"wss://relay.user\", \"wss://relay.workspace\"]\n",
)
.expect("write user config");
let env = MapEnvironment {
- values: BTreeMap::new(),
+ values: BTreeMap::from([
+ (
+ "RADROOTS_CLI_PATHS_PROFILE".to_owned(),
+ "repo_local".to_owned(),
+ ),
+ (
+ "RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT".to_owned(),
+ repo_local_root.display().to_string(),
+ ),
+ ]),
current_dir: workspace_root,
path_resolver: RadrootsPathResolver::new(
RadrootsPlatform::Linux,
@@ -1978,23 +1988,33 @@ RADROOTS_CLI_LOGGING_STDOUT=false
fn user_hyf_config_overrides_workspace_hyf_config() {
let temp = tempdir().expect("tempdir");
let workspace_root = temp.path().join("workspace");
+ let repo_local_root = workspace_root.join("infra/local/runtime/radroots");
+ let app_config_dir = repo_local_root.join("config/apps/cli");
let user_home = temp.path().join("home");
- fs::create_dir_all(workspace_root.join("infra/local/runtime/radroots"))
- .expect("workspace config dir");
- fs::create_dir_all(user_home.join(".radroots/config/apps/cli")).expect("app config dir");
+ fs::create_dir_all(&repo_local_root).expect("workspace config dir");
+ fs::create_dir_all(&app_config_dir).expect("app config dir");
fs::write(
- workspace_root.join("infra/local/runtime/radroots/config.toml"),
+ repo_local_root.join("config.toml"),
"[hyf]\nenabled = false\nexecutable = \"workspace-hyfd\"\n",
)
.expect("write workspace config");
fs::write(
- user_home.join(".radroots/config/apps/cli/config.toml"),
+ app_config_dir.join("config.toml"),
"[hyf]\nenabled = true\nexecutable = \"user-hyfd\"\n",
)
.expect("write user config");
let env = MapEnvironment {
- values: BTreeMap::new(),
+ values: BTreeMap::from([
+ (
+ "RADROOTS_CLI_PATHS_PROFILE".to_owned(),
+ "repo_local".to_owned(),
+ ),
+ (
+ "RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT".to_owned(),
+ repo_local_root.display().to_string(),
+ ),
+ ]),
current_dir: workspace_root,
path_resolver: RadrootsPathResolver::new(
RadrootsPlatform::Linux,
@@ -2023,12 +2043,13 @@ RADROOTS_CLI_LOGGING_STDOUT=false
fn user_capability_binding_overrides_workspace_binding() {
let temp = tempdir().expect("tempdir");
let workspace_root = temp.path().join("workspace");
+ let repo_local_root = workspace_root.join("infra/local/runtime/radroots");
+ let app_config_dir = repo_local_root.join("config/apps/cli");
let user_home = temp.path().join("home");
- fs::create_dir_all(workspace_root.join("infra/local/runtime/radroots"))
- .expect("workspace config dir");
- fs::create_dir_all(user_home.join(".radroots/config/apps/cli")).expect("app config dir");
+ fs::create_dir_all(&repo_local_root).expect("workspace config dir");
+ fs::create_dir_all(&app_config_dir).expect("app config dir");
fs::write(
- workspace_root.join("infra/local/runtime/radroots/config.toml"),
+ repo_local_root.join("config.toml"),
r#"
[[capability_binding]]
capability = "inference.hyf_stdio"
@@ -2039,7 +2060,7 @@ target = "workspace-hyf"
)
.expect("write workspace config");
fs::write(
- user_home.join(".radroots/config/apps/cli/config.toml"),
+ app_config_dir.join("config.toml"),
r#"
[[capability_binding]]
capability = "inference.hyf_stdio"
@@ -2051,7 +2072,16 @@ target = "bin/user-hyfd"
.expect("write user config");
let env = MapEnvironment {
- values: BTreeMap::new(),
+ values: BTreeMap::from([
+ (
+ "RADROOTS_CLI_PATHS_PROFILE".to_owned(),
+ "repo_local".to_owned(),
+ ),
+ (
+ "RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT".to_owned(),
+ repo_local_root.display().to_string(),
+ ),
+ ]),
current_dir: workspace_root,
path_resolver: RadrootsPathResolver::new(
RadrootsPlatform::Linux,
@@ -2087,12 +2117,12 @@ target = "bin/user-hyfd"
fn invalid_capability_binding_provider_fails() {
let temp = tempdir().expect("tempdir");
let workspace_root = temp.path().join("workspace");
+ let repo_local_root = workspace_root.join("infra/local/runtime/radroots");
let user_home = temp.path().join("home");
- fs::create_dir_all(workspace_root.join("infra/local/runtime/radroots"))
- .expect("workspace config dir");
+ fs::create_dir_all(&repo_local_root).expect("workspace config dir");
fs::create_dir_all(user_home.join(".radroots/config/apps/cli")).expect("app config dir");
fs::write(
- workspace_root.join("infra/local/runtime/radroots/config.toml"),
+ repo_local_root.join("config.toml"),
r#"
[[capability_binding]]
capability = "write_plane.trade_jsonrpc"
@@ -2104,7 +2134,16 @@ target = "https://rpc.workspace.test/jsonrpc"
.expect("write workspace config");
let env = MapEnvironment {
- values: BTreeMap::new(),
+ values: BTreeMap::from([
+ (
+ "RADROOTS_CLI_PATHS_PROFILE".to_owned(),
+ "repo_local".to_owned(),
+ ),
+ (
+ "RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT".to_owned(),
+ repo_local_root.display().to_string(),
+ ),
+ ]),
current_dir: workspace_root,
path_resolver: RadrootsPathResolver::new(
RadrootsPlatform::Linux,
diff --git a/tests/listing.rs b/tests/listing.rs
@@ -59,13 +59,13 @@ fn cli_command_in(workdir: &Path) -> Command {
command
}
-fn write_workspace_config(workdir: &Path, contents: &str) {
- let config_dir = workdir.join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
- fs::write(config_dir.join("config.toml"), contents).expect("write workspace config");
+fn write_user_config(workdir: &Path, contents: &str) {
+ let config_dir = workdir.join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
+ fs::write(config_dir.join("config.toml"), contents).expect("write user config");
}
-fn workspace_config_with_write_plane(extra: &str, url: &str) -> String {
+fn config_with_write_plane(extra: &str, url: &str) -> String {
let mut rendered = String::new();
if !extra.trim().is_empty() {
rendered.push_str(extra.trim());
@@ -501,9 +501,9 @@ fn listing_publish_and_update_use_durable_bridge_publish() {
other => MockRpcResponse::rpc_error(-32601, &format!("unexpected method: {other}")),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let publish_output = cli_command_in(dir.path())
@@ -652,9 +652,9 @@ fn listing_archive_and_dry_run_are_truthful() {
other => MockRpcResponse::rpc_error(-32601, &format!("unexpected method: {other}")),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let archive_output = cli_command_in(dir.path())
@@ -824,9 +824,9 @@ fn listing_publish_uses_myc_binding_before_resolving_daemon_signer_session() {
other => MockRpcResponse::rpc_error(-32601, &format!("unexpected method: {other}")),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane(
+ config_with_write_plane(
format!(
r#"
[[capability_binding]]
@@ -975,9 +975,9 @@ fn listing_publish_rejects_myc_binding_that_resolves_the_wrong_actor() {
recorded.lock().expect("recorded").push(body.clone());
MockRpcResponse::rpc_error(-32601, "daemon write path should not be reached")
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane(
+ config_with_write_plane(
format!(
r#"
[[capability_binding]]
@@ -1107,9 +1107,9 @@ fn listing_publish_rejects_daemon_session_with_mismatched_myc_authority() {
_ => MockRpcResponse::rpc_error(-32601, "unexpected rpc method"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane(
+ config_with_write_plane(
format!(
r#"
[[capability_binding]]
@@ -1217,9 +1217,9 @@ fn listing_publish_without_matching_signer_session_exits_unconfigured() {
other => MockRpcResponse::rpc_error(-32601, &format!("unexpected method: {other}")),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let publish_output = cli_command_in(dir.path())
@@ -1314,9 +1314,9 @@ fn listing_publish_rejects_requested_session_that_mismatches_seller_pubkey() {
other => MockRpcResponse::rpc_error(-32601, &format!("unexpected method: {other}")),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let publish_output = cli_command_in(dir.path())
diff --git a/tests/market.rs b/tests/market.rs
@@ -190,13 +190,13 @@ fn market_update_stays_honest_about_unavailable_ingest() {
.expect("run local init");
assert!(init.status.success());
- let config_dir = dir.path().join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
+ let config_dir = dir.path().join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
fs::write(
config_dir.join("config.toml"),
"[relay]\nurls = [\"wss://relay.one\"]\npublish_policy = \"any\"\n",
)
- .expect("write workspace config");
+ .expect("write user config");
let json_output = cli_command_in(dir.path())
.args(["--json", "market", "update"])
diff --git a/tests/myc_status.rs b/tests/myc_status.rs
@@ -42,10 +42,10 @@ fn cli_command_in(workdir: &Path) -> Command {
command
}
-fn write_workspace_config(workdir: &Path, contents: &str) {
- let config_dir = workdir.join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
- fs::write(config_dir.join("config.toml"), contents).expect("write workspace config");
+fn write_user_config(workdir: &Path, contents: &str) {
+ let config_dir = workdir.join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
+ fs::write(config_dir.join("config.toml"), contents).expect("write user config");
}
#[test]
@@ -201,7 +201,7 @@ fn signer_status_reports_ready_for_configured_myc_managed_account_binding() {
let signer_session_ref = payload["signer_backend"]["remote_sessions"][0]["connection_id"]
.as_str()
.expect("signer session ref");
- write_workspace_config(
+ write_user_config(
dir.path(),
format!(
r#"
@@ -234,7 +234,7 @@ signer_session_ref = "{signer_session_ref}"
let json: Value = serde_json::from_slice(output.stdout.as_slice()).expect("json output");
assert_eq!(json["mode"], "myc");
assert_eq!(json["state"], "ready");
- assert_eq!(json["source"], "workspace config [[capability_binding]]");
+ assert_eq!(json["source"], "user config [[capability_binding]]");
assert_eq!(json["signer_account_id"], managed_account_ref);
assert_eq!(json["binding"]["state"], "ready");
assert_eq!(
@@ -287,7 +287,7 @@ fn signer_status_reports_unsupported_for_explicit_endpoint_binding() {
dir.path(),
successful_status_script(sample_status_payload(true).to_string()).as_str(),
);
- write_workspace_config(
+ write_user_config(
dir.path(),
r#"
[[capability_binding]]
@@ -331,7 +331,7 @@ fn signer_status_reports_ambiguous_for_accountless_myc_binding() {
dir.path(),
successful_status_script(payload.to_string()).as_str(),
);
- write_workspace_config(
+ write_user_config(
dir.path(),
r#"
[[capability_binding]]
@@ -377,7 +377,7 @@ fn signer_status_reports_unauthorized_for_session_without_sign_event_permission(
let signer_session_ref = payload["signer_backend"]["remote_sessions"][0]["connection_id"]
.as_str()
.expect("signer session ref");
- write_workspace_config(
+ write_user_config(
dir.path(),
format!(
r#"
@@ -429,7 +429,7 @@ fn signer_status_reports_unavailable_for_missing_bound_session() {
let managed_account_ref = payload["signer_backend"]["local_signer"]["account_id"]
.as_str()
.expect("managed account ref");
- write_workspace_config(
+ write_user_config(
dir.path(),
format!(
r#"
diff --git a/tests/order.rs b/tests/order.rs
@@ -63,10 +63,10 @@ fn order_command_in(workdir: &Path) -> Command {
command
}
-fn write_workspace_config(workdir: &Path, contents: &str) {
- let config_dir = workdir.join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
- fs::write(config_dir.join("config.toml"), contents).expect("write workspace config");
+fn write_user_config(workdir: &Path, contents: &str) {
+ let config_dir = workdir.join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
+ fs::write(config_dir.join("config.toml"), contents).expect("write user config");
}
fn init_local_replica(workdir: &Path) {
@@ -153,7 +153,7 @@ fn run_order_lookup_failure(seed: impl FnOnce(&Path), expected_stderr: &str) {
assert_no_order_drafts(dir.path());
}
-fn workspace_config_with_write_plane(extra: &str, url: &str) -> String {
+fn config_with_write_plane(extra: &str, url: &str) -> String {
let mut rendered = String::new();
if !extra.trim().is_empty() {
rendered.push_str(extra.trim());
@@ -823,9 +823,9 @@ fn order_submit_persists_submission_metadata_and_reports_job() {
other => panic!("unexpected mock rpc method {other}"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let submit_output = order_command_in(dir.path())
@@ -939,9 +939,9 @@ fn order_submit_quiet_reports_submitted_order_id() {
other => panic!("unexpected mock rpc method {other}"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let submit_output = order_command_in(dir.path())
@@ -1036,9 +1036,9 @@ fn order_submit_watch_appends_human_watch_snapshots() {
other => panic!("unexpected mock rpc method {other}"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let output = order_command_in(dir.path())
@@ -1286,9 +1286,9 @@ fn order_submit_uses_myc_binding_before_resolving_daemon_signer_session() {
other => panic!("unexpected mock rpc method {other}"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane(
+ config_with_write_plane(
format!(
r#"
[[capability_binding]]
@@ -1428,9 +1428,9 @@ fn order_submit_rejects_myc_binding_that_resolves_the_wrong_actor() {
});
panic!("daemon write path should not be reached");
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane(
+ config_with_write_plane(
format!(
r#"
[[capability_binding]]
@@ -1537,9 +1537,9 @@ fn order_submit_without_unique_matching_signer_session_exits_unconfigured() {
other => panic!("unexpected mock rpc method {other}"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let submit_output = order_command_in(dir.path())
@@ -1613,9 +1613,9 @@ fn order_submit_rejects_requested_session_that_mismatches_buyer_pubkey() {
other => panic!("unexpected mock rpc method {other}"),
}
});
- write_workspace_config(
+ write_user_config(
dir.path(),
- workspace_config_with_write_plane("", server.url().as_str()).as_str(),
+ config_with_write_plane("", server.url().as_str()).as_str(),
);
let submit_output = order_command_in(dir.path())
diff --git a/tests/relay_net.rs b/tests/relay_net.rs
@@ -50,6 +50,8 @@ fn relay_ls_json_reports_workspace_configured_relays() {
.expect("write workspace config");
let output = cli_command_in(dir.path())
+ .env("RADROOTS_CLI_PATHS_PROFILE", "repo_local")
+ .env("RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT", &config_dir)
.args(["--json", "relay", "ls"])
.output()
.expect("run relay ls");
diff --git a/tests/runtime_show.rs b/tests/runtime_show.rs
@@ -640,6 +640,8 @@ fn config_show_json_reads_workspace_relay_config() {
.expect("write workspace config");
let output = runtime_show_command_in(dir.path())
+ .env("RADROOTS_CLI_PATHS_PROFILE", "repo_local")
+ .env("RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT", &config_dir)
.args(["--json", "config", "show"])
.output()
.expect("run config show");
@@ -665,6 +667,8 @@ fn config_show_reads_workspace_rpc_config() {
.expect("write workspace config");
let output = runtime_show_command_in(dir.path())
+ .env("RADROOTS_CLI_PATHS_PROFILE", "repo_local")
+ .env("RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT", &config_dir)
.args(["--json", "config", "show"])
.output()
.expect("run config show");
@@ -679,7 +683,7 @@ fn config_show_reads_workspace_rpc_config() {
fn config_show_reports_explicit_capability_bindings() {
let dir = tempdir().expect("tempdir");
let workspace_config_dir = dir.path().join("infra/local/runtime/radroots");
- let user_config_dir = config_root(dir.path()).join("apps/cli");
+ let user_config_dir = workspace_config_dir.join("config/apps/cli");
fs::create_dir_all(&workspace_config_dir).expect("workspace config dir");
fs::create_dir_all(&user_config_dir).expect("user config dir");
fs::write(
@@ -726,6 +730,8 @@ target = "bin/hyfd-user"
.expect("write user config");
let output = runtime_show_command_in(dir.path())
+ .env("RADROOTS_CLI_PATHS_PROFILE", "repo_local")
+ .env("RADROOTS_CLI_PATHS_REPO_LOCAL_ROOT", &workspace_config_dir)
.args(["--json", "config", "show"])
.output()
.expect("run config show");
diff --git a/tests/sync.rs b/tests/sync.rs
@@ -88,13 +88,13 @@ fn sync_pull_and_push_are_honestly_narrowed_until_relay_plane_lands() {
.output()
.expect("run local init");
assert!(init.status.success());
- let config_dir = dir.path().join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
+ let config_dir = dir.path().join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
fs::write(
config_dir.join("config.toml"),
"[relay]\nurls = [\"wss://relay.one\"]\npublish_policy = \"any\"\n",
)
- .expect("write workspace config");
+ .expect("write user config");
let pull = cli_command_in(dir.path())
.args(["--json", "sync", "pull"])
@@ -135,13 +135,13 @@ fn sync_watch_ndjson_emits_one_frame_per_poll() {
.output()
.expect("run local init");
assert!(init.status.success());
- let config_dir = dir.path().join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
+ let config_dir = dir.path().join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
fs::write(
config_dir.join("config.toml"),
"[relay]\nurls = [\"wss://relay.one\", \"wss://relay.two\"]\npublish_policy = \"any\"\n",
)
- .expect("write workspace config");
+ .expect("write user config");
let output = cli_command_in(dir.path())
.args([
@@ -174,13 +174,13 @@ fn sync_watch_human_appends_readable_snapshots_without_screen_clear() {
.output()
.expect("run local init");
assert!(init.status.success());
- let config_dir = dir.path().join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
+ let config_dir = dir.path().join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
fs::write(
config_dir.join("config.toml"),
"[relay]\nurls = [\"wss://relay.one\", \"wss://relay.two\"]\npublish_policy = \"any\"\n",
)
- .expect("write workspace config");
+ .expect("write user config");
let output = cli_command_in(dir.path())
.args(["sync", "watch", "--frames", "2", "--interval-ms", "1"])
diff --git a/tests/workflow.rs b/tests/workflow.rs
@@ -48,10 +48,10 @@ fn cli_command_in(workdir: &Path) -> Command {
command
}
-fn write_workspace_config(workdir: &Path, contents: &str) {
- let config_dir = workdir.join("infra/local/runtime/radroots");
- fs::create_dir_all(&config_dir).expect("workspace config dir");
- fs::write(config_dir.join("config.toml"), contents).expect("write workspace config");
+fn write_user_config(workdir: &Path, contents: &str) {
+ let config_dir = workdir.join("home/.radroots/config/apps/cli");
+ fs::create_dir_all(&config_dir).expect("user config dir");
+ fs::write(config_dir.join("config.toml"), contents).expect("write user config");
}
#[test]
@@ -235,7 +235,7 @@ fn status_reports_farm_publish_need_when_core_state_is_ready() {
.expect("run local init");
assert!(local.status.success());
- write_workspace_config(
+ write_user_config(
dir.path(),
"[relay]\nurls = [\"wss://relay.one\"]\npublish_policy = \"any\"\n",
);