Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 37 additions & 2 deletions src/core/legacy_aliases.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ mod tests {
let compact = body
.lines()
.map(str::trim)
.filter(|line| !line.is_empty())
.filter(|line| !line.is_empty() && !line.starts_with("//"))
.collect::<Vec<_>>()
.join(" ");
let mut aliases = BTreeMap::new();
Expand All @@ -235,7 +235,14 @@ mod tests {
let (legacy, target_expr) = entry
.split_once(':')
.unwrap_or_else(|| panic!("expected legacy alias entry, got `{entry}`"));
let legacy = quoted_value(legacy);
// Prettier strips quotes from keys that are valid JS identifiers
// (e.g. `health_snapshot`), so accept both `'foo':` and bare `foo:`.
let legacy_trimmed = legacy.trim();
let legacy = if legacy_trimmed.starts_with('\'') || legacy_trimmed.starts_with('"') {
quoted_value(legacy)
} else {
legacy_trimmed.to_string()
};
Comment thread
coderabbitai[bot] marked this conversation as resolved.
let target_expr = target_expr.trim();
let canonical = if let Some(key) = target_expr.strip_prefix("CORE_RPC_METHODS.") {
core_methods
Expand Down Expand Up @@ -345,6 +352,34 @@ mod tests {
);
}

#[test]
fn parse_frontend_legacy_aliases_accepts_bare_identifier_keys_and_skips_comments() {
// Prettier strips redundant quotes from keys that are valid JS
// identifiers, so the canonical form for a simple key like
// `health_snapshot` is unquoted. The parser must accept both
// `'foo':` and bare `foo:`, and must ignore `//` comment lines
// in the LEGACY_METHOD_ALIASES body.
let source = "export const CORE_RPC_METHODS = {\n alphaMethod: 'openhuman.alpha',\n betaMethod: 'openhuman.beta',\n} as const;\n\nexport const LEGACY_METHOD_ALIASES: Record<string, CoreRpcMethod> = {\n // legacy aliases for the alpha method\n 'openhuman.legacy_alpha': CORE_RPC_METHODS.alphaMethod,\n beta_legacy: CORE_RPC_METHODS.betaMethod,\n};\n";
let core_methods = parse_core_rpc_methods(source);
let aliases = parse_frontend_legacy_aliases(source, &core_methods);
assert_eq!(
aliases.get("openhuman.legacy_alpha").map(String::as_str),
Some("openhuman.alpha"),
"quoted-key entry should still resolve"
);
assert_eq!(
aliases.get("beta_legacy").map(String::as_str),
Some("openhuman.beta"),
"bare-identifier key should resolve (Prettier-normalized form)"
);
assert!(
!aliases
.keys()
.any(|k| k.contains("//") || k.contains("legacy aliases")),
"comment text must not be captured as a key"
);
}

#[test]
#[should_panic(expected = "legacy alias references unknown CORE_RPC_METHODS")]
fn parse_frontend_legacy_aliases_panics_on_unknown_core_method_ref() {
Expand Down
Loading