X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2FMakefile;h=c2f8b018d3ebec2830bc09b9281f542db64dd7e8;hb=09fa5c11aff62bd728d4fe8de28a7abaf252fed3;hp=ce0399b2e0ca7a8cf078696e148550426ac39bea;hpb=34b46cec05a4a9c2ce8a22274212d36502bd43e0;p=pintos-anon diff --git a/tests/Makefile b/tests/Makefile index ce0399b..c2f8b01 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,4 +1,4 @@ -TESTS = threads p1 userprog p2 vm p3 filesys p4 +TESTS = examples threads p1 userprog p2 vm p3 filesys p4 PATH := $(shell pwd)/../src/utils:$(PATH) @@ -13,77 +13,66 @@ check: clean: rm -rf $(TESTS) -SUBMAKEFLAGS = -s - define mk-sandbox rm -rf $@ && mkdir $@ && cp -R ../src $@/src -cd $@/src && $(MAKE) clean $(SUBMAKEFLAGS) +cd $@/src && $(MAKE) -s clean endef define run-tests -cd $@/src/$(PROJECT) && $(MAKE) check +cd $@/src/$(PROJECT) && time $(MAKE) check endef -define run-tests-grade -cd $@/src/$(PROJECT) && $(MAKE) check -cd $@/src/$(PROJECT) && $(MAKE) grade && grep -q PERFECT build/grade +define grade-tests +cd $@/src/$(PROJECT) && $(MAKE) grade +cd $@/src/$(PROJECT) && grep -q PERFECT build/grade +cd $@/src/$(PROJECT) && grep -qv warning build/grade endef define compile cd $@/src/$(PROJECT) && $(MAKE) endef +define test-clean +cd $@/src/$(PROJECT)/build && $(MAKE) clean +cd $@/src/$(PROJECT)/build && set `find -type f` > /dev/null && test $$# = 1 +endef + define clean rm -rf $@ endef define apply-patch -(cd $@ && patch -p0) +(cd $@ && patch -p0) < ../solutions/$@.patch endef PROJECT = $@ +p1: PROJECT = threads +p2: PROJECT = userprog +p3: PROJECT = vm +p4: PROJECT = filesys +# Tests that just compile the provided code. threads:: $(mk-sandbox) $(compile) $(run-tests) TESTS=tests/threads/alarm-single + $(test-clean) $(clean) - userprog vm filesys:: $(mk-sandbox) $(compile) + $(test-clean) $(clean) - -FAST_SIM := $(if $(shell which qemu),--qemu) -export PINTOSOPTS - -p1: PROJECT = threads -p1:: +examples:: $(mk-sandbox) - $(apply-patch) < ../solutions/p1.patch - $(run-tests-grade) - $(clean) - -p2: PROJECT = userprog -p2: PINTOSOPTS = $(FAST_SIM) -p2:: - $(mk-sandbox) - $(apply-patch) < ../solutions/p2.patch - $(run-tests-grade) - $(clean) - -p3: PROJECT = vm -p3: PINTOSOPTS = $(FAST_SIM) -p3:: - $(mk-sandbox) - $(apply-patch) < ../solutions/p3.patch - $(run-tests-grade) + $(compile) $(clean) -p4: PROJECT = filesys -p4: PINTOSOPTS = $(FAST_SIM) -p4:: +# Tests for the reference solutions. +p1 p2 p3 p4:: $(mk-sandbox) - $(apply-patch) < ../solutions/p4.patch - $(run-tests-grade) + $(apply-patch) + $(run-tests) + $(grade-tests) + $(test-clean) $(clean)