Skip to content

Commit 4ae1cd6

Browse files
committed
Add Intra Workspace Dependency Unit tests
1 parent 5078559 commit 4ae1cd6

File tree

3 files changed

+112
-3
lines changed

3 files changed

+112
-3
lines changed

crate_universe/src/metadata/dependency.rs

Lines changed: 42 additions & 0 deletions
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

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2120,8 +2120,59 @@ mod test {
21202120
tags = ["manual"],
21212121
)
21222122
"#};
2123-
assert!(build_file_content
2124-
.replace(' ', "")
2125-
.contains(&expected.replace(' ', "")));
2123+
assert!(
2124+
build_file_content
2125+
.replace(' ', "")
2126+
.contains(&expected.replace(' ', "")),
2127+
"{}\n does not match {}",
2128+
build_file_content,
2129+
expected
2130+
);
2131+
}
2132+
2133+
#[test]
2134+
fn intra_workspace_deps() {
2135+
let intra_workspace_dependencies_workspace_toml = Label::Absolute {
2136+
repository: starlark::Repository::Canonical("test_repo".to_owned()),
2137+
package: "test_package".to_owned(),
2138+
target: "Cargo.lock".to_owned(),
2139+
};
2140+
2141+
let render_config = RenderConfig {
2142+
intra_workspace_dependencies_workspace_toml: Some(
2143+
intra_workspace_dependencies_workspace_toml,
2144+
),
2145+
..std::sync::Arc::<RenderConfig>::into_inner(mock_render_config(None)).unwrap()
2146+
};
2147+
2148+
let config = Config {
2149+
rendering: render_config.clone(),
2150+
..Default::default()
2151+
};
2152+
2153+
let annotations = Annotations::new(
2154+
test::metadata::workspace_path(),
2155+
&None,
2156+
test::lockfile::workspace_path(),
2157+
config,
2158+
Utf8Path::new("/tmp/bazelworkspace"),
2159+
)
2160+
.unwrap();
2161+
let context = Context::new(annotations, false).unwrap();
2162+
2163+
let renderer = Renderer::new(Arc::new(render_config), mock_supported_platform_triples());
2164+
let output = renderer.render(&context, None).unwrap();
2165+
2166+
let expected = indoc! {r#"
2167+
alias(
2168+
name = "child_a-0.1.0",
2169+
actual = "@@test_repo//child_a:child_a",
2170+
tags = ["manual"],
2171+
)
2172+
"#};
2173+
assert!(output
2174+
.get(&PathBuf::from("BUILD.bazel"))
2175+
.unwrap()
2176+
.contains(expected));
21262177
}
21272178
}

crate_universe/src/test.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@ pub(crate) mod metadata {
212212
)))
213213
.unwrap()
214214
}
215+
216+
pub(crate) fn workspace_path() -> cargo_metadata::Metadata {
217+
serde_json::from_str(include_str!(concat!(
218+
env!("CARGO_MANIFEST_DIR"),
219+
"/test_data/metadata/workspace_path/metadata.json"
220+
)))
221+
.unwrap()
222+
}
215223
}
216224

217225
pub(crate) mod lockfile {
@@ -304,4 +312,12 @@ pub(crate) mod lockfile {
304312
)))
305313
.unwrap()
306314
}
315+
316+
pub(crate) fn workspace_path() -> cargo_lock::Lockfile {
317+
cargo_lock::Lockfile::from_str(include_str!(concat!(
318+
env!("CARGO_MANIFEST_DIR"),
319+
"/test_data/metadata/workspace_path/Cargo.lock"
320+
)))
321+
.unwrap()
322+
}
307323
}

0 commit comments

Comments
 (0)