]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
add file filters tests
authorAndrei Borzenkov <arvidjaar@gmail.com>
Fri, 5 Dec 2014 17:19:58 +0000 (20:19 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Fri, 5 Dec 2014 18:04:06 +0000 (21:04 +0300)
Tests file access with all filters enabled. It does it both for local
and network access, due to regression in signature checking over network.

This includes all files in distribution to not depend on existence
of compression tools and gpg. Test preloads all required modules to
avoid having to provide signatures for them.

Still not implemented is file offset filter (is not available in grub
script, needs extra module)

13 files changed:
ChangeLog
Makefile.util.def
conf/Makefile.extra-dist
tests/file_filter/file.gz [new file with mode: 0644]
tests/file_filter/file.gz.sig [new file with mode: 0644]
tests/file_filter/file.lzop [new file with mode: 0644]
tests/file_filter/file.lzop.sig [new file with mode: 0644]
tests/file_filter/file.xz [new file with mode: 0644]
tests/file_filter/file.xz.sig [new file with mode: 0644]
tests/file_filter/keys [new file with mode: 0644]
tests/file_filter/keys.pub [new file with mode: 0644]
tests/file_filter/test.cfg [new file with mode: 0644]
tests/file_filter_test.in [new file with mode: 0644]

index c163cd5c0bbee587973317c38a0be3e523c6ad9d..91ea81fb4b050ed9edfb8f56671655fc7fbaa1d8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,18 @@
 2014-12-05  Andrei Borzenkov  <arvidjaar@gmail.com>
 
        * tests/util/grub-shell.in: Support --files also for netboot.
+       * tests/file_filter_test.in: New file with file filters tests.
+       * Makefile.util.def: Add file_filter_test.
+       * conf/Makefile.extra-dist: ... and here.
+       * tests/file_filter/file.gz: Test file for file_filter_test.
+       * tests/file_filter/file.gz.sig: Likewise.
+       * tests/file_filter/file.lzop: Likewise.
+       * tests/file_filter/file.lzop.sig: Likewise.
+       * tests/file_filter/file.xz: Likewise.
+       * tests/file_filter/file.xz.sig: Likewise.
+       * tests/file_filter/keys: Likewise.
+       * tests/file_filter/keys.pub: Likewise.
+       * tests/file_filter/test.cfg: Likewise.
 
 2014-12-01  Andrei Borzenkov  <arvidjaar@gmail.com>
 
index a286a89cd8d4327098f970f3bd5522d1a438003a..fed96d864371f24298609a870cb9658a769eb2e1 100644 (file)
@@ -1150,6 +1150,12 @@ script = {
   common = tests/grub_cmd_tr.in;
 };
 
+script = {
+  testcase;
+  name = file_filter_test;
+  common = tests/file_filter_test.in;
+};
+
 program = {
   testcase;
   name = example_unit_test;
index 51f08c1f901daaa51fa8523ab5cc48e92613c32f..1b95ccd3f1b82a9181160ac8124cb514286608c3 100644 (file)
@@ -110,3 +110,14 @@ EXTRA_DIST += tests/dfly-mbr-mbexample.mbr.img.gz
 EXTRA_DIST += tests/dfly-mbr-mbexample.dfly.img.gz
 
 EXTRA_DIST += coreboot.cfg
+
+EXTRA_DIST += tests/file_filter/file
+EXTRA_DIST += tests/file_filter/file.gz
+EXTRA_DIST += tests/file_filter/file.gz.sig
+EXTRA_DIST += tests/file_filter/file.lzop
+EXTRA_DIST += tests/file_filter/file.lzop.sig
+EXTRA_DIST += tests/file_filter/file.xz
+EXTRA_DIST += tests/file_filter/file.xz.sig
+EXTRA_DIST += tests/file_filter/keys
+EXTRA_DIST += tests/file_filter/keys.pub
+EXTRA_DIST += tests/file_filter/test.cfg
diff --git a/tests/file_filter/file.gz b/tests/file_filter/file.gz
new file mode 100644 (file)
index 0000000..a07ffcb
Binary files /dev/null and b/tests/file_filter/file.gz differ
diff --git a/tests/file_filter/file.gz.sig b/tests/file_filter/file.gz.sig
new file mode 100644 (file)
index 0000000..602e618
Binary files /dev/null and b/tests/file_filter/file.gz.sig differ
diff --git a/tests/file_filter/file.lzop b/tests/file_filter/file.lzop
new file mode 100644 (file)
index 0000000..5f5a971
Binary files /dev/null and b/tests/file_filter/file.lzop differ
diff --git a/tests/file_filter/file.lzop.sig b/tests/file_filter/file.lzop.sig
new file mode 100644 (file)
index 0000000..7c68dcf
Binary files /dev/null and b/tests/file_filter/file.lzop.sig differ
diff --git a/tests/file_filter/file.xz b/tests/file_filter/file.xz
new file mode 100644 (file)
index 0000000..151a980
Binary files /dev/null and b/tests/file_filter/file.xz differ
diff --git a/tests/file_filter/file.xz.sig b/tests/file_filter/file.xz.sig
new file mode 100644 (file)
index 0000000..5756924
Binary files /dev/null and b/tests/file_filter/file.xz.sig differ
diff --git a/tests/file_filter/keys b/tests/file_filter/keys
new file mode 100644 (file)
index 0000000..1afa713
Binary files /dev/null and b/tests/file_filter/keys differ
diff --git a/tests/file_filter/keys.pub b/tests/file_filter/keys.pub
new file mode 100644 (file)
index 0000000..61d4e7a
Binary files /dev/null and b/tests/file_filter/keys.pub differ
diff --git a/tests/file_filter/test.cfg b/tests/file_filter/test.cfg
new file mode 100644 (file)
index 0000000..4308aac
--- /dev/null
@@ -0,0 +1,6 @@
+trust /keys.pub
+set check_signatures=enforce
+cat /file.gz
+cat /file.xz
+cat /file.lzop
+set check_signatures=
diff --git a/tests/file_filter_test.in b/tests/file_filter_test.in
new file mode 100644 (file)
index 0000000..8909e40
--- /dev/null
@@ -0,0 +1,76 @@
+#! /bin/sh
+# Copyright (C) 2014  Free Software Foundation, Inc.
+#
+# GRUB 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 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+set -e
+grubshell=@builddir@/grub-shell
+
+. "@builddir@/grub-core/modinfo.sh"
+
+filters="gzio xzio lzopio verify"
+modules="cat mpi"
+
+for mod in $(cut -d ' ' -f 2 "@builddir@/grub-core/crypto.lst"  | sort -u); do
+    modules="$modules $mod"
+done
+
+for file in file.gz file.xz file.lzop file.gz.sig file.xz.sig file.lzop.sig keys.pub; do
+    files="$files /$file=@srcdir@/tests/file_filter/$file"
+done
+
+# GRUB cat command adds extra newline after file
+result="Hello, user!
+
+Hello, user!
+
+Hello, user!"
+
+out="$("${grubshell}" --modules="$modules $filters" --files="$files" "@srcdir@/tests/file_filter/test.cfg")"
+if [ "$out" != "$result" ]; then
+   echo LOCAL FAIL
+   echo "$out"
+   exit 1
+fi
+
+# Taken from netboot_test
+case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
+    # PLATFORM: emu is different
+    *-emu)
+       exit 0;;
+    # PLATFORM: Flash targets
+    i386-qemu | i386-coreboot | mips-qemu_mips | mipsel-qemu_mips)
+       exit 0;;
+    # FIXME: currently grub-shell uses only -kernel for loongson
+    mipsel-loongson)
+       exit 0;;
+    # FIXME: no rtl8139 support
+    i386-multiboot)
+       exit 0;;
+    # FIXME: We don't fully support netboot on ARC
+    *-arc)
+       exit 0;;
+    # FIXME: Many QEMU firmware have no netboot capability
+    *-efi | i386-ieee1275 | powerpc-ieee1275 | sparc64-ieee1275)
+       exit 0;;
+esac
+
+out="$("${grubshell}" --boot=net --modules="$modules $filters" --files="$files" "@srcdir@/tests/file_filter/test.cfg")"
+if [ "$out" != "$result" ]; then
+   echo NET FAIL
+   echo "$out"
+   exit 1
+fi
+
+exit 0