From 7f1a29e9e33059dfebdc24bb3ffaa3dac46b58f1 Mon Sep 17 00:00:00 2001 From: norly Date: Wed, 19 Jun 2013 20:20:10 +0100 Subject: [PATCH] Automate tests --- .gitignore | 1 + Makefile | 7 +--- tests/01-noop32.test | 10 +++++ tests/03-injection32.test | 11 ++++++ tests/05-detour.test | 11 ++++++ tests/06-data256mb.test | 10 +++++ tests/Makefile | 37 ++++++++++++++++++ tests/boilerplate.sh | 14 +++++++ tests/reference/puts-alternative32.o | Bin 0 -> 1128 bytes tests/reference/putsmain32 | Bin 0 -> 6101 bytes tests/reference/putsmain32-cloned | Bin 0 -> 6104 bytes .../putsmain32-with-puts-alternative32 | Bin 0 -> 18696 bytes tests/runtests.sh | 20 ++++++++++ tests/src/Makefile | 22 +++++++++++ tests/src/data256mb.c | 2 + tests/src/puts_alternative.c | 10 +++++ tests/src/puts_noarg.c | 7 ++++ tests/src/putsmain.c | 9 +++++ tests/src/putsmainsub.c | 13 ++++++ 19 files changed, 179 insertions(+), 5 deletions(-) create mode 100644 tests/01-noop32.test create mode 100644 tests/03-injection32.test create mode 100644 tests/05-detour.test create mode 100644 tests/06-data256mb.test create mode 100644 tests/Makefile create mode 100755 tests/boilerplate.sh create mode 100644 tests/reference/puts-alternative32.o create mode 100755 tests/reference/putsmain32 create mode 100755 tests/reference/putsmain32-cloned create mode 100755 tests/reference/putsmain32-with-puts-alternative32 create mode 100755 tests/runtests.sh create mode 100644 tests/src/Makefile create mode 100644 tests/src/data256mb.c create mode 100644 tests/src/puts_alternative.c create mode 100644 tests/src/puts_noarg.c create mode 100644 tests/src/putsmain.c create mode 100644 tests/src/putsmainsub.c diff --git a/.gitignore b/.gitignore index a76b712..4c3bcf6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /build +/tests/build .o .a .so diff --git a/Makefile b/Makefile index c8dee76..c93b2ab 100644 --- a/Makefile +++ b/Makefile @@ -25,11 +25,7 @@ default: $(EXE) .PHONY: check check: $(EXE) - $(error the re-layouting has broken make check for now, sorry.) - $(EXE) $(EXE) -o testexe - @cmp $(EXE) testexe - @rm testexe - @echo "Check successful." + make -C tests check .PHONY: debug @@ -53,6 +49,7 @@ clean: rm -f $(OBJS) rm -f $(TESTEXES) rm -rf $(BUILDDIR)/ + make -C tests clean .PHONY: distclean diff --git a/tests/01-noop32.test b/tests/01-noop32.test new file mode 100644 index 0000000..145bae3 --- /dev/null +++ b/tests/01-noop32.test @@ -0,0 +1,10 @@ +#!/bin/sh +source ./boilerplate.sh + +elfucli --input reference/putsmain32 \ + --output $BUILDDIR/putsmain32-cloned +test_check_retval + +cmp reference/putsmain32-cloned \ + $BUILDDIR/putsmain32-cloned +test_check_retval diff --git a/tests/03-injection32.test b/tests/03-injection32.test new file mode 100644 index 0000000..235f243 --- /dev/null +++ b/tests/03-injection32.test @@ -0,0 +1,11 @@ +#!/bin/sh +source ./boilerplate.sh + +elfucli --input reference/putsmain32 \ + --reladd reference/puts-alternative32.o \ + --output $BUILDDIR/putsmain32-with-puts-alternative32 +test_check_retval + +cmp reference/putsmain32-with-puts-alternative32 \ + $BUILDDIR/putsmain32-with-puts-alternative32 +test_check_retval diff --git a/tests/05-detour.test b/tests/05-detour.test new file mode 100644 index 0000000..c46ef2f --- /dev/null +++ b/tests/05-detour.test @@ -0,0 +1,11 @@ +#!/bin/sh +source ./boilerplate.sh + +elfucli --input $BUILDDIR/putsmainsub \ + --reladd $BUILDDIR/puts_noarg.o \ + --detour sub,puts_noarg \ + --output $BUILDDIR/putsmainsub-with-puts-noarg-detour +test_check_retval + +$BUILDDIR/putsmainsub-with-puts-noarg-detour | grep -q "puts_noarg() is returning." +test_check_retval diff --git a/tests/06-data256mb.test b/tests/06-data256mb.test new file mode 100644 index 0000000..55cfcd2 --- /dev/null +++ b/tests/06-data256mb.test @@ -0,0 +1,10 @@ +#!/bin/sh +source ./boilerplate.sh + +elfucli --input $BUILDDIR/putsmain \ + --reladd $BUILDDIR/data256mb.o \ + --output $BUILDDIR/putsmain-with-data256mb +test_check_retval + +$BUILDDIR/putsmain-with-data256mb | grep -q "puts() #2 called in main()" +test_check_retval diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..757ea21 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,37 @@ +BUILDDIR = build +SRCDIR = src + +SOURCES = $(shell find $(SRCDIR)/ -iname "*.c") +OBJS = $(patsubst $(SRCDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES)) +EXENAMES = putsmain putsmainsub +EXES = $(patsubst %, $(BUILDDIR)/%, $(EXENAMES)) + +CFLAGS = -Wall -pedantic + + + +.PHONY: testbase +testbase: $(OBJS) $(EXES) + + +.PHONY: check +check: testbase + ./runtests.sh + + +$(BUILDDIR)/putsmain: $(SRCDIR)/putsmain.c + @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi + gcc $(CFLAGS) -o $@ $^ + +$(BUILDDIR)/putsmainsub: $(SRCDIR)/putsmainsub.c + @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi + gcc $(CFLAGS) -o $@ $^ + +$(BUILDDIR)/%.o: $(SRCDIR)/%.c + @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi + gcc $(CFLAGS) -c -o $@ $< + + +.PHONY: clean +clean: + rm -rf $(BUILDDIR)/ diff --git a/tests/boilerplate.sh b/tests/boilerplate.sh new file mode 100755 index 0000000..2ebafa2 --- /dev/null +++ b/tests/boilerplate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BUILDDIR=${BUILDDIR:-build} +mkdir -p $BUILDDIR + +function test_check_retval +{ + TEST_RETVAL=$? + + if [ $TEST_RETVAL != 0 ] + then + exit $TEST_RETVAL + fi +} diff --git a/tests/reference/puts-alternative32.o b/tests/reference/puts-alternative32.o new file mode 100644 index 0000000000000000000000000000000000000000..cc78018a96ecb62adc28285f9ba4e9957f33aa26 GIT binary patch literal 1128 zcma)5O=}cE5Utsn=o&Y{1P@9C=MZ6|*cb>Hyu}cMAcErFgx%Rqn_ZHfm6?vH2p&W* z_)ENb*PDp=Lj(_A1dqb{-b@!W8bKda*VpT+?waZ6TeofmK_H4iLa98Fd)`?q2yK~@ zS?L^pdGYPcr)Zh6uRo{L>FcfLVYFPB2)8x-`GY(>aCtY`cQ#8CH+p2-EAcSNWRM#3e2p^Uary>vJ=^AHjfc@+V`L^r2l=>Y-Yh-8arYc4BrCmx$@-xtMHHI)ll0 zY*XaYiL(YrxtzOXum=Km*BLN0hegeH2$S}j_SJ;?tT?+Q4q-+&N3$W0m^T5labdE^ssAd7`nF3eFjye^|6 z@6_;`9HIlEt$p9aW)Fq-y@Nn~E)6Lxn{oOLe8^u)1$dzV literal 0 HcmV?d00001 diff --git a/tests/reference/putsmain32 b/tests/reference/putsmain32 new file mode 100755 index 0000000000000000000000000000000000000000..9381a77fc1836726ae578053be23afc84c01f7c2 GIT binary patch literal 6101 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 G{rv|{J~re4 literal 0 HcmV?d00001 diff --git a/tests/reference/putsmain32-with-puts-alternative32 b/tests/reference/putsmain32-with-puts-alternative32 new file mode 100755 index 0000000000000000000000000000000000000000..953ddad817253b60089f9767dd21e825a416099d GIT binary patch literal 18696 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 /dev/null 2>&1 + if [ $? -ne 0 ] + then + echo -e "\r\033[1m\033[37m[\033[31mFAILED\033[37m]\033[0m $testname" + echo -e "\033[1m\033[37m[\033[34m RERUN\033[37m]\033[0m $testname" + bash $testfile + echo -e "\033[1m\033[37m[\033[34mENDRUN\033[37m]\033[0m $testname" + else + echo -e "\r\033[1m\033[37m[\033[32m OK \033[37m]\033[0m $testname" + fi +done diff --git a/tests/src/Makefile b/tests/src/Makefile new file mode 100644 index 0000000..1a2b177 --- /dev/null +++ b/tests/src/Makefile @@ -0,0 +1,22 @@ +CFLAGS := -Wall -pedantic +EXES := putsmain putsmainsub brkmain +OBJS := puts_noarg.o puts_alternative.o puts_data.o +TARGETS := $(EXES) $(OBJS) + + +all: $(TARGETS) + + +putsmain: putsmain.c + gcc $(CFLAGS) $^ -o $@ + +putsmainsub: putsmainsub.c + gcc $(CFLAGS) $^ -o $@ + +.c.o: + gcc $(CFLAGS) -c $< -o $@ + + +.PHONY: clean +clean: + rm -f $(TARGETS) diff --git a/tests/src/data256mb.c b/tests/src/data256mb.c new file mode 100644 index 0000000..2cd3849 --- /dev/null +++ b/tests/src/data256mb.c @@ -0,0 +1,2 @@ +/* 256 MB worth of data. */ +char data256mb[256*1024*1024] = {1}; diff --git a/tests/src/puts_alternative.c b/tests/src/puts_alternative.c new file mode 100644 index 0000000..21d65cb --- /dev/null +++ b/tests/src/puts_alternative.c @@ -0,0 +1,10 @@ +#include + +void puts_alternative(char *arg) +{ + puts("puts_alternative() has been reached."); + + puts(arg); + + puts("puts_alternative() is returning."); +} diff --git a/tests/src/puts_noarg.c b/tests/src/puts_noarg.c new file mode 100644 index 0000000..fe7d494 --- /dev/null +++ b/tests/src/puts_noarg.c @@ -0,0 +1,7 @@ +#include + +void puts_noarg() +{ + puts("puts_noarg() has been reached."); + puts("puts_noarg() is returning."); +} diff --git a/tests/src/putsmain.c b/tests/src/putsmain.c new file mode 100644 index 0000000..9b2ce3c --- /dev/null +++ b/tests/src/putsmain.c @@ -0,0 +1,9 @@ +#include + +int main() +{ + puts("puts() #1 called in main()"); + puts("puts() #2 called in main()"); + + return 0; +} diff --git a/tests/src/putsmainsub.c b/tests/src/putsmainsub.c new file mode 100644 index 0000000..63d4171 --- /dev/null +++ b/tests/src/putsmainsub.c @@ -0,0 +1,13 @@ +#include + +void sub() +{ + puts("sub() called."); +} + +int main() +{ + sub(); + + return 0; +} -- 2.30.2