Skip to content

Commit 8f02225

Browse files
author
Tamas Vajk
committed
Add unit tests for crate_package_default_visibility
Two tests in rendering.rs: - render_crate_package_default_visibility: verifies custom visibility appears in the generated BUILD file instead of //visibility:public - render_default_visibility_when_not_configured: verifies the default behavior (//visibility:public) when the option is not set Update lockfile digest test expectations since the new config field changes the serialized RenderConfig.
1 parent ee2b159 commit 8f02225

2 files changed

Lines changed: 97 additions & 4 deletions

File tree

crate_universe/src/lockfile.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ mod test {
247247
);
248248

249249
assert_eq!(
250-
Digest("edd73970897c01af3bb0e6c9d62f572203dd38a03c189dcca555d463990aa086".to_owned()),
250+
Digest("3ae0c02accab9769e393d13aed5e78601a1d36e89db454ef8a249b879f1007e2".to_owned()),
251251
digest,
252252
);
253253
}
@@ -292,7 +292,7 @@ mod test {
292292
);
293293

294294
assert_eq!(
295-
Digest("8a4c1b3bb4c2d6c36e27565e71a13d54cff9490696a492c66a3a37bdd3893edf".to_owned()),
295+
Digest("3a407984ca805d41b40f3fe1608371ec92288940d2786d4456bf8e0f66852828".to_owned()),
296296
digest,
297297
);
298298
}
@@ -323,7 +323,7 @@ mod test {
323323
);
324324

325325
assert_eq!(
326-
Digest("1e01331686ba1f26f707dc098cd9d21c39d6ccd8e46be03329bb2470d3833e15".to_owned()),
326+
Digest("643a4ea83da473052a6a2965f9791bf85e14d55ead64edd661c3e915f19ee198".to_owned()),
327327
digest,
328328
);
329329
}
@@ -372,7 +372,7 @@ mod test {
372372
);
373373

374374
assert_eq!(
375-
Digest("45ccf7109db2d274420fac521f4736a1fb55450ec60e6df698e1be4dc2c89fad".to_owned()),
375+
Digest("daf77d5674233fc3dcc8270b2e793f54c8428a1248dc25e90bb6ecc2315a7d0f".to_owned()),
376376
digest,
377377
);
378378
}

crate_universe/src/rendering.rs

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2366,4 +2366,97 @@ mod test {
23662366
"proc-macro lib must appear in proc_macro_deps:\n{binary_section}"
23672367
);
23682368
}
2369+
2370+
#[test]
2371+
fn render_crate_package_default_visibility() {
2372+
let mut context = Context::default();
2373+
let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
2374+
context.crates.insert(
2375+
crate_id.clone(),
2376+
CrateContext {
2377+
name: crate_id.name,
2378+
version: crate_id.version,
2379+
package_url: None,
2380+
repository: None,
2381+
targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
2382+
library_target_name: None,
2383+
common_attrs: CommonAttributes::default(),
2384+
build_script_attrs: None,
2385+
license: None,
2386+
license_ids: BTreeSet::default(),
2387+
license_file: None,
2388+
additive_build_file_content: None,
2389+
disable_pipelining: false,
2390+
extra_aliased_targets: BTreeMap::default(),
2391+
alias_rule: None,
2392+
override_targets: BTreeMap::default(),
2393+
},
2394+
);
2395+
2396+
let config = Arc::new(RenderConfig {
2397+
repository_name: "test_rendering".to_owned(),
2398+
regen_command: "cargo_bazel_regen_command".to_owned(),
2399+
crate_package_default_visibility: Some(vec![
2400+
"//third_party/rust:__subpackages__".to_owned()
2401+
]),
2402+
..RenderConfig::default()
2403+
});
2404+
let renderer = Renderer::new(config, mock_supported_platform_triples());
2405+
let output = renderer.render(&context, None).unwrap();
2406+
2407+
let build_file_content = output
2408+
.get(&PathBuf::from("BUILD.mock_crate-0.1.0.bazel"))
2409+
.unwrap();
2410+
2411+
assert!(
2412+
build_file_content.contains("//third_party/rust:__subpackages__"),
2413+
"Expected custom visibility in BUILD file:\n{}",
2414+
build_file_content
2415+
);
2416+
assert!(
2417+
!build_file_content.contains("//visibility:public"),
2418+
"Expected no public visibility in BUILD file:\n{}",
2419+
build_file_content
2420+
);
2421+
}
2422+
2423+
#[test]
2424+
fn render_default_visibility_when_not_configured() {
2425+
let mut context = Context::default();
2426+
let crate_id = CrateId::new("mock_crate".to_owned(), VERSION_ZERO_ONE_ZERO);
2427+
context.crates.insert(
2428+
crate_id.clone(),
2429+
CrateContext {
2430+
name: crate_id.name,
2431+
version: crate_id.version,
2432+
package_url: None,
2433+
repository: None,
2434+
targets: BTreeSet::from([Rule::Library(mock_target_attributes())]),
2435+
library_target_name: None,
2436+
common_attrs: CommonAttributes::default(),
2437+
build_script_attrs: None,
2438+
license: None,
2439+
license_ids: BTreeSet::default(),
2440+
license_file: None,
2441+
additive_build_file_content: None,
2442+
disable_pipelining: false,
2443+
extra_aliased_targets: BTreeMap::default(),
2444+
alias_rule: None,
2445+
override_targets: BTreeMap::default(),
2446+
},
2447+
);
2448+
2449+
let renderer = Renderer::new(mock_render_config(None), mock_supported_platform_triples());
2450+
let output = renderer.render(&context, None).unwrap();
2451+
2452+
let build_file_content = output
2453+
.get(&PathBuf::from("BUILD.mock_crate-0.1.0.bazel"))
2454+
.unwrap();
2455+
2456+
assert!(
2457+
build_file_content.contains("//visibility:public"),
2458+
"Expected public visibility in BUILD file:\n{}",
2459+
build_file_content
2460+
);
2461+
}
23692462
}

0 commit comments

Comments
 (0)