summaryrefslogtreecommitdiffstats
path: root/pintos-progos/tests/Make.tests
diff options
context:
space:
mode:
Diffstat (limited to 'pintos-progos/tests/Make.tests')
-rw-r--r--pintos-progos/tests/Make.tests76
1 files changed, 76 insertions, 0 deletions
diff --git a/pintos-progos/tests/Make.tests b/pintos-progos/tests/Make.tests
new file mode 100644
index 0000000..358e697
--- /dev/null
+++ b/pintos-progos/tests/Make.tests
@@ -0,0 +1,76 @@
1# -*- makefile -*-
2
3include $(patsubst %,$(SRCDIR)/%/Make.tests,$(TEST_SUBDIRS))
4
5PROGS = $(foreach subdir,$(TEST_SUBDIRS),$($(subdir)_PROGS))
6TESTS = $(foreach subdir,$(TEST_SUBDIRS),$($(subdir)_TESTS))
7EXTRA_GRADES = $(foreach subdir,$(TEST_SUBDIRS),$($(subdir)_EXTRA_GRADES))
8
9OUTPUTS = $(addsuffix .output,$(TESTS) $(EXTRA_GRADES))
10ERRORS = $(addsuffix .errors,$(TESTS) $(EXTRA_GRADES))
11RESULTS = $(addsuffix .result,$(TESTS) $(EXTRA_GRADES))
12
13ifdef PROGS
14include ../../Makefile.userprog
15endif
16
17TIMEOUT = 60
18
19clean::
20 rm -f $(OUTPUTS) $(ERRORS) $(RESULTS)
21
22grade:: results
23 $(SRCDIR)/tests/make-grade $(SRCDIR) $< $(GRADING_FILE) | tee $@
24
25check:: results
26 @cat $<
27 @COUNT="`egrep '^(pass|FAIL) ' $< | wc -l | sed 's/[ ]//g;'`"; \
28 FAILURES="`egrep '^FAIL ' $< | wc -l | sed 's/[ ]//g;'`"; \
29 if [ $$FAILURES = 0 ]; then \
30 echo "All $$COUNT tests passed."; \
31 else \
32 echo "$$FAILURES of $$COUNT tests failed."; \
33 exit 1; \
34 fi
35
36results: $(RESULTS)
37 @for d in $(TESTS) $(EXTRA_GRADES); do \
38 if echo PASS | cmp -s $$d.result -; then \
39 echo "pass $$d"; \
40 else \
41 echo "FAIL $$d"; \
42 fi; \
43 done > $@
44
45outputs:: $(OUTPUTS)
46
47$(foreach prog,$(PROGS),$(eval $(prog).output: $(prog)))
48$(foreach test,$(TESTS),$(eval $(test).output: $($(test)_PUTFILES)))
49$(foreach test,$(TESTS),$(eval $(test).output: TEST = $(test)))
50
51# Prevent an environment variable VERBOSE from surprising us.
52VERBOSE =
53
54TESTCMD = pintos -v -k -T $(TIMEOUT)
55TESTCMD += $(SIMULATOR)
56TESTCMD += $(PINTOSOPTS)
57ifeq ($(filter userprog, $(KERNEL_SUBDIRS)), userprog)
58TESTCMD += $(FILESYSSOURCE)
59TESTCMD += $(foreach file,$(PUTFILES),-p $(file) -a $(notdir $(file)))
60endif
61ifeq ($(filter vm, $(KERNEL_SUBDIRS)), vm)
62TESTCMD += --swap-size=4
63endif
64TESTCMD += -- -q
65TESTCMD += $(KERNELFLAGS)
66ifeq ($(filter userprog, $(KERNEL_SUBDIRS)), userprog)
67TESTCMD += -f
68endif
69TESTCMD += $(if $($(TEST)_ARGS),run '$(*F) $($(TEST)_ARGS)',run $(*F))
70TESTCMD += < /dev/null
71TESTCMD += 2> $(TEST).errors $(if $(VERBOSE),|tee,>) $(TEST).output
72%.output: kernel.bin loader.bin
73 $(TESTCMD)
74
75%.result: %.ck %.output
76 perl -I$(SRCDIR) $< $* $@