diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3dbcf0b..6b412ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -258,6 +258,13 @@ test_acceptance_ubuntu_qemux86_64: - cp versions_override_config input/config/versions_override_config - ./scripts/test/run-tests.sh --config input/config/versions_override_config --only ubuntu-qemux86-64 +test_acceptance_ubuntu_qemux86_64_no_grub_d: + <<: *test_acceptance + script: + - mkdir -p input/config + - cp versions_override_config input/config/versions_override_config + - ./scripts/test/run-tests.sh --config input/config/versions_override_config --only ubuntu-qemux86-64-no-grub-d + test_acceptance_debian_qemux86_64: <<: *test_acceptance script: diff --git a/configs/testing/no-grub.d_config b/configs/testing/no-grub.d_config new file mode 100644 index 0000000..0dbe23c --- /dev/null +++ b/configs/testing/no-grub.d_config @@ -0,0 +1 @@ +MENDER_GRUB_D_INTEGRATION=n diff --git a/mender-convert-package b/mender-convert-package index 30b8e80..aabdaf6 100755 --- a/mender-convert-package +++ b/mender-convert-package @@ -388,6 +388,7 @@ testscfg_add "MENDER_ARTIFACT_NAME" "${MENDER_ARTIFACT_NAME}" testscfg_add "MENDER_FEATURES" "${mender_features}" testscfg_add "DEPLOY_DIR_IMAGE" "${PWD}/deploy" testscfg_add "MENDER_MACHINE" "${device_type}" +testscfg_add "MENDER_GRUB_D_INTEGRATION" "${MENDER_GRUB_D_INTEGRATION}" # Outputting device base only relevant for some configurations if [ "${MENDER_ENABLE_PARTUUID}" != "y" ]; then diff --git a/scripts/test/mender-convert-qemu b/scripts/test/mender-convert-qemu index 38ac08e..3b35d22 100755 --- a/scripts/test/mender-convert-qemu +++ b/scripts/test/mender-convert-qemu @@ -27,6 +27,10 @@ if [ -z "${ovmf_file}" ]; then exit 1 fi +if [ "$QEMU_NO_SECURE_BOOT" != "1" ]; then + OVMF_VARS="-drive file=$(dirname "$0")/../../tests/uefi-nvram/OVMF_VARS.fd,if=pflash,format=raw,unit=1,readonly=on" +fi + qemu-system-x86_64 \ -enable-kvm \ -nographic \ @@ -34,7 +38,7 @@ qemu-system-x86_64 \ -net user,hostfwd=tcp::8822-:22 \ -net nic,macaddr=52:54:00$(od -txC -An -N3 /dev/urandom|tr \ :) \ -drive file=${ovmf_file},if=pflash,format=raw,unit=0,readonly=on \ - -drive file="$(dirname "$0")/../../tests/uefi-nvram/OVMF_VARS.fd",if=pflash,format=raw,unit=1,readonly=on \ + $OVMF_VARS \ -drive format=raw,file=${DISK_IMG} & qemu_pid=$! diff --git a/scripts/test/run-tests.sh b/scripts/test/run-tests.sh index 7e5138e..d8cd972 100755 --- a/scripts/test/run-tests.sh +++ b/scripts/test/run-tests.sh @@ -123,6 +123,21 @@ else assert "${ret}" "0" "Expected uncompressed file deploy/Ubuntu-Focal-x86-64-qemux86-64-mender.img" fi + if [ "$TEST_ALL" == "1" -o "$TEST_PLATFORM" == "ubuntu-qemux86-64-no-grub-d" ]; then + wget --progress=dot:giga -N ${UBUNTU_IMAGE_URL} -P input/image/ + mkdir -p input/tests + cp -r "tests/ssh-public-key-overlay" "input/tests/ssh-public-key-overlay" + QEMU_NO_SECURE_BOOT=1 \ + convert_and_test \ + "qemux86-64" \ + "release-1" \ + "input/image/Ubuntu-Focal-x86-64.img.gz" \ + "--overlay input/tests/ssh-public-key-overlay" \ + "--config configs/ubuntu-qemux86-64_config" \ + "--config configs/testing/no-grub.d_config $EXTRA_CONFIG" \ + || test_result=$? + fi + if [ "$TEST_ALL" == "1" -o "$TEST_PLATFORM" == "raspberrypi3" ]; then wget --progress=dot:giga -N ${RASPBIAN_IMAGE_URL} -P input/image/ RASPBIAN_IMAGE="${RASPBIAN_IMAGE_URL##*/}" diff --git a/tests/mender-image-tests b/tests/mender-image-tests index 43385d2..0513c60 160000 --- a/tests/mender-image-tests +++ b/tests/mender-image-tests @@ -1 +1 @@ -Subproject commit 43385d2db58224a12e36d1cd63c3b6057f4e6809 +Subproject commit 0513c601b27599f13692295c50e87ee28425b310 diff --git a/tests/test_grub_integration.py b/tests/test_grub_integration.py index 4eaaa56..40df32c 100644 --- a/tests/test_grub_integration.py +++ b/tests/test_grub_integration.py @@ -76,8 +76,13 @@ def check_all_root_occurrences_valid(grub_cfg): assert found_expected, "Expected content (%s) not found" % expected +@pytest.fixture(scope="session") +def only_grub_d_integration(bitbake_variables): + if bitbake_variables["MENDER_GRUB_D_INTEGRATION"] == "n": + pytest.skip("grub.d integration is off, skipping test") -@pytest.mark.usefixtures("setup_board", "cleanup_boot_scripts") + +@pytest.mark.usefixtures("setup_board", "cleanup_boot_scripts", "only_grub_d_integration") class TestGrubIntegration: @pytest.mark.min_mender_version("1.0.0") def test_no_root_occurrences(self, connection, latest_part_image):