From 4215d0ca683378e34d8c5f87d7ec85c834e75b78 Mon Sep 17 00:00:00 2001 From: Matthew Booth Date: Thu, 7 Feb 2013 15:49:51 +0000 Subject: [PATCH] mountable: Test inspection of fedora image --- tests/mountable/Makefile.am | 2 +- tests/mountable/test-mountable-inspect.sh | 69 +++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100755 tests/mountable/test-mountable-inspect.sh diff --git a/tests/mountable/Makefile.am b/tests/mountable/Makefile.am index 29c7a3560..602dc9c1d 100644 --- a/tests/mountable/Makefile.am +++ b/tests/mountable/Makefile.am @@ -19,7 +19,7 @@ include $(top_srcdir)/subdir-rules.mk TESTS_ENVIRONMENT = $(top_builddir)/run --test -TESTS=test-internal-parse-mountable +TESTS=test-internal-parse-mountable test-mountable-inspect.sh check_PROGRAMS = test-internal-parse-mountable test_internal_parse_mountable_SOURCES = test-internal-parse-mountable.c diff --git a/tests/mountable/test-mountable-inspect.sh b/tests/mountable/test-mountable-inspect.sh new file mode 100755 index 000000000..5e3ec2d97 --- /dev/null +++ b/tests/mountable/test-mountable-inspect.sh @@ -0,0 +1,69 @@ +#!/bin/bash - +# libguestfs +# Copyright (C) 2013 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +set -e +export LANG=C + +guestfish=../../fish/guestfish +canonical="sed s,/dev/vd,/dev/sd,g" + +# Allow the test to be skipped since btrfs is often broken. +if [ -n "$SKIP_TEST_MOUNTABLE_INSPECT_SH" ]; then + echo "$0: skipping test because environment variable is set." + exit 77 +fi + +# Bail if btrfs is not available. +if ! $guestfish -a /dev/null run : available btrfs; then + echo "$0: skipping test because btrfs is not available" + exit 77 +fi + +rm -f test.qcow2 test.output + +# Start with the regular (good) fedora image, modify /etc/fstab +# and then inspect it. +qemu-img create -F raw -b ../guests/fedora-btrfs.img -f qcow2 test.qcow2 + +# Test that basic inspection works and the expected filesystems are +# found +$guestfish -a test.qcow2 -i <<'EOF' | sort | $canonical > test.output + inspect-get-mountpoints btrfsvol:/dev/sda2/root +EOF + +if [ "$(cat test.output)" != "/: btrfsvol:/dev/sda2/root +/boot: /dev/sda1 +/home: btrfsvol:/dev/sda2/home" ]; then + echo "$0: error #1: unexpected output from inspect-get-mountpoints" + cat test.output + exit 1 +fi + +# Additional sanity check: did we get the release name right? +$guestfish -a test.qcow2 -i <<'EOF' > test.output + inspect-get-product-name btrfsvol:/dev/sda2/root +EOF + +if [ "$(cat test.output)" != "Fedora release 14 (Phony)"]; then + echo "$0: error #2: unexpected output from inspect-get-product-name" + cat test.output + exit 1 +fi + +rm test.qcow2 +rm test.output