@@ -440,6 +440,87 @@ def test_install(
440
440
assert_output (expected_output , output .stdout , output .stderr )
441
441
442
442
443
+ def _parametrize_test_refresh_metadata () -> \
444
+ Iterator [tuple [
445
+ Container ,
446
+ PackageManagerClass ,
447
+ str ,
448
+ Optional [str ]]]:
449
+
450
+ for container , package_manager_class in CONTAINER_BASE_MATRIX :
451
+ if package_manager_class is tmt .package_managers .dnf .Yum :
452
+ yield container , \
453
+ package_manager_class , \
454
+ r"yum makecache" , \
455
+ 'Metadata'
456
+
457
+ elif package_manager_class is tmt .package_managers .dnf .Dnf :
458
+ yield container , \
459
+ package_manager_class , \
460
+ r"dnf makecache -y --refresh" , \
461
+ 'Metadata cache created'
462
+
463
+ elif package_manager_class is tmt .package_managers .dnf .Dnf5 :
464
+ yield container , \
465
+ package_manager_class , \
466
+ r"dnf5 makecache -y --refresh" , \
467
+ 'Metadata cache created'
468
+
469
+ elif package_manager_class is tmt .package_managers .apt .Apt :
470
+ yield container , \
471
+ package_manager_class , \
472
+ r"export DEBIAN_FRONTEND=noninteractive; apt update" , \
473
+ 'packages'
474
+
475
+ elif package_manager_class is tmt .package_managers .rpm_ostree .RpmOstree :
476
+ yield pytest .param (
477
+ container ,
478
+ package_manager_class ,
479
+ r"rpm-ostree refresh-md --force" ,
480
+ 'Available' ,
481
+ marks = pytest .mark .skip (reason = "refresh-md does not work with how tmt runs ostree container" ) # noqa: E501
482
+ )
483
+
484
+ elif package_manager_class is tmt .package_managers .apk .Apk :
485
+ yield container , \
486
+ package_manager_class , \
487
+ r"apk update" , \
488
+ 'OK:'
489
+
490
+ else :
491
+ pytest .fail (f"Unhandled package manager class '{ package_manager_class } '." )
492
+
493
+
494
+ @pytest .mark .containers
495
+ @pytest .mark .parametrize (('container_per_test' ,
496
+ 'package_manager_class' ,
497
+ 'expected_command' ,
498
+ 'expected_output' ),
499
+ list (_parametrize_test_refresh_metadata ()),
500
+ indirect = ["container_per_test" ],
501
+ ids = CONTAINER_MATRIX_IDS )
502
+ def test_refresh_metadata (
503
+ container_per_test : ContainerData ,
504
+ guest_per_test : GuestContainer ,
505
+ package_manager_class : PackageManagerClass ,
506
+ expected_command : str ,
507
+ expected_output : Optional [str ],
508
+ root_logger : tmt .log .Logger ,
509
+ caplog : _pytest .logging .LogCaptureFixture ) -> None :
510
+ package_manager = create_package_manager (
511
+ container_per_test ,
512
+ guest_per_test ,
513
+ package_manager_class ,
514
+ root_logger )
515
+
516
+ output = package_manager .refresh_metadata ()
517
+
518
+ assert_log (caplog , message = MATCH (
519
+ rf"Run command: podman exec .+? /bin/bash -c '{ expected_command } '" ))
520
+
521
+ assert_output (expected_output , output .stdout , output .stderr )
522
+
523
+
443
524
def _parametrize_test_install_nonexistent () -> \
444
525
Iterator [tuple [Container , PackageManagerClass , str , Optional [str ]]]:
445
526
0 commit comments