]> git.ipfire.org Git - thirdparty/kmod.git/blobdiff - testsuite/test-modinfo.c
tools: add basic versions of insert and remove
[thirdparty/kmod.git] / testsuite / test-modinfo.c
index c5934ea79ba72312bd0582a493b0acd3d0336e77..487750207d05ce034eaf4c70a9cdde2f77c9d5bc 100644 (file)
  * 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 <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
 #include <errno.h>
-#include <unistd.h>
 #include <inttypes.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
+#include <unistd.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);
 }
-static 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 = {
-               .stdout = TESTSUITE_ROOTFS "test-modinfo/correct.txt",
+               .out = TESTSUITE_ROOTFS "test-modinfo/correct.txt",
        });
-
-static const struct test *tests[] = {
-       &smodinfo_jonsmodules,
-       NULL,
-};
-
-TESTSUITE_MAIN(tests);
+#endif
+TESTSUITE_MAIN();