MCPcopy Create free account
hub / github.com/bootc-dev/bootc / test_parse_spec_dir

Function test_parse_spec_dir

crates/lib/src/boundimage.rs:249–309  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

247
248 #[test]
249 fn test_parse_spec_dir() -> Result<()> {
250 const CONTAINER_IMAGE_DIR: &str = "usr/share/containers/systemd";
251
252 // Empty dir should return an empty vector
253 let td = &cap_std_ext::cap_tempfile::TempDir::new(cap_std::ambient_authority())?;
254 let images = query_bound_images(td).unwrap();
255 assert_eq!(images.len(), 0);
256
257 td.create_dir_all(BOUND_IMAGE_DIR).unwrap();
258 td.create_dir_all(CONTAINER_IMAGE_DIR).unwrap();
259 let images = query_bound_images(td).unwrap();
260 assert_eq!(images.len(), 0);
261
262 // Should return BoundImages
263 td.write(
264 format!("{CONTAINER_IMAGE_DIR}/foo.image"),
265 indoc::indoc! { r#"
266 [Image]
267 Image=quay.io/foo/foo:latest
268 "# },
269 )
270 .unwrap();
271 td.symlink_contents(
272 format!("/{CONTAINER_IMAGE_DIR}/foo.image"),
273 format!("{BOUND_IMAGE_DIR}/foo.image"),
274 )
275 .unwrap();
276
277 td.write(
278 format!("{CONTAINER_IMAGE_DIR}/bar.image"),
279 indoc::indoc! { r#"
280 [Image]
281 Image=quay.io/bar/bar:latest
282 "# },
283 )
284 .unwrap();
285 td.symlink_contents(
286 format!("/{CONTAINER_IMAGE_DIR}/bar.image"),
287 format!("{BOUND_IMAGE_DIR}/bar.image"),
288 )
289 .unwrap();
290
291 let mut images = query_bound_images(td).unwrap();
292 images.sort_by(|a, b| a.image.as_str().cmp(&b.image.as_str()));
293 assert_eq!(images.len(), 2);
294 assert_eq!(images[0].image, "quay.io/bar/bar:latest");
295 assert_eq!(images[1].image, "quay.io/foo/foo:latest");
296
297 // Invalid symlink should return an error
298 td.symlink("./blah", format!("{BOUND_IMAGE_DIR}/blah.image"))
299 .unwrap();
300 assert!(query_bound_images(td).is_err());
301
302 // Invalid image contents should return an error
303 td.write("error.image", "[Image]\n").unwrap();
304 td.symlink_contents("/error.image", format!("{BOUND_IMAGE_DIR}/error.image"))
305 .unwrap();
306 assert!(query_bound_images(td).is_err());

Callers

nothing calls this directly

Calls 2

query_bound_imagesFunction · 0.85
cmpMethod · 0.45

Tested by

no test coverage detected