diff --git a/test/test-functions.sh b/test/test-functions.sh new file mode 100644 index 0000000..96fa9a7 --- /dev/null +++ b/test/test-functions.sh @@ -0,0 +1,12 @@ +FILE=$1 + +assert_num_funcs() { + local num_funcs=$(nm $FILE | grep -i " t " | wc -l) + + if [[ $num_funcs != $1 ]]; then + echo "$FILE: assertion failed: file has $num_funcs funcs, expected $1" 1>&2 + exit 1 + fi + + return 0 +} diff --git a/test/unit/Makefile.include b/test/unit/Makefile.include index 5146b23..44a42f7 100644 --- a/test/unit/Makefile.include +++ b/test/unit/Makefile.include @@ -11,10 +11,12 @@ MUTE_PASS := >/dev/null MUTE_FAIL := >/dev/null 2>&1 endif -SRC_PATH ?= $(realpath ../../../) -CDO ?= $(SRC_PATH)/kpatch-build/create-diff-object +SRC_PATH ?= $(realpath ../../../) +CDO ?= $(SRC_PATH)/kpatch-build/create-diff-object +TEST_LIBRARY ?= $(SRC_PATH)/test/test-functions.sh -TENV = PARA_STRUCT_SIZE=16 EX_STRUCT_SIZE=12 BUG_STRUCT_SIZE=12 ALT_STRUCT_SIZE=13 +CDO_ENV = PARA_STRUCT_SIZE=16 EX_STRUCT_SIZE=12 BUG_STRUCT_SIZE=12 ALT_STRUCT_SIZE=13 +TEST_ENV = KPATCH_TEST_LIBRARY=$(TEST_LIBRARY) TARGETS = $(patsubst %.$(EXT_ORIG),%.$(EXT_OUTPUT),$(wildcard *.$(EXT_ORIG))) TEST_TARGETS = $(patsubst %.$(EXT_TEST),%.$(EXT_TEST_OUTPUT),$(wildcard *.$(EXT_TEST))) @@ -41,21 +43,21 @@ all: $(TARGETS) $(TEST_TARGETS) clean: rm -f *.$(EXT_TEST_OUTPUT) *.$(EXT_OUTPUT) -%.$(EXT_TEST_OUTPUT): %.$(EXT_OUTPUT) %.$(EXT_TEST) - bash $(@:.$(EXT_TEST_OUTPUT)=.$(EXT_TEST)) $< +%.$(EXT_TEST_OUTPUT): %.$(EXT_OUTPUT) %.$(EXT_TEST) $(TEST_LIBRARY) + $(TEST_ENV) bash $(@:.$(EXT_TEST_OUTPUT)=.$(EXT_TEST)) $< # Don't rely on script creating this @touch $@ %.$(EXT_OUTPUT): %.$(EXT_ORIG) %.$(EXT_PATCHED) $(CDO) $(call check_all,$(TNAME).$(EXT_ORIG)) $(call check_all,$(TNAME).$(EXT_PATCHED)) - $(TENV) $(CDO) $(TNAME).$(EXT_ORIG) $(TNAME).$(EXT_PATCHED) \ + $(CDO_ENV) $(CDO) $(TNAME).$(EXT_ORIG) $(TNAME).$(EXT_PATCHED) \ $(TNAME).$(EXT_ORIG) $@ /dev/null test_$(TNAME) $(MUTE_PASS) %.$(EXT_OUTPUT): %.$(EXT_ORIG) %.$(EXT_FAIL) $(CDO) $(call check_all,$(TNAME).$(EXT_ORIG)) $(call check_all,$(TNAME).$(EXT_FAIL)) - ! $(TENV) $(CDO) $(TNAME).$(EXT_ORIG) $(TNAME).$(EXT_FAIL) \ + ! $(CDO_ENV) $(CDO) $(TNAME).$(EXT_ORIG) $(TNAME).$(EXT_FAIL) \ $(TNAME).$(EXT_ORIG) $@ /dev/null test_$(TNAME) $(MUTE_FAIL) # Expecting to fail, thus create output file manually so we won't rerun the # test without clean diff --git a/test/unit/x86_64/bug-table-section.test b/test/unit/x86_64/bug-table-section.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/bug-table-section.test +++ b/test/unit/x86_64/bug-table-section.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/convert-global-local.test b/test/unit/x86_64/convert-global-local.test index 0e615ff..935a653 100755 --- a/test/unit/x86_64/convert-global-local.test +++ b/test/unit/x86_64/convert-global-local.test @@ -1,9 +1,9 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY + +assert_num_funcs 1 bind=$(nm $1 |awk '/__kmalloc/ {print $2}') [[ $bind = 't' ]] || exit 1 -num_funcs=$(nm $1 | grep -i " t " | wc -l) -[[ $num_funcs = 1 ]] || exit 1 - exit 0 diff --git a/test/unit/x86_64/data-new.test b/test/unit/x86_64/data-new.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/data-new.test +++ b/test/unit/x86_64/data-new.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/data-read-mostly.test b/test/unit/x86_64/data-read-mostly.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/data-read-mostly.test +++ b/test/unit/x86_64/data-read-mostly.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/fixup-section.test b/test/unit/x86_64/fixup-section.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/fixup-section.test +++ b/test/unit/x86_64/fixup-section.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/function-ptr-new.test b/test/unit/x86_64/function-ptr-new.test index 1b98059..feb62a1 100755 --- a/test/unit/x86_64/function-ptr-new.test +++ b/test/unit/x86_64/function-ptr-new.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 2 ]] || exit 1 - -exit 0 +assert_num_funcs 2 diff --git a/test/unit/x86_64/gcc-constprop.test b/test/unit/x86_64/gcc-constprop.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/gcc-constprop.test +++ b/test/unit/x86_64/gcc-constprop.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/gcc-static-local-var-3.test b/test/unit/x86_64/gcc-static-local-var-3.test index 1b98059..feb62a1 100755 --- a/test/unit/x86_64/gcc-static-local-var-3.test +++ b/test/unit/x86_64/gcc-static-local-var-3.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 2 ]] || exit 1 - -exit 0 +assert_num_funcs 2 diff --git a/test/unit/x86_64/gcc-static-local-var-5.test b/test/unit/x86_64/gcc-static-local-var-5.test index 91d0c50..2b445a2 100755 --- a/test/unit/x86_64/gcc-static-local-var-5.test +++ b/test/unit/x86_64/gcc-static-local-var-5.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 5 ]] || exit 1 - -exit 0 +assert_num_funcs 5 diff --git a/test/unit/x86_64/meminfo-string.test b/test/unit/x86_64/meminfo-string.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/meminfo-string.test +++ b/test/unit/x86_64/meminfo-string.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/new-function.test b/test/unit/x86_64/new-function.test index 1b98059..feb62a1 100755 --- a/test/unit/x86_64/new-function.test +++ b/test/unit/x86_64/new-function.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 2 ]] || exit 1 - -exit 0 +assert_num_funcs 2 diff --git a/test/unit/x86_64/replace-section-references.test b/test/unit/x86_64/replace-section-references.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/replace-section-references.test +++ b/test/unit/x86_64/replace-section-references.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/smp-locks-section.test b/test/unit/x86_64/smp-locks-section.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/smp-locks-section.test +++ b/test/unit/x86_64/smp-locks-section.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1 diff --git a/test/unit/x86_64/special-static-2.test b/test/unit/x86_64/special-static-2.test index 1b98059..feb62a1 100755 --- a/test/unit/x86_64/special-static-2.test +++ b/test/unit/x86_64/special-static-2.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 2 ]] || exit 1 - -exit 0 +assert_num_funcs 2 diff --git a/test/unit/x86_64/special-static.test b/test/unit/x86_64/special-static.test index 1b98059..feb62a1 100755 --- a/test/unit/x86_64/special-static.test +++ b/test/unit/x86_64/special-static.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 2 ]] || exit 1 - -exit 0 +assert_num_funcs 2 diff --git a/test/unit/x86_64/tracepoints-section.test b/test/unit/x86_64/tracepoints-section.test index a1e77d0..3071c8e 100755 --- a/test/unit/x86_64/tracepoints-section.test +++ b/test/unit/x86_64/tracepoints-section.test @@ -1,7 +1,4 @@ #!/bin/bash +source $KPATCH_TEST_LIBRARY -num_funcs=$(nm $1 | grep -i " t " | wc -l) - -[[ $num_funcs = 1 ]] || exit 1 - -exit 0 +assert_num_funcs 1