* 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();