Skip to content

Commit 499852d

Browse files
committed
Add Intra Workspace Dependency Unit tests
1 parent 12223da commit 499852d

File tree

3 files changed

+111
-3
lines changed

3 files changed

+111
-3
lines changed

crate_universe/src/metadata/dependency.rs

+42
Original file line numberDiff line numberDiff line change
@@ -1009,4 +1009,46 @@ mod test {
10091009
"`mio` is a platform specific dependency and therefore should not be identified under the common configuration."
10101010
);
10111011
}
1012+
1013+
#[test]
1014+
fn intra_workspace_deps() {
1015+
let metadata = metadata::workspace_path();
1016+
1017+
let child_b_node = find_metadata_node("child_b", &metadata);
1018+
let child_b_depset_with_intra_workspace = DependencySet::new_for_node(
1019+
child_b_node,
1020+
&metadata,
1021+
&TreeResolverMetadata::default(),
1022+
true,
1023+
);
1024+
assert_eq!(
1025+
child_b_depset_with_intra_workspace
1026+
.normal_deps
1027+
.items()
1028+
.iter()
1029+
.filter(|(configuration, dep)| {
1030+
configuration.is_none() && dep.target_name == "child_a"
1031+
})
1032+
.count(),
1033+
1,
1034+
);
1035+
1036+
let child_b_depset_without_intra_workspace = DependencySet::new_for_node(
1037+
child_b_node,
1038+
&metadata,
1039+
&TreeResolverMetadata::default(),
1040+
false,
1041+
);
1042+
assert_eq!(
1043+
child_b_depset_without_intra_workspace
1044+
.normal_deps
1045+
.items()
1046+
.iter()
1047+
.filter(|(configuration, dep)| {
1048+
configuration.is_none() && dep.target_name == "child_a"
1049+
})
1050+
.count(),
1051+
0,
1052+
)
1053+
}
10121054
}

crate_universe/src/rendering.rs

+53-3
Original file line numberDiff line numberDiff line change
@@ -2088,8 +2088,58 @@ mod test {
20882088
tags = ["manual"],
20892089
)
20902090
"#};
2091-
assert!(build_file_content
2092-
.replace(' ', "")
2093-
.contains(&expected.replace(' ', "")));
2091+
assert!(
2092+
build_file_content
2093+
.replace(' ', "")
2094+
.contains(&expected.replace(' ', "")),
2095+
"{}\n does not match {}",
2096+
build_file_content,
2097+
expected
2098+
);
2099+
}
2100+
2101+
#[test]
2102+
fn intra_workspace_deps() {
2103+
let intra_workspace_dependencies_workspace_toml = Label::Absolute {
2104+
repository: starlark::Repository::Canonical("test_repo".to_owned()),
2105+
package: "test_package".to_owned(),
2106+
target: "Cargo.lock".to_owned(),
2107+
};
2108+
2109+
let render_config = RenderConfig {
2110+
intra_workspace_dependencies_workspace_toml: Some(
2111+
intra_workspace_dependencies_workspace_toml,
2112+
),
2113+
..std::sync::Arc::<RenderConfig>::into_inner(mock_render_config(None)).unwrap()
2114+
};
2115+
2116+
let config = Config {
2117+
rendering: render_config.clone(),
2118+
..Default::default()
2119+
};
2120+
2121+
let annotations = Annotations::new(
2122+
test::metadata::workspace_path(),
2123+
test::lockfile::workspace_path(),
2124+
config,
2125+
Utf8Path::new("/tmp/bazelworkspace"),
2126+
)
2127+
.unwrap();
2128+
let context = Context::new(annotations, false).unwrap();
2129+
2130+
let renderer = Renderer::new(Arc::new(render_config), mock_supported_platform_triples());
2131+
let output = renderer.render(&context, None).unwrap();
2132+
2133+
let expected = indoc! {r#"
2134+
alias(
2135+
name = "child_a-0.1.0",
2136+
actual = "@@test_repo//child_a:child_a",
2137+
tags = ["manual"],
2138+
)
2139+
"#};
2140+
assert!(output
2141+
.get(&PathBuf::from("BUILD.bazel"))
2142+
.unwrap()
2143+
.contains(expected));
20942144
}
20952145
}

crate_universe/src/test.rs

+16
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,14 @@ pub(crate) mod metadata {
204204
)))
205205
.unwrap()
206206
}
207+
208+
pub(crate) fn workspace_path() -> cargo_metadata::Metadata {
209+
serde_json::from_str(include_str!(concat!(
210+
env!("CARGO_MANIFEST_DIR"),
211+
"/test_data/metadata/workspace_path/metadata.json"
212+
)))
213+
.unwrap()
214+
}
207215
}
208216

209217
pub(crate) mod lockfile {
@@ -288,4 +296,12 @@ pub(crate) mod lockfile {
288296
)))
289297
.unwrap()
290298
}
299+
300+
pub(crate) fn workspace_path() -> cargo_lock::Lockfile {
301+
cargo_lock::Lockfile::from_str(include_str!(concat!(
302+
env!("CARGO_MANIFEST_DIR"),
303+
"/test_data/metadata/workspace_path/Cargo.lock"
304+
)))
305+
.unwrap()
306+
}
291307
}

0 commit comments

Comments
 (0)