Make tests public. Rewrite most tests. Add tests.
[pintos-anon] / tests / Makefile
index 58ca41791bf3cfb5568a673b87cf9fa8bd248f72..be8b0d552648438dae7e86818fd05e3122003ea0 100644 (file)
@@ -1,4 +1,4 @@
-TESTS = threads p1-1 p1-2 list stdlib stdio userprog p2 vm filesys
+TESTS = threads p1 userprog p2 vm p3 filesys p4
 
 PATH := $(shell pwd)/../src/utils:$(PATH)
 
@@ -15,34 +15,17 @@ clean:
 
 SUBMAKEFLAGS = -s
 
-define prep-threads-grading
-endef
-
-define prep-userprog-grading
-$(MAKE) -C ../src/userprog $(SUBMAKEFLAGS)
-$(MAKE) -C ../grading/userprog $(SUBMAKEFLAGS)
-endef
-
-define prep-vm-grading
-$(MAKE) -C ../src/userprog $(SUBMAKEFLAGS)
-$(MAKE) -C ../grading/vm $(SUBMAKEFLAGS)
-endef
-
-define prep-filesys-grading
-$(MAKE) -C ../grading/filesys $(SUBMAKEFLAGS)
-endef
-
-define prep-grading
-$(prep-$(PROJECT)-grading)
-endef
-
 define mk-sandbox
-rm -rf $@ && mkdir -p $@/pintos && cp -R ../src $@/pintos
-cd $@/pintos/src && $(MAKE) clean $(SUBMAKEFLAGS)
+rm -rf $@ && mkdir $@ && cp -R ../src $@/src
+cd $@/src && $(MAKE) clean $(SUBMAKEFLAGS)
 endef
 
 define run-tests
-cd $@ && ../../grading/$(PROJECT)/run-tests
+cd $@/src/$(PROJECT) && make check
+endef
+
+define compile
+cd $@/src/$(PROJECT) && make
 endef
 
 define clean
@@ -50,64 +33,46 @@ rm -rf $@
 endef
 
 define apply-patch
-(cd $@/pintos && patch -p0)
+(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 priority.*
+       $(compile)
+       $(run-tests) TESTS=tests/threads/alarm-single
        $(clean)
 
-list: PROJECT = threads
-list stdlib stdio::
+userprog vm filesys::
        $(mk-sandbox)
-       cp ../src/tests/threads/$@.c $@/pintos/src/threads/test.c
-       $(MAKE) -C $@/pintos/src/threads $(SUBMAKEFLAGS)
-       -(cd $@/pintos/src/threads/build && pintos -v run -q) | tee $@/output
-       grep -q '$@: PASS' $@/output
+       $(compile)
        $(clean)
 
-userprog: PROJECT = userprog
-userprog::
-       $(prep-grading) null.dsk
+p1: PROJECT = threads
+p1::
        $(mk-sandbox)
-       $(apply-patch) < ../solutions/p2-null.patch
-       $(run-tests) null
+       $(apply-patch) < ../solutions/p1.patch
+       $(run-tests)
        $(clean)
 
 p2: PROJECT = userprog
 p2::
-       $(prep-grading)
        $(mk-sandbox)
        $(apply-patch) < ../solutions/p2.patch
        $(run-tests)
        $(clean)
 
-vm: PROJECT = vm
-vm::
-       $(prep-grading)
+p3: PROJECT = vm
+p3::
        $(mk-sandbox)
-       $(MAKE) -C $@/pintos/src/vm $(SUBMAKEFLAGS)
+       $(apply-patch) < ../solutions/p3.patch
+       $(run-tests)
        $(clean)
 
-filesys: PROJECT = filesys
-filesys::
-       $(prep-grading)
+p4: PROJECT = filesys
+p4::
        $(mk-sandbox)
-       $(MAKE) -C $@/pintos/src/filesys $(SUBMAKEFLAGS)
+       $(apply-patch) < ../solutions/p4.patch
+       $(run-tests)
        $(clean)