fix(solc): improve remappings autodetection (#1335)
This commit is contained in:
parent
89bc6420bb
commit
598c00e55d
|
@ -452,6 +452,14 @@ impl Candidate {
|
||||||
current_dir.to_path_buf()
|
current_dir.to_path_buf()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// if the window start and the source dir are the same directory we can end early if
|
||||||
|
// we wrongfully detect something like: `<dep>/src/lib/`
|
||||||
|
if current_level > 0 &&
|
||||||
|
source_dir == window_start &&
|
||||||
|
(is_source_dir(&source_dir) || is_lib_dir(&source_dir))
|
||||||
|
{
|
||||||
|
return
|
||||||
|
}
|
||||||
candidates.push(Candidate { window_start, source_dir, window_level: current_level });
|
candidates.push(Candidate { window_start, source_dir, window_level: current_level });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -759,6 +767,22 @@ mod tests {
|
||||||
assert_eq!(remappings[0].path, format!("{}/src/", path));
|
assert_eq!(remappings[0].path, format!("{}/src/", path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn can_resolve_contract_dir_combinations() {
|
||||||
|
let tmp_dir = tempdir("demo").unwrap();
|
||||||
|
let paths =
|
||||||
|
["lib/timeless/src/lib/A.sol", "lib/timeless/src/B.sol", "lib/timeless/src/test/C.sol"];
|
||||||
|
mkdir_or_touch(tmp_dir.path(), &paths[..]);
|
||||||
|
|
||||||
|
let tmp_dir_path = tmp_dir.path().join("lib");
|
||||||
|
let remappings = Remapping::find_many(&tmp_dir_path);
|
||||||
|
let expected = vec![Remapping {
|
||||||
|
name: "timeless/".to_string(),
|
||||||
|
path: to_str(tmp_dir_path.join("timeless/src")),
|
||||||
|
}];
|
||||||
|
pretty_assertions::assert_eq!(remappings, expected);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_resolve_geb_remappings() {
|
fn can_resolve_geb_remappings() {
|
||||||
let tmp_dir = tempdir("geb").unwrap();
|
let tmp_dir = tempdir("geb").unwrap();
|
||||||
|
|
Loading…
Reference in New Issue