fix: mark resolved default profile aliases

This commit is contained in:
2026-05-30 02:43:46 +09:00
parent ba9e924c89
commit d77a86d550
2 changed files with 47 additions and 13 deletions
+40 -2
View File
@@ -248,11 +248,13 @@ impl ProfileRegistry {
let Some(default) = self.default.clone() else {
return;
};
let Some(source) = default.source else {
let Ok(default_entry) = self.select_named(default.source, &default.name) else {
return;
};
let source = default_entry.source;
let name = default_entry.name.clone();
for entry in &mut self.entries {
entry.is_default = entry.source == source && entry.name == default.name;
entry.is_default = entry.source == source && entry.name == name;
}
}
}
@@ -1005,6 +1007,42 @@ default-coder = "coder"
assert!(selected.path.ends_with("profiles/project-coder.nix"));
}
#[test]
fn config_default_alias_marks_resolved_default_entry() {
let tmp = TempDir::new().unwrap();
let project_dir = tmp.path().join("project/.insomnia");
std::fs::create_dir_all(&project_dir).unwrap();
let project_manifest = project_dir.join("manifest.toml");
std::fs::write(
&project_manifest,
r#"
[profiles]
default = "work"
[profiles.profile]
coder = "profiles/coder.nix"
[profiles.alias]
work = "coder"
"#,
)
.unwrap();
let registry = ProfileDiscovery::with_sources(None, None, Some(project_manifest))
.discover()
.unwrap();
let default = registry.default_entry().unwrap();
assert_eq!(default.source, ProfileRegistrySource::Project);
assert_eq!(default.name, "coder");
assert!(default.is_default);
assert_eq!(
registry
.entries()
.iter()
.filter(|entry| entry.is_default)
.count(),
1
);
}
#[test]
fn unqualified_ambiguous_names_fail_closed() {
let mut registry = ProfileRegistry::default();