# ------------------------------------------------------------------------------
ROOTFS = testsuite/rootfs
+ROOTFS_PRISTINE = $(top_srcdir)/testsuite/rootfs-pristine
+CREATE_ROOTFS = $(AM_V_GEN) ( $(RM) -rf $(ROOTFS) && \
+ cp -r $(ROOTFS_PRISTINE) $(ROOTFS) && \
+ touch testsuite/stamp-rootfs )
-$(ROOTFS): $(top_srcdir)/testsuite/rootfs-pristine
- $(AM_V_GEN) cp -r $< $@
+rootfs:
+ $(CREATE_ROOTFS)
+
+$(ROOTFS): $(ROOTFS_PRISTINE)
+ $(CREATE_ROOTFS)
TESTSUITE_OVERRIDE_LIBS = testsuite/uname.la testsuite/path.la \
testsuite/init_module.la \
TESTSUITE_CPPFLAGS = $(AM_CPPFLAGS) \
-DTESTSUITE_ROOTFS=\"$(abs_top_builddir)/$(ROOTFS)/\" \
-DABS_TOP_BUILDDIR=\"$(abs_top_builddir)\"
-TESTSUITE_LDADD = testsuite/libtestsuite.la libkmod/libkmod-private.la
+TESTSUITE_LDADD = testsuite/libtestsuite.la libkmod/libkmod-private.la \
+ libkmod/libkmod-util.la
check_LTLIBRARIES += testsuite/libtestsuite.la
testsuite_libtestsuite_la_SOURCES = testsuite/testsuite.c \
check_PROGRAMS = $(TESTSUITE)
TESTS = $(TESTSUITE)
-testsuite_test_testsuite_LDADD = testsuite/libtestsuite.la
+testsuite_test_testsuite_LDADD = testsuite/libtestsuite.la libkmod/libkmod-util.la
testsuite_test_testsuite_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
testsuite_test_init_LDADD = $(TESTSUITE_LDADD)
testsuite_test_init_CPPFLAGS = $(TESTSUITE_CPPFLAGS)
testsuite-distclean:
-find $(ROOTFS) -type d -exec chmod +w {} \;
-$(RM) -rf $(ROOTFS)
+ -$(RM) testsuite/stamp-rootfs
DISTCLEAN_LOCAL_HOOKS += testsuite-distclean
EXTRA_DIST += testsuite/rootfs-pristine
#include <unistd.h>
#include <sys/epoll.h>
#include <sys/prctl.h>
+#include <sys/stat.h>
#include <sys/wait.h>
+#include "libkmod-util.h"
#include "testsuite.h"
static const char *ANSI_HIGHLIGHT_GREEN_ON = "\x1B[1;32m";
}
}
+ if (t->config[TC_ROOTFS] != NULL) {
+ const char *stamp = TESTSUITE_ROOTFS "../stamp-rootfs";
+ const char *rootfs = t->config[TC_ROOTFS];
+ struct stat rootfsst, stampst;
+
+ if (stat(stamp, &stampst) != 0) {
+ ERR("could not stat %s\n - %m", stamp);
+ exit(EXIT_FAILURE);
+ }
+
+ if (stat(rootfs, &rootfsst) != 0) {
+ ERR("could not stat %s\n - %m", rootfs);
+ exit(EXIT_FAILURE);
+ }
+
+ if (stat_mstamp(&rootfsst) > stat_mstamp(&stampst)) {
+ ERR("rootfs %s is dirty, please run 'make rootfs' before runnning this test\n",
+ rootfs);
+ exit(EXIT_FAILURE);
+ }
+ }
+
if (t->need_spawn)
return test_spawn_test(t);
else