projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ignore p[1-4] directories.
[pintos-anon]
/
tests
/
Makefile
diff --git
a/tests/Makefile
b/tests/Makefile
index efea7a5078db3e7da0cb6621a588f4f0ed9b313f..866e3642cc340ae6de8ac0d7b1298fe07e9dd04a 100644
(file)
--- 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)
PATH := $(shell pwd)/../src/utils:$(PATH)
@@
-13,105
+13,79
@@
check:
clean:
rm -rf $(TESTS)
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
endef
-define
prep-grading
-$(prep-$(PROJECT)-grading)
+define
run-tests
+cd $@/src/$(PROJECT) && $(MAKE) check
endef
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
+cd $@/src/$(PROJECT) && grep -q PERFECT build/grade
+cd $@/src/$(PROJECT) && grep -qv warning build/grade
endef
endef
-define
run-tests
-cd $@
&& ../../grading/$(PROJECT)/run-tests
+define
compile
+cd $@
/src/$(PROJECT) && $(MAKE)
endef
define clean
endef
define clean
-rm -rf $@
/pintos
+rm -rf $@
endef
define apply-patch
endef
define apply-patch
-(cd $@
/pintos && patch -p0 -s) <
+(cd $@
&& patch -p0)
endef
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)
$(mk-sandbox)
- $(
apply-patch) ../solutions/p1-2.patch
- $(run-tests)
-d join.*
+ $(
compile)
+ $(run-tests)
TESTS=tests/threads/alarm-single
$(clean)
$(clean)
-p1-3: PROJECT = threads
-p1-3::
+userprog vm filesys::
$(mk-sandbox)
$(mk-sandbox)
- $(apply-patch) ../solutions/p1-3.patch
- $(run-tests) -d priority.*
+ $(compile)
$(clean)
$(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)
$(mk-sandbox)
- $(apply-patch)
../solutions/p1-2
.patch
- $(run-tests
) null
+ $(apply-patch)
< ../solutions/p1
.patch
+ $(run-tests
-grade)
$(clean)
p2: PROJECT = userprog
$(clean)
p2: PROJECT = userprog
+p2: PINTOSOPTS = $(FAST_SIM)
p2::
p2::
- $(prep-grading)
$(mk-sandbox)
$(mk-sandbox)
- $(apply-patch) ../solutions/p2.patch
- $(run-tests)
+ $(apply-patch)
<
../solutions/p2.patch
+ $(run-tests
-grade
)
$(clean)
$(clean)
-
vm
: PROJECT = vm
-vm::
- $(prep-grading)
+
p3
: PROJECT = vm
+p3: PINTOSOPTS = $(FAST_SIM)
+p3::
$(mk-sandbox)
$(mk-sandbox)
- $(MAKE) -C $@/pintos/src/vm -s
+ $(apply-patch) < ../solutions/p3.patch
+ $(run-tests-grade)
$(clean)
$(clean)
-
filesys
: PROJECT = filesys
-filesys::
- $(prep-grading)
+
p4
: PROJECT = filesys
+p4: PINTOSOPTS = $(FAST_SIM)
+p4::
$(mk-sandbox)
$(mk-sandbox)
- $(MAKE) -C $@/pintos/src/filesys -s
+ $(apply-patch) < ../solutions/p4.patch
+ $(run-tests-grade)
$(clean)
$(clean)