provided code
This commit is contained in:
67
tests/Makefile
Normal file
67
tests/Makefile
Normal file
@@ -0,0 +1,67 @@
|
||||
TESTS = examples devices threads userprog vm filesys
|
||||
|
||||
PATH := $(shell pwd)/../src/utils:$(PATH)
|
||||
|
||||
all:
|
||||
@echo "This Makefile has only \`check' targets."
|
||||
|
||||
check:
|
||||
$(MAKE) -C .. distclean
|
||||
for d in $(TESTS); do $(MAKE) $$d || exit 1; done
|
||||
@echo All tests passed.
|
||||
|
||||
clean:
|
||||
rm -rf $(TESTS)
|
||||
|
||||
define mk-sandbox
|
||||
rm -rf $@ && mkdir $@ && cp -R ../src $@/src
|
||||
cd $@/src && $(MAKE) -s clean
|
||||
endef
|
||||
|
||||
define run-tests
|
||||
cd $@/src/$(TASK) && time $(MAKE) check
|
||||
endef
|
||||
|
||||
define grade-tests
|
||||
cd $@/src/$(TASK) && $(MAKE) grade
|
||||
cd $@/src/$(TASK) && grep -q PERFECT build/grade
|
||||
cd $@/src/$(TASK) && grep -qv warning build/grade
|
||||
endef
|
||||
|
||||
define compile
|
||||
cd $@/src/$(TASK) && $(MAKE)
|
||||
endef
|
||||
|
||||
define test-clean
|
||||
cd $@/src/$(TASK)/build && $(MAKE) clean
|
||||
cd $@/src/$(TASK)/build && set `find . -type f` > /dev/null && test $$# = 1
|
||||
endef
|
||||
|
||||
define clean
|
||||
rm -rf $@
|
||||
endef
|
||||
|
||||
TASK = $@
|
||||
|
||||
# Tests that just compile the provided code.
|
||||
devices::
|
||||
$(mk-sandbox)
|
||||
$(compile)
|
||||
$(run-tests)
|
||||
$(test-clean)
|
||||
$(clean)
|
||||
threads::
|
||||
$(mk-sandbox)
|
||||
$(compile)
|
||||
$(run-tests)
|
||||
$(test-clean)
|
||||
$(clean)
|
||||
userprog vm filesys::
|
||||
$(mk-sandbox)
|
||||
$(compile)
|
||||
$(test-clean)
|
||||
$(clean)
|
||||
examples::
|
||||
$(mk-sandbox)
|
||||
$(compile)
|
||||
$(clean)
|
||||
Reference in New Issue
Block a user