3 include $(patsubst %,$(SRCDIR)/%/Make.tests,$(TEST_SUBDIRS))
5 PROGS = $(foreach subdir,$(TEST_SUBDIRS),$($(subdir)_PROGS))
6 TESTS = $(foreach subdir,$(TEST_SUBDIRS),$($(subdir)_TESTS))
8 include ../../Makefile.userprog
11 PINTOSFLAGS += -v -T $(TIMEOUT) \
12 $(foreach file,$(PUTFILES),-p $(file) -a $(notdir $(file)))
15 PINTOS = pintos $(PINTOSOPTS) $(PINTOSFLAGS) -- $(KERNELFLAGS)
17 OUTPUTS = $(addsuffix .output,$(TESTS))
18 ERRORS = $(addsuffix .errors,$(TESTS))
19 RESULTS = $(addsuffix .result,$(TESTS))
22 rm -f $(OUTPUTS) $(ERRORS) $(RESULTS)
25 $(SRCDIR)/tests/make-grade $(SRCDIR) $< $(GRADING_FILE) | tee $@
29 @COUNT="`egrep '^(pass|FAIL) ' $< | wc -l | sed 's/[ ]//g;'`"; \
30 FAILURES="`egrep '^FAIL ' $< | wc -l | sed 's/[ ]//g;'`"; \
31 if [ $$FAILURES = 0 ]; then \
32 echo "All $$COUNT tests passed."; \
34 echo "$$FAILURES of $$COUNT tests failed."; \
39 @for d in $(TESTS); do \
40 if echo PASS | cmp -s $$d.result -; then \
49 $(foreach prog,$(PROGS),$(eval $(prog).output: $(prog)))
50 $(foreach test,$(TESTS),$(eval $(test).output: $($(test)_PUTFILES)))
51 tests/%.output: RUNCMD = $(if $($*_ARGS),run '$(*F) $($*_ARGS)',run $(*F))
52 tests/%.output: RUNREDIR = 2>$*.errors $(if $(VERBOSE),|tee,>) $*.output
53 tests/%.output: RUNTEST = $(PINTOS) $(RUNCMD) $(RUNREDIR)
57 %.result: %.ck %.output
58 perl -I$(SRCDIR) $< $* $@