From 64266b40d5499adefa9abfafd50c78f4539866df Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez-Fernandez Date: Tue, 30 Jan 2024 21:57:33 -0700 Subject: [PATCH] Test the `become` key under `virtual` provision Signed-off-by: Carlos Rodriguez-Fernandez --- tests/provision/become/data/Containerfile | 4 +- tests/provision/become/data/main.fmf | 13 +++- .../provision/become/data/prepare-finish.fmf | 4 +- .../become/data/scripts/is_user_test.sh | 2 +- tests/provision/become/data/test.fmf | 2 +- tests/provision/become/main.fmf | 7 +- tests/provision/become/test.sh | 75 ++++++++++--------- 7 files changed, 62 insertions(+), 45 deletions(-) diff --git a/tests/provision/become/data/Containerfile b/tests/provision/become/data/Containerfile index 1bba4b822d..f5c29bfc45 100644 --- a/tests/provision/become/data/Containerfile +++ b/tests/provision/become/data/Containerfile @@ -1,5 +1,5 @@ FROM quay.io/fedora/fedora:latest -RUN useradd user; usermod -aG wheel user; echo -e 'user\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers +RUN useradd fedora; usermod -aG wheel fedora; echo -e 'fedora\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers -USER user +USER fedora diff --git a/tests/provision/become/data/main.fmf b/tests/provision/become/data/main.fmf index 29673d9e89..3550e7ed02 100644 --- a/tests/provision/become/data/main.fmf +++ b/tests/provision/become/data/main.fmf @@ -1,7 +1,14 @@ provision: - how: container - image: localhost/become-container-test:latest - user: user + user: fedora +adjust: + - when: provisiontest == virtual + provision+: + how: virtual + image: fedora + - when: provisiontest == container + provision+: + how: container + image: localhost/become-container-test:latest execute: how: tmt diff --git a/tests/provision/become/data/prepare-finish.fmf b/tests/provision/become/data/prepare-finish.fmf index cb05cc79cd..79c2657842 100644 --- a/tests/provision/become/data/prepare-finish.fmf +++ b/tests/provision/become/data/prepare-finish.fmf @@ -25,9 +25,9 @@ discover: /inline: prepare: - script: test "$(whoami)" == "user" + script: test "$(whoami)" == "fedora" finish: - script: test "$(whoami)" == "user" + script: test "$(whoami)" == "fedora" /scripts: prepare: diff --git a/tests/provision/become/data/scripts/is_user_test.sh b/tests/provision/become/data/scripts/is_user_test.sh index 086ec26298..6a182ab06f 100755 --- a/tests/provision/become/data/scripts/is_user_test.sh +++ b/tests/provision/become/data/scripts/is_user_test.sh @@ -1,3 +1,3 @@ #!/bin/bash -e -test "$(whoami)" == "user" +test "$(whoami)" == "fedora" diff --git a/tests/provision/become/data/test.fmf b/tests/provision/become/data/test.fmf index 14e81b4fe8..a1a79a9627 100644 --- a/tests/provision/become/data/test.fmf +++ b/tests/provision/become/data/test.fmf @@ -12,4 +12,4 @@ discover: tests: - name: user-is-user - test: test "$(whoami)" == "user" + test: test "$(whoami)" == "fedora" diff --git a/tests/provision/become/main.fmf b/tests/provision/become/main.fmf index 6f78776bdf..4bd86c0eda 100644 --- a/tests/provision/become/main.fmf +++ b/tests/provision/become/main.fmf @@ -1,2 +1,5 @@ -summary: Check that become works -description: As for now covers podman provision only. +summary: Check that become works on virtual and container provision +description: Ensures that become works when used in virtual instances and on containers. +tag+: [provision-virtual,provision-container] +duration: 20m +tier: null diff --git a/tests/provision/become/test.sh b/tests/provision/become/test.sh index 3fd3b19fd6..78dbdc69a7 100755 --- a/tests/provision/become/test.sh +++ b/tests/provision/become/test.sh @@ -1,45 +1,52 @@ #!/bin/bash . /usr/share/beakerlib/beakerlib.sh || exit 1 -PROVISION_METHODS=${PROVISION_METHODS:-container} +PROVISION_METHODS=${PROVISION_METHODS:-container virtual} rlJournalStart - if [[ "$PROVISION_METHODS" =~ container ]]; then - rlPhaseStartSetup - rlRun "pushd data" + + rlPhaseStartSetup + rlRun "pushd data" + if [[ "$PROVISION_METHODS" =~ "container" ]]; then # Try several times to build the container # https://github.com/teemtee/tmt/issues/2063 build="podman build -t become-container-test:latest ." rlRun "rlWaitForCmd '$build' -m 5 -d 5" || rlDie "Unable to prepare the image" - rlPhaseEnd - - rlPhaseStartTest "Container, test with become=true" - rlRun "tmt run -rvvv plan --name /test/root" - rlPhaseEnd - - rlPhaseStartTest "Container, test with become=false" - rlRun "tmt run -rvvv plan --name /test/user" - rlPhaseEnd - - rlPhaseStartTest "Container, prepare/finish inline with become=true" - rlRun "tmt run -rvvv plan --name /prepare-finish/root/inline" - rlPhaseEnd - - rlPhaseStartTest "Container, prepare/finish inline with become=false" - rlRun "tmt run -rvvv plan --name /prepare-finish/user/inline" - rlPhaseEnd - - rlPhaseStartTest "Container, prepare/finish scripts with become=true" - rlRun "tmt run -rvvv plan --name /prepare-finish/root/scripts" - rlPhaseEnd - - rlPhaseStartTest "Container, prepare/finish scripts with become=false" - rlRun "tmt run -rvvv plan --name /prepare-finish/user/scripts" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" + fi + rlPhaseEnd + + for method in ${PROVISION_METHODS}; do + if [ "$method" = "container" ] || [ "$method" = "virtual" ]; then + rlPhaseStartTest "$method, test with become=true" + rlRun "tmt --context provisiontest=$method run -rvvv plan --name /test/root" + rlPhaseEnd + + rlPhaseStartTest "$method, test with become=false" + rlRun "tmt --context provisiontest=$method run -rvvv plan --name /test/user" + rlPhaseEnd + + rlPhaseStartTest "$method, prepare/finish inline with become=true" + rlRun "tmt --context provisiontest=$method run -rvvv plan --name /prepare-finish/root/inline" + rlPhaseEnd + + rlPhaseStartTest "$method, prepare/finish inline with become=false" + rlRun "tmt --context provisiontest=$method run -rvvv plan --name /prepare-finish/user/inline" + rlPhaseEnd + + rlPhaseStartTest "$method, prepare/finish scripts with become=true" + rlRun "tmt --context provisiontest=$method run -rvvv plan --name /prepare-finish/root/scripts" + rlPhaseEnd + + rlPhaseStartTest "$method, prepare/finish scripts with become=false" + rlRun "tmt --context provisiontest=$method run -rvvv plan --name /prepare-finish/user/scripts" + rlPhaseEnd + fi + done + + rlPhaseStartCleanup + rlRun "popd" + if [[ "$PROVISION_METHODS" =~ "container" ]]; then rlRun "podman image rm -f localhost/become-container-test:latest" 0 "Remove custom image" - rlPhaseEnd - fi + fi + rlPhaseEnd rlJournalEnd