The libhugetlbfs test suite has various tests for which a failure (under 
certain circumstances) is expected and not indicative of an error.  It would be 
desirable to specially annotate these cases to eliminate the need for the 
tester to know which failures are known and which could be bugs.

This patch creates some test harness infrastructure that can be used to achieve 
this goal.  How does it work?  If a test case needs expected failure 
validation, a shell script (named <testcase>.sh) is placed in the tests/ 
directory.  The test invocation in run_tests.sh is changed to execute the shell 
script instead of the c program directly.  The shell script must perform any 
required discovery, execute the real test case, and interpret the result.

Comments?

Signed-off-by: Adam Litke <[EMAIL PROTECTED]>
---

 tests/Makefile     |   18 +++++++++++++++++-
 tests/hugetests.h  |    2 ++
 tests/run_tests.sh |    8 ++++++++
 3 files changed, 27 insertions(+), 1 deletions(-)


diff --git a/tests/Makefile b/tests/Makefile
index 27e5dd5..5fb926f 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -16,6 +16,7 @@ LDSCRIPT_TESTS = zero_filesize_segment
 HUGELINK_TESTS = linkhuge linkhuge_nofd linkshare
 HUGELINK_RW_TESTS = linkhuge_rw
 STRESS_TESTS = mmap-gettest mmap-cow shm-gettest shm-getraw shm-fork
+WRAPPERS = 
 HELPERS = get_hugetlbfs_path
 HELPER_LIBS = libheapshrink.so
 BADTOOLCHAIN = bad-toolchain.sh
@@ -60,13 +61,14 @@ DEPFILES = $(LIB_TESTS:%=%.d) $(NOLIB_TESTS:%=%.d) 
$(HUGELINK_TESTS:%=%.d) \
        $(HELPERS:%=%.d) testutils.d
 
 ALLTESTS = $(foreach DIR,$(OBJDIRS),$(TESTS:%=$(DIR)/%))
+ALLWRAPPERS = $(foreach DIR,$(OBJDIRS),$(DIR)/.wrappers)
 ALLHELPERS = $(foreach DIR,$(OBJDIRS),$(HELPERS:%=$(DIR)/%))
 ALLHELPERLIBS = $(foreach DIR,$(OBJDIRS),$(HELPER_LIBS:%=$(DIR)/%))
 ifdef CC64
 ALLTESTS += $(TESTS_64:%=obj64/%)
 endif
 
-all:   $(ALLTESTS) $(ALLHELPERS) $(ALLHELPERLIBS)
+all:   $(ALLTESTS) $(ALLHELPERS) $(ALLHELPERLIBS) $(ALLWRAPPERS)
 
 shmoverride_linked.c: shmoverride_unlinked.c
        ln -s shmoverride_unlinked.c shmoverride_linked.c
@@ -185,6 +187,20 @@ $(HELPERS:%=obj64/%): %: %.o
        @$(VECHO) LD64 "(helper)" $@
        $(CC64) $(LDFLAGS) $(LDFLAGS64) -o $@ $^ $(LDLIBS) -lhugetlbfs
 
+obj32/.wrappers: $(ALLTESTS)
+       @$(VECHO) LN "(test wrappers)" obj32/
+       @for obj in $(WRAPPERS); do                                     \
+           [ -f obj32/$$obj ] && ln -sf ../$$obj.sh obj32/$$obj.sh ;   \
+       done ; true
+       @touch $@
+
+obj64/.wrappers: $(ALLTESTS)
+       @$(VECHO) LN "(test wrappers)" obj64/
+       @for obj in $(WRAPPERS); do                                     \
+           [ -f obj64/$$obj ] && ln -s ../$$obj.sh obj64/$$obj.sh ;    \
+       done ; true
+       @touch $@
+
 clean:
        @$(VECHO) CLEAN "(tests)"
        rm -f *~ *.o *.so *.a *.d core a.out
diff --git a/tests/hugetests.h b/tests/hugetests.h
index 270923b..b860244 100644
--- a/tests/hugetests.h
+++ b/tests/hugetests.h
@@ -31,6 +31,8 @@
 #define RC_PASS        0
 #define RC_CONFIG      1
 #define RC_FAIL                2
+#define RC_XFAIL       3       /* Expected Failure */
+#define RC_XPASS       4       /* Unexpected Pass */
 #define RC_BUG         99
 
 #define FOURGB (1UL << 32)
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 5b2a955..19cd9ee 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -19,6 +19,8 @@ for BITS in 32 64; do
     tot_config[$BITS]=0
     tot_signal[$BITS]=0
     tot_strange[$BITS]=0
+    tot_xpass[$BITS]=0
+    tot_xfail[$BITS]=0
     tot_skip[$BITS]=0
 done
 
@@ -110,6 +112,10 @@ run_test_bits () {
                tot_config[$BITS]=$[tot_config[$BITS] + 1]
             elif [ "$rc" == "2" ]; then
                tot_fail[$BITS]=$[tot_fail[$BITS] + 1]
+            elif [ "$rc" == "3" ]; then
+                tot_xfail[$BITS]=$[tot_xfail[$BITS] + 1]
+            elif [ "$rc" == "4" ]; then
+                tot_xpass[$BITS]=$[tot_xpass[$BITS] + 1]
            elif [ "$rc" -gt 127 ]; then
                tot_signal[$BITS]=$[tot_signal[$BITS] + 1]
             else
@@ -421,5 +427,7 @@ echo -e "*                PASS:     
${tot_pass[32]}\t${tot_pass[64]}"
 echo -e "*                FAIL:        ${tot_fail[32]}\t${tot_fail[64]}"
 echo -e "*    Killed by signal:        ${tot_signal[32]}\t${tot_signal[64]}"
 echo -e "*   Bad configuration:        ${tot_config[32]}\t${tot_config[64]}"
+echo -e "*       Expected FAIL:        ${tot_xfail[32]}\t${tot_xfail[64]}"
+echo -e "*     Unexpected PASS:        ${tot_xpass[32]}\t${tot_xpass[64]}"
 echo -e "* Strange test result:        ${tot_strange[32]}\t${tot_strange[64]}"
 echo -e "**********"


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Libhugetlbfs-devel mailing list
Libhugetlbfs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libhugetlbfs-devel

Reply via email to