X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftests%2FMake.tests;h=44e8d5e495b91fb5a6727b99f3ebc8124f9c8da9;hb=5d0fa78e74957165d3bfaf4abd4c8176432802da;hp=b7c143266b15c67fda7fad7c637b54297f9f7726;hpb=4ebf33908a571a7cde93fe618902b044e3633cdf;p=pintos-anon diff --git a/src/tests/Make.tests b/src/tests/Make.tests index b7c1432..44e8d5e 100644 --- a/src/tests/Make.tests +++ b/src/tests/Make.tests @@ -7,8 +7,11 @@ TESTS = $(foreach subdir,$(TEST_SUBDIRS),$($(subdir)_TESTS)) include ../../Makefile.userprog -PINTOSFLAGS += -v $(foreach file,$(PUTFILES),-p $(file) -a $(notdir $(file))) +TIMEOUT = 60 +PINTOSFLAGS += -v -T $(TIMEOUT) \ + $(foreach file,$(PUTFILES),-p $(file) -a $(notdir $(file))) KERNELFLAGS += -q + PINTOS = pintos $(PINTOSOPTS) $(PINTOSFLAGS) -- $(KERNELFLAGS) OUTPUTS = $(addsuffix .output,$(TESTS)) @@ -18,36 +21,29 @@ RESULTS = $(addsuffix .result,$(TESTS)) clean:: rm -f $(OUTPUTS) $(ERRORS) $(RESULTS) -grade:: ../rubric.txt results - @pass=; \ - for d in $(TESTS); do \ - if echo PASS | cmp -s $$d.result -; then \ - pass="$$pass $$d"; \ - fi \ - done; \ - $(SRCDIR)/tests/make-grade $< $$pass +grade:: results + $(SRCDIR)/tests/make-grade $(SRCDIR) $< $(GRADING_FILE) | tee $@ check:: results - @f=0; \ - n=0; \ - echo "Test summary:"; \ - for d in $(TESTS); do \ + @cat $< + @COUNT="`egrep '^(pass|FAIL) ' $< | wc -l | sed 's/[ ]//g;'`"; \ + FAILURES="`egrep '^FAIL ' $< | wc -l | sed 's/[ ]//g;'`"; \ + if [ $$FAILURES = 0 ]; then \ + echo "All $$COUNT tests passed."; \ + else \ + echo "$$FAILURES of $$COUNT tests failed."; \ + exit 1; \ + fi + +results: $(RESULTS) + @for d in $(TESTS); do \ if echo PASS | cmp -s $$d.result -; then \ echo "pass $$d"; \ else \ echo "FAIL $$d"; \ - f=`expr $$f + 1`; \ fi; \ - n=`expr $$n + 1`; \ - done; \ - if [ $$f = 0 ]; then \ - echo "All $$n tests passed."; \ - else \ - echo "$$f of $$n tests failed."; \ - exit 1; \ - fi + done > $@ -results:: $(RESULTS) outputs:: $(OUTPUTS) $(foreach prog,$(PROGS),$(eval $(prog).output: $(prog)))