]> git.ipfire.org Git - thirdparty/kmod.git/blobdiff - testsuite/test-modinfo.c
testsuite: add missing error handling
[thirdparty/kmod.git] / testsuite / test-modinfo.c
index 76506bed1017e549ea34648b136f6ad06dd4b3f1..8fdfe35ef4e61a10a93248936c00843cc1b14799 100644 (file)
@@ -12,8 +12,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <errno.h>
 
 #include "testsuite.h"
 
-static noreturn int modinfo_jonsmodules(const struct test *t)
+static const char *progname = ABS_TOP_BUILDDIR "/tools/modinfo";
+
+#define DEFINE_MODINFO_TEST(_field, ...) \
+static noreturn int test_modinfo_##_field(const struct test *t) \
+{ \
+       const char *const args[] = { \
+               progname, "-F", #_field ,\
+               __VA_ARGS__ , \
+               NULL, \
+       }; \
+       test_spawn_prog(progname, args); \
+       exit(EXIT_FAILURE); \
+} \
+DEFINE_TEST(test_modinfo_##_field, \
+       .description = "check " #_field " output of modinfo for different architectures", \
+       .config = { \
+               [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modinfo/", \
+       }, \
+       .output = { \
+               .out = TESTSUITE_ROOTFS "test-modinfo/correct-" #_field ".txt", \
+       })
+
+#define DEFINE_MODINFO_GENERIC_TEST(_field) \
+       DEFINE_MODINFO_TEST(_field, \
+                           "/mod-simple-i386.ko", \
+                           "/mod-simple-x86_64.ko", \
+                           "/mod-simple-sparc64.ko")
+
+#define DEFINE_MODINFO_SIGN_TEST(_field) \
+       DEFINE_MODINFO_TEST(_field, \
+                           "/mod-simple-sha1.ko", \
+                           "/mod-simple-sha256.ko")
+
+DEFINE_MODINFO_GENERIC_TEST(filename);
+DEFINE_MODINFO_GENERIC_TEST(author);
+DEFINE_MODINFO_GENERIC_TEST(license);
+DEFINE_MODINFO_GENERIC_TEST(description);
+DEFINE_MODINFO_GENERIC_TEST(parm);
+DEFINE_MODINFO_GENERIC_TEST(depends);
+
+DEFINE_MODINFO_SIGN_TEST(signer);
+DEFINE_MODINFO_SIGN_TEST(sig_key);
+DEFINE_MODINFO_SIGN_TEST(sig_hashalgo);
+
+#if 0
+static noreturn int test_modinfo_signature(const struct test *t)
 {
-       const char *progname = ABS_TOP_BUILDDIR "/tools/modinfo";
        const char *const args[] = {
                progname,
-               "/ext4-i686.ko", "/ext4-ppc64.ko", "/ext4-s390x.ko",
-               "/ext4-x86_64.ko", "/ext4-x86_64-sha1.ko",
-               "/ext4-x86_64-sha256.ko",
                NULL,
        };
 
        test_spawn_prog(progname, args);
        exit(EXIT_FAILURE);
 }
-DEFINE_TEST(modinfo_jonsmodules,
-       .description = "check if output for modinfo is correct for i686, ppc64, s390x and x86_64",
+DEFINE_TEST(test_modinfo_signature,
+       .description = "check signatures are correct for modinfo is correct for i686, ppc64, s390x and x86_64",
        .config = {
                [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modinfo/",
        },
        .output = {
                .out = TESTSUITE_ROOTFS "test-modinfo/correct.txt",
        });
+#endif
+
+static noreturn int test_modinfo_external(const struct test *t)
+{
+       const char *const args[] = {
+               progname, "-F", "filename",
+               "mod-simple",
+               NULL,
+       };
+       test_spawn_prog(progname, args);
+       exit(EXIT_FAILURE);
+}
+DEFINE_TEST(test_modinfo_external,
+       .description = "check if modinfo finds external module",
+       .config = {
+               [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modinfo/external",
+               [TC_UNAME_R] = "4.4.4",
+       },
+       .output = {
+               .out = TESTSUITE_ROOTFS "test-modinfo/correct-external.txt",
+       })
 
 TESTSUITE_MAIN();