@@ -445,6 +445,59 @@ mod tests {
445445 . then_some ( CdiPathKind :: CharacterDevice )
446446 }
447447
448+ #[ derive( serde:: Serialize ) ]
449+ struct CdiRequirementsBaseline < ' a > {
450+ device_node_paths : & ' a [ String ] ,
451+ read_only_paths : & ' a [ String ] ,
452+ read_write_mount_paths : & ' a [ String ] ,
453+ additional_gids : & ' a [ u32 ] ,
454+ }
455+
456+ fn assert_cdi_spec_matches_derived_requirements_baseline ( spec : & str , expected : & str ) {
457+ let dir = tempfile:: tempdir ( ) . unwrap ( ) ;
458+ write_spec ( dir. path ( ) , "nvidia.yaml" , spec) ;
459+
460+ let requirements = resolve_with_kind (
461+ & context ( dir. path ( ) , & [ "nvidia.com/gpu=all" ] ) ,
462+ & [ ] ,
463+ fake_device_node,
464+ )
465+ . unwrap ( ) ;
466+ let baseline = CdiRequirementsBaseline {
467+ device_node_paths : & requirements. device_node_paths ,
468+ read_only_paths : & requirements. read_only_paths ,
469+ read_write_mount_paths : & requirements. read_write_mount_paths ,
470+ additional_gids : & requirements. additional_gids ,
471+ } ;
472+ let generated = serde_json:: to_string_pretty ( & baseline) . unwrap ( ) + "\n " ;
473+
474+ assert_eq ! ( generated, expected) ;
475+ }
476+
477+ #[ test]
478+ fn orin_cdi_spec_matches_derived_requirements_baseline ( ) {
479+ assert_cdi_spec_matches_derived_requirements_baseline (
480+ include_str ! ( "../testdata/orin-nvidia.yaml" ) ,
481+ include_str ! ( "../testdata/orin-nvidia-policy-baseline.json" ) ,
482+ ) ;
483+ }
484+
485+ #[ test]
486+ fn spark_cdi_spec_matches_derived_requirements_baseline ( ) {
487+ assert_cdi_spec_matches_derived_requirements_baseline (
488+ include_str ! ( "../testdata/spark-nvidia.yaml" ) ,
489+ include_str ! ( "../testdata/spark-nvidia-policy-baseline.json" ) ,
490+ ) ;
491+ }
492+
493+ #[ test]
494+ fn multi_gpu_cdi_spec_matches_derived_requirements_baseline ( ) {
495+ assert_cdi_spec_matches_derived_requirements_baseline (
496+ include_str ! ( "../testdata/multi-gpu-nvidia.yaml" ) ,
497+ include_str ! ( "../testdata/multi-gpu-nvidia-policy-baseline.json" ) ,
498+ ) ;
499+ }
500+
448501 #[ test]
449502 fn resolves_native_single_device_requirements ( ) {
450503 let dir = tempfile:: tempdir ( ) . unwrap ( ) ;
0 commit comments