X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2FMakefile;h=ce0399b2e0ca7a8cf078696e148550426ac39bea;hb=34b46cec05a4a9c2ce8a22274212d36502bd43e0;hp=f813f7de92a1206dfbd157e4a8690e563df92df7;hpb=0b03e95ba4a5ca2c936a98d77caee8f6f4087529;p=pintos-anon diff --git a/tests/Makefile b/tests/Makefile index f813f7d..ce0399b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,4 +1,4 @@ -TESTS = threads p1-1 p1-2 p1-3 list stdlib userprog p2 vm filesys +TESTS = threads p1 userprog p2 vm p3 filesys p4 PATH := $(shell pwd)/../src/utils:$(PATH) @@ -13,106 +13,77 @@ check: clean: rm -rf $(TESTS) -define prep-threads-grading -endef - -define prep-userprog-grading -$(MAKE) -C ../src/userprog -s -$(MAKE) -C ../grading/userprog -s -endef - -define prep-vm-grading -$(MAKE) -C ../src/userprog -s -$(MAKE) -C ../grading/vm -s -endef +SUBMAKEFLAGS = -s -define prep-filesys-grading -$(MAKE) -C ../grading/filesys -s +define mk-sandbox +rm -rf $@ && mkdir $@ && cp -R ../src $@/src +cd $@/src && $(MAKE) clean $(SUBMAKEFLAGS) endef -define prep-grading -$(prep-$(PROJECT)-grading) +define run-tests +cd $@/src/$(PROJECT) && $(MAKE) check endef -define mk-sandbox -rm -rf $@ && mkdir -p $@/pintos && cp -R ../src $@/pintos +define run-tests-grade +cd $@/src/$(PROJECT) && $(MAKE) check +cd $@/src/$(PROJECT) && $(MAKE) grade && grep -q PERFECT build/grade endef -define run-tests -cd $@ && ../../grading/$(PROJECT)/run-tests +define compile +cd $@/src/$(PROJECT) && $(MAKE) endef define clean -rm -rf $@/pintos +rm -rf $@ endef define apply-patch -(cd $@/pintos && patch -p0 -s) < +(cd $@ && patch -p0) endef -threads: PROJECT = threads -threads:: - $(mk-sandbox) - $(run-tests) -d alarm-single - $(clean) +PROJECT = $@ -p1-1: PROJECT = threads -p1-1:: - $(mk-sandbox) - $(apply-patch) ../solutions/p1-1.patch - $(run-tests) -d alarm.* - $(clean) - -p1-2: PROJECT = threads -p1-2:: +threads:: $(mk-sandbox) - $(apply-patch) ../solutions/p1-2.patch - $(run-tests) -d join.* + $(compile) + $(run-tests) TESTS=tests/threads/alarm-single $(clean) -p1-3: PROJECT = threads -p1-3:: +userprog vm filesys:: $(mk-sandbox) - $(apply-patch) ../solutions/p1-3.patch - $(run-tests) -d priority.* + $(compile) $(clean) -list: PROJECT = threads -list stdlib:: - $(mk-sandbox) - cp ../src/tests/threads/$@.c $@/pintos/src/threads/test.c - $(MAKE) -C $@/pintos/src/threads -s - -(cd $@/pintos/src/threads/build && pintos -v run -q) | tee $@/output - grep -q '$@: PASS' $@/output - $(clean) +FAST_SIM := $(if $(shell which qemu),--qemu) +export PINTOSOPTS -userprog: PROJECT = userprog -userprog:: - $(prep-grading) +p1: PROJECT = threads +p1:: $(mk-sandbox) - $(apply-patch) ../solutions/p1-2.patch - echo '#define THREAD_JOIN_IMPLEMENTED 1' > $@/pintos/src/constants.h - $(run-tests) null + $(apply-patch) < ../solutions/p1.patch + $(run-tests-grade) $(clean) p2: PROJECT = userprog +p2: PINTOSOPTS = $(FAST_SIM) p2:: - $(prep-grading) $(mk-sandbox) - $(apply-patch) ../solutions/p2.patch - $(run-tests) + $(apply-patch) < ../solutions/p2.patch + $(run-tests-grade) $(clean) -vm: PROJECT = vm -vm:: - $(prep-grading) +p3: PROJECT = vm +p3: PINTOSOPTS = $(FAST_SIM) +p3:: $(mk-sandbox) - $(MAKE) -C $@/pintos/src/vm -s + $(apply-patch) < ../solutions/p3.patch + $(run-tests-grade) $(clean) -filesys: PROJECT = filesys -filesys:: - $(prep-grading) +p4: PROJECT = filesys +p4: PINTOSOPTS = $(FAST_SIM) +p4:: $(mk-sandbox) - $(MAKE) -C $@/pintos/src/filesys -s + $(apply-patch) < ../solutions/p4.patch + $(run-tests-grade) $(clean)