summaryrefslogtreecommitdiff
path: root/tests.as-root
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2012-11-15 14:55:45 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2012-11-15 16:57:36 +0000
commit5da1f9b9a94ef139729143aa2c1f649aa809b86b (patch)
treedf297db013b94fc7e78524c9af739c93272aeb4e /tests.as-root
parentcc5913c56a2ae55eb6254e352592751e194b6cd9 (diff)
downloadmorph-5da1f9b9a94ef139729143aa2c1f649aa809b86b.tar.gz
Cleanly handle out of disk space on target filesystem.
Includes new test.
Diffstat (limited to 'tests.as-root')
-rw-r--r--tests.as-root/target-disk-too-small.exit1
-rwxr-xr-xtests.as-root/target-disk-too-small.script51
-rw-r--r--tests.as-root/target-disk-too-small.stderr1
3 files changed, 53 insertions, 0 deletions
diff --git a/tests.as-root/target-disk-too-small.exit b/tests.as-root/target-disk-too-small.exit
new file mode 100644
index 00000000..d00491fd
--- /dev/null
+++ b/tests.as-root/target-disk-too-small.exit
@@ -0,0 +1 @@
+1
diff --git a/tests.as-root/target-disk-too-small.script b/tests.as-root/target-disk-too-small.script
new file mode 100755
index 00000000..92a73a58
--- /dev/null
+++ b/tests.as-root/target-disk-too-small.script
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# Copyright (C) 2011, 2012 Codethink Limited
+#
+# 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; version 2 of the License.
+#
+# 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.
+
+
+## Handle target disk image being too small for its contents.
+
+set -eu
+
+. "$SRCDIR/tests.as-root/lib"
+
+# Shrink linux-system to the minimum btrfs will allow.
+cd "$DATADIR/morphs"
+sed -e 's/"system-kind": "syslinux-disk"/"system-kind": "disk"/' \
+ -e 's/"disk-size": "1G"/"disk-size": "512M"/' \
+ -i linux-system.morph
+git add linux-system.morph
+git commit -q -m "Make linux-system as small as possible"
+
+# Grow hello-chunk to be absurdly large.
+cd "$DATADIR/chunk-repo"
+git checkout -q farrokh
+cat <<'EOF' > hello.morph
+{
+ "name": "hello",
+ "kind": "chunk",
+ "build-system": "dummy",
+ "install-commands": [
+ "dd if=/dev/zero of=\"$DESTDIR\"/huge-file seek=1048580 count=0"
+ ]
+}
+EOF
+git add hello.morph
+git commit -q -m "Make hello be very big"
+
+# Ignore stdout - Morph logs a timestamped error
+"$SRCDIR/scripts/test-morph" build-morphology test:morphs master linux-system \
+ > /dev/null
diff --git a/tests.as-root/target-disk-too-small.stderr b/tests.as-root/target-disk-too-small.stderr
new file mode 100644
index 00000000..487c72e2
--- /dev/null
+++ b/tests.as-root/target-disk-too-small.stderr
@@ -0,0 +1 @@
+ERROR: Ran out of space on linux-system-rootfs disk image. Please increase the system's disk-size.