补fnm默认别名符号链接回归测试
- 新增单测 fnm_default_alias_symlink_selects_the_linked_installation,断言 default 别名选中该链接的 v20 而不是最高的 v22 - 核实评审该项前提有误:fnm 1.39 的 aliases/default 是指向安装目录的符号链接,当前实现本就正确
This commit is contained in:
@@ -1294,6 +1294,28 @@ mod tests {
|
||||
assert_eq!(default.version, (22, 23, 3));
|
||||
}
|
||||
|
||||
#[cfg(unix)]
|
||||
#[test]
|
||||
fn fnm_default_alias_symlink_selects_the_linked_installation() {
|
||||
use std::os::unix::fs::symlink;
|
||||
|
||||
let fnm_root = tempfile::tempdir().unwrap();
|
||||
let older = install_fnm_version(fnm_root.path(), "v20.11.0");
|
||||
install_fnm_version(fnm_root.path(), "v22.23.3");
|
||||
let alias_dir = fnm_root.path().join("aliases");
|
||||
fs::create_dir_all(&alias_dir).unwrap();
|
||||
// fnm 1.39 的 default 别名是指向安装目录的符号链接,不是版本字符串文件。
|
||||
symlink(&older, alias_dir.join("default")).unwrap();
|
||||
let installed = installed_node_versions(&[fnm_root.path().to_path_buf()], &[]);
|
||||
assert_eq!(installed.len(), 2);
|
||||
let default =
|
||||
default_managed_installation(&installed, &[fnm_root.path().to_path_buf()], &[])
|
||||
.expect("fnm default alias should resolve");
|
||||
// 必须跟随别名选中 v20,而不是回退到最高的 v22。
|
||||
assert_eq!(default.prefix, older.canonicalize().unwrap());
|
||||
assert_eq!(default.version, (20, 11, 0));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn version_file_pin_is_authoritative_and_blocks_when_not_installed() {
|
||||
let fnm_root = tempfile::tempdir().unwrap();
|
||||
|
||||
Reference in New Issue
Block a user