This simplifies the various clamd/clamscan tests a lot,
since the valgrind tests can now be parallelized by automake,
and we don't need to do that in the script itself.
... | ... |
@@ -29,7 +29,7 @@ pkgconfig_DATA = libclamav.pc |
29 | 29 |
# don't complain that configuration files and databases are not removed, this is intended |
30 | 30 |
distuninstallcheck_listfiles = find . -type f ! -name clamd.conf ! -name freshclam.conf ! -name daily.cvd ! -name main.cvd -print |
31 | 31 |
DISTCLEANFILES = target.h |
32 |
-if DISTCHECK_ENABLE_FLAGS |
|
32 |
+if DISTCHECK_ENABLE_FLAGS |
|
33 | 33 |
DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav CFLAGS="-Wno-pointer-sign -Werror-implicit-function-declaration -Werror -Wextra -Wall -Wbad-function-cast -Wcast-align -Wendif-labels -Wfloat-equal -Wformat=2 -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wno-error=missing-prototypes -Wnested-externs -Wno-error=nested-externs -Wpointer-arith -Wstrict-prototypes -Wno-error=strict-prototypes -Wno-switch -Wno-switch-enum -Wundef -Wwrite-strings -Wstrict-overflow=1 -Winit-self -Wmissing-include-dirs -Wstrict-aliasing -Wdeclaration-after-statement -Waggregate-return -Wmissing-format-attribute -Wno-error=missing-format-attribute -Wno-error=type-limits -Wno-error=unused-value -Wno-error=unused-variable -Wcast-qual -Wno-error=cast-qual -Wno-error=sign-compare -Wshadow -Wno-error=shadow -Wno-error=uninitialized -fdiagnostics-show-option -Wno-unused-parameter -Wno-error=unreachable-code -Winvalid-pch -Wno-error=invalid-pch -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector -Wno-error=aggregate-return" |
34 | 34 |
else |
35 | 35 |
DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav |
... | ... |
@@ -384,7 +384,8 @@ DISTCLEANFILES = target.h |
384 | 384 |
@DISTCHECK_ENABLE_FLAGS_TRUE@ -D_FORTIFY_SOURCE=2 \ |
385 | 385 |
@DISTCHECK_ENABLE_FLAGS_TRUE@ -fstack-protector-all \ |
386 | 386 |
@DISTCHECK_ENABLE_FLAGS_TRUE@ -Wstack-protector \ |
387 |
-@DISTCHECK_ENABLE_FLAGS_TRUE@ -Wno-error=aggregate-return" |
|
387 |
+@DISTCHECK_ENABLE_FLAGS_TRUE@ -Wno-error=aggregate-return" \ |
|
388 |
+@DISTCHECK_ENABLE_FLAGS_TRUE@ VERBOSE=1 |
|
388 | 389 |
all: clamav-config.h |
389 | 390 |
$(MAKE) $(AM_MAKEFLAGS) all-recursive |
390 | 391 |
|
... | ... |
@@ -33,7 +33,7 @@ AC_CREATE_TARGET_H([target.h]) |
33 | 33 |
|
34 | 34 |
dnl -Wall and -Werror here are NOT CFLAGS, they refer to automake warnings |
35 | 35 |
dnl enable stealth builds and psychedelic tests |
36 |
-AM_INIT_AUTOMAKE([-Wall -Wportability -Wno-override -Werror std-options foreign dist-bzip2 no-define color-tests]) |
|
36 |
+AM_INIT_AUTOMAKE([1.11 -Wall -Wportability -Wno-override -Werror std-options foreign dist-bzip2 no-define color-tests parallel-tests tar-ustar]) |
|
37 | 37 |
AM_SILENT_RULES([yes]) |
38 | 38 |
|
39 | 39 |
dnl we told automake to not define these, since we want to include |
... | ... |
@@ -1,14 +1,22 @@ |
1 | 1 |
SPLIT_DIR=$(top_srcdir)/unit_tests/.split |
2 | 2 |
FILES = clam-phish-exe |
3 | 3 |
|
4 |
-check_clamd.sh: $(FILES) |
|
4 |
+check2_clamd.sh: $(FILES) |
|
5 |
+check3_clamd.sh: $(FILES) |
|
6 |
+check4_clamd.sh: $(FILES) |
|
7 |
+check5_clamd_vg.sh: $(FILES) |
|
8 |
+check6_clamd_vg.sh: $(FILES) |
|
9 |
+check7_clamd_vg.sh: $(FILES) |
|
10 |
+check8_clamd_hg.sh: $(FILES) |
|
11 |
+check9_clamd_hg.sh: $(FILES) |
|
12 |
+check10_clamd_hg.sh: $(FILES) |
|
5 | 13 |
|
6 | 14 |
$(FILES) : |
7 | 15 |
cat $(SPLIT_DIR)/split.$@aa $(SPLIT_DIR)/split.$@ab > $@ |
8 | 16 |
|
9 | 17 |
programs = check_clamav |
10 |
-scripts = check_clamd.sh check_freshclam.sh check_sigtool.sh check_clamscan.sh\ |
|
11 |
- valgrind_tests.sh efence_tests.sh duma_tests.sh |
|
18 |
+scripts = check_freshclam.sh check_sigtool.sh check1_clamscan.sh check2_clamd.sh check3_clamd.sh check4_clamd.sh\ |
|
19 |
+ check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh |
|
12 | 20 |
TESTS_ENVIRONMENT=export abs_srcdir=$(abs_srcdir) AWK=$(AWK); |
13 | 21 |
if ENABLE_UNRAR |
14 | 22 |
else |
... | ... |
@@ -42,8 +50,8 @@ $(top_builddir)/test/clam.exe: |
42 | 42 |
quick-check: |
43 | 43 |
VALGRIND=no LIBEFENCE=no LIBDUMA=no $(MAKE) check |
44 | 44 |
|
45 |
-CLEANFILES=lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log valgrind-*.log duma.log duma2.log clamscan2.log |
|
46 |
-EXTRA_DIST=.split $(srcdir)/*.ref input test-clamd.conf test-freshclam.conf valgrind.supp virusaction-test.sh $(scripts) preload_run.sh |
|
45 |
+CLEANFILES=lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log accdenied |
|
46 |
+EXTRA_DIST=.split $(srcdir)/*.ref input test-freshclam.conf valgrind.supp virusaction-test.sh $(scripts) preload_run.sh check_common.sh |
|
47 | 47 |
if ENABLE_COVERAGE |
48 | 48 |
LCOV_OUTPUT = lcov.out |
49 | 49 |
LCOV_HTML = lcov_html |
... | ... |
@@ -133,6 +133,76 @@ test "X$(AM_COLOR_TESTS)" != Xno \ |
133 | 133 |
blu='[1;34m'; \ |
134 | 134 |
std='[m'; \ |
135 | 135 |
} |
136 |
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; |
|
137 |
+am__vpath_adj = case $$p in \ |
|
138 |
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ |
|
139 |
+ *) f=$$p;; \ |
|
140 |
+ esac; |
|
141 |
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; |
|
142 |
+am__install_max = 40 |
|
143 |
+am__nobase_strip_setup = \ |
|
144 |
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` |
|
145 |
+am__nobase_strip = \ |
|
146 |
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" |
|
147 |
+am__nobase_list = $(am__nobase_strip_setup); \ |
|
148 |
+ for p in $$list; do echo "$$p $$p"; done | \ |
|
149 |
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ |
|
150 |
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ |
|
151 |
+ if (++n[$$2] == $(am__install_max)) \ |
|
152 |
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ |
|
153 |
+ END { for (dir in files) print dir, files[dir] }' |
|
154 |
+am__base_list = \ |
|
155 |
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ |
|
156 |
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' |
|
157 |
+# Restructured Text title and section. |
|
158 |
+am__rst_title = sed 's/.*/ & /;h;s/./=/g;p;x;p;g;p;s/.*//' |
|
159 |
+am__rst_section = sed 'p;s/./=/g;p;g' |
|
160 |
+# Put stdin (possibly several lines separated by ". ") in a box. |
|
161 |
+am__text_box = $(AWK) '{ \ |
|
162 |
+ n = split($$0, lines, "\\. "); max = 0; \ |
|
163 |
+ for (i = 1; i <= n; ++i) \ |
|
164 |
+ if (max < length(lines[i])) \ |
|
165 |
+ max = length(lines[i]); \ |
|
166 |
+ for (i = 0; i < max; ++i) line = line "="; \ |
|
167 |
+ print line; \ |
|
168 |
+ for (i = 1; i <= n; ++i) if (lines[i]) print lines[i];\ |
|
169 |
+ print line; \ |
|
170 |
+}' |
|
171 |
+# Solaris 10 'make', and several other traditional 'make' implementations, |
|
172 |
+# pass "-e" to $(SHELL). This contradicts POSIX. Work around the problem |
|
173 |
+# by disabling -e (using the XSI extension "set +e") if it's set. |
|
174 |
+am__sh_e_setup = case $$- in *e*) set +e;; esac |
|
175 |
+# To be inserted before the command running the test. Creates the |
|
176 |
+# directory for the log if needed. Stores in $dir the directory |
|
177 |
+# containing $f, in $tst the test, in $log the log, and passes |
|
178 |
+# TESTS_ENVIRONMENT. Save and restore TERM around use of |
|
179 |
+# TESTS_ENVIRONMENT, in case that unsets it. |
|
180 |
+am__check_pre = \ |
|
181 |
+$(am__sh_e_setup); \ |
|
182 |
+$(am__vpath_adj_setup) $(am__vpath_adj) \ |
|
183 |
+srcdir=$(srcdir); export srcdir; \ |
|
184 |
+rm -f $@-t; \ |
|
185 |
+trap 'st=$$?; rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st' \ |
|
186 |
+ 1 2 13 15; \ |
|
187 |
+am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`; \ |
|
188 |
+test "x$$am__odir" = x. || $(MKDIR_P) "$$am__odir" || exit $$?; \ |
|
189 |
+if test -f "./$$f"; then dir=./; \ |
|
190 |
+elif test -f "$$f"; then dir=; \ |
|
191 |
+else dir="$(srcdir)/"; fi; \ |
|
192 |
+tst=$$dir$$f; log='$@'; __SAVED_TERM=$$TERM; \ |
|
193 |
+$(TESTS_ENVIRONMENT) |
|
194 |
+RECHECK_LOGS = $(TEST_LOGS) |
|
195 |
+AM_RECURSIVE_TARGETS = check check-html recheck recheck-html |
|
196 |
+TEST_SUITE_LOG = test-suite.log |
|
197 |
+TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html) |
|
198 |
+TEST_EXTENSIONS = @EXEEXT@ .test |
|
199 |
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) |
|
200 |
+am__test_logs1 = $(TESTS:=.log) |
|
201 |
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) |
|
202 |
+TEST_LOGS = $(am__test_logs2:.test.log=.log) |
|
203 |
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ |
|
204 |
+ $(TEST_LOG_FLAGS) |
|
205 |
+TEST_LOGS_TMP = $(TEST_LOGS:.log=.log-t) |
|
136 | 206 |
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
137 | 207 |
ACLOCAL = @ACLOCAL@ |
138 | 208 |
AMTAR = @AMTAR@ |
... | ... |
@@ -294,8 +364,8 @@ top_srcdir = @top_srcdir@ |
294 | 294 |
SPLIT_DIR = $(top_srcdir)/unit_tests/.split |
295 | 295 |
FILES = clam-phish-exe |
296 | 296 |
programs = check_clamav |
297 |
-scripts = check_clamd.sh check_freshclam.sh check_sigtool.sh check_clamscan.sh\ |
|
298 |
- valgrind_tests.sh efence_tests.sh duma_tests.sh |
|
297 |
+scripts = check_freshclam.sh check_sigtool.sh check1_clamscan.sh check2_clamd.sh check3_clamd.sh check4_clamd.sh\ |
|
298 |
+ check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh |
|
299 | 299 |
|
300 | 300 |
TESTS_ENVIRONMENT = export abs_srcdir=$(abs_srcdir) AWK=$(AWK); \ |
301 | 301 |
$(am__append_1) |
... | ... |
@@ -312,8 +382,8 @@ check_SCRIPTS = $(scripts) |
312 | 312 |
@HAVE_LIBCHECK_TRUE@check_clamd_SOURCES = check_clamd.c checks_common.h |
313 | 313 |
@HAVE_LIBCHECK_TRUE@check_clamd_CPPFLAGS = -I$(top_srcdir) @CHECK_CPPFLAGS@ -DSRCDIR=\"$(abs_srcdir)\" -DBUILDDIR=\"$(abs_builddir)\" |
314 | 314 |
@HAVE_LIBCHECK_TRUE@check_clamd_LDADD = @CHECK_LIBS@ @CLAMD_LIBS@ |
315 |
-CLEANFILES = lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log valgrind-*.log duma.log duma2.log clamscan2.log |
|
316 |
-EXTRA_DIST = .split $(srcdir)/*.ref input test-clamd.conf test-freshclam.conf valgrind.supp virusaction-test.sh $(scripts) preload_run.sh |
|
315 |
+CLEANFILES = lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log accdenied |
|
316 |
+EXTRA_DIST = .split $(srcdir)/*.ref input test-freshclam.conf valgrind.supp virusaction-test.sh $(scripts) preload_run.sh check_common.sh |
|
317 | 317 |
@ENABLE_COVERAGE_TRUE@LCOV_OUTPUT = lcov.out |
318 | 318 |
@ENABLE_COVERAGE_TRUE@LCOV_HTML = lcov_html |
319 | 319 |
@ENABLE_COVERAGE_TRUE@LCOV_LCOV = @LCOV@ |
... | ... |
@@ -323,7 +393,7 @@ EXTRA_DIST = .split $(srcdir)/*.ref input test-clamd.conf test-freshclam.conf va |
323 | 323 |
all: all-am |
324 | 324 |
|
325 | 325 |
.SUFFIXES: |
326 |
-.SUFFIXES: .c .lo .o .obj |
|
326 |
+.SUFFIXES: .c .html .lo .log .o .obj .test .test$(EXEEXT) |
|
327 | 327 |
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) |
328 | 328 |
@for dep in $?; do \ |
329 | 329 |
case '$(am__configure_deps)' in \ |
... | ... |
@@ -663,97 +733,183 @@ GTAGS: |
663 | 663 |
distclean-tags: |
664 | 664 |
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags |
665 | 665 |
|
666 |
-check-TESTS: $(TESTS) |
|
667 |
- @failed=0; all=0; xfail=0; xpass=0; skip=0; \ |
|
668 |
- srcdir=$(srcdir); export srcdir; \ |
|
669 |
- list=' $(TESTS) '; \ |
|
670 |
- $(am__tty_colors); \ |
|
671 |
- if test -n "$$list"; then \ |
|
672 |
- for tst in $$list; do \ |
|
673 |
- if test -f ./$$tst; then dir=./; \ |
|
674 |
- elif test -f $$tst; then dir=; \ |
|
675 |
- else dir="$(srcdir)/"; fi; \ |
|
676 |
- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ |
|
677 |
- all=`expr $$all + 1`; \ |
|
678 |
- case " $(XFAIL_TESTS) " in \ |
|
679 |
- *[\ \ ]$$tst[\ \ ]*) \ |
|
680 |
- xpass=`expr $$xpass + 1`; \ |
|
681 |
- failed=`expr $$failed + 1`; \ |
|
682 |
- col=$$red; res=XPASS; \ |
|
683 |
- ;; \ |
|
684 |
- *) \ |
|
685 |
- col=$$grn; res=PASS; \ |
|
686 |
- ;; \ |
|
687 |
- esac; \ |
|
688 |
- elif test $$? -ne 77; then \ |
|
689 |
- all=`expr $$all + 1`; \ |
|
690 |
- case " $(XFAIL_TESTS) " in \ |
|
691 |
- *[\ \ ]$$tst[\ \ ]*) \ |
|
692 |
- xfail=`expr $$xfail + 1`; \ |
|
693 |
- col=$$lgn; res=XFAIL; \ |
|
694 |
- ;; \ |
|
695 |
- *) \ |
|
696 |
- failed=`expr $$failed + 1`; \ |
|
697 |
- col=$$red; res=FAIL; \ |
|
698 |
- ;; \ |
|
699 |
- esac; \ |
|
700 |
- else \ |
|
701 |
- skip=`expr $$skip + 1`; \ |
|
702 |
- col=$$blu; res=SKIP; \ |
|
703 |
- fi; \ |
|
704 |
- echo "$${col}$$res$${std}: $$tst"; \ |
|
705 |
- done; \ |
|
706 |
- if test "$$all" -eq 1; then \ |
|
707 |
- tests="test"; \ |
|
708 |
- All=""; \ |
|
709 |
- else \ |
|
710 |
- tests="tests"; \ |
|
711 |
- All="All "; \ |
|
712 |
- fi; \ |
|
713 |
- if test "$$failed" -eq 0; then \ |
|
714 |
- if test "$$xfail" -eq 0; then \ |
|
715 |
- banner="$$All$$all $$tests passed"; \ |
|
716 |
- else \ |
|
717 |
- if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ |
|
718 |
- banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ |
|
719 |
- fi; \ |
|
720 |
- else \ |
|
721 |
- if test "$$xpass" -eq 0; then \ |
|
722 |
- banner="$$failed of $$all $$tests failed"; \ |
|
723 |
- else \ |
|
724 |
- if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ |
|
725 |
- banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ |
|
726 |
- fi; \ |
|
727 |
- fi; \ |
|
728 |
- dashes="$$banner"; \ |
|
729 |
- skipped=""; \ |
|
730 |
- if test "$$skip" -ne 0; then \ |
|
731 |
- if test "$$skip" -eq 1; then \ |
|
732 |
- skipped="($$skip test was not run)"; \ |
|
733 |
- else \ |
|
734 |
- skipped="($$skip tests were not run)"; \ |
|
735 |
- fi; \ |
|
736 |
- test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ |
|
737 |
- dashes="$$skipped"; \ |
|
738 |
- fi; \ |
|
739 |
- report=""; \ |
|
740 |
- if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ |
|
741 |
- report="Please report to $(PACKAGE_BUGREPORT)"; \ |
|
742 |
- test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ |
|
743 |
- dashes="$$report"; \ |
|
744 |
- fi; \ |
|
745 |
- dashes=`echo "$$dashes" | sed s/./=/g`; \ |
|
746 |
- if test "$$failed" -eq 0; then \ |
|
747 |
- echo "$$grn$$dashes"; \ |
|
748 |
- else \ |
|
749 |
- echo "$$red$$dashes"; \ |
|
750 |
- fi; \ |
|
751 |
- echo "$$banner"; \ |
|
752 |
- test -z "$$skipped" || echo "$$skipped"; \ |
|
753 |
- test -z "$$report" || echo "$$report"; \ |
|
754 |
- echo "$$dashes$$std"; \ |
|
755 |
- test "$$failed" -eq 0; \ |
|
756 |
- else :; fi |
|
666 |
+# To be appended to the command running the test. Handle the stdout |
|
667 |
+# and stderr redirection, and catch the exit status. |
|
668 |
+am__check_post = \ |
|
669 |
+>$@-t 2>&1; \ |
|
670 |
+estatus=$$?; \ |
|
671 |
+if test -n '$(DISABLE_HARD_ERRORS)' \ |
|
672 |
+ && test $$estatus -eq 99; then \ |
|
673 |
+ estatus=1; \ |
|
674 |
+fi; \ |
|
675 |
+TERM=$$__SAVED_TERM; export TERM; \ |
|
676 |
+$(am__tty_colors); \ |
|
677 |
+xfailed=PASS; \ |
|
678 |
+case " $(XFAIL_TESTS) " in \ |
|
679 |
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ |
|
680 |
+ xfailed=XFAIL;; \ |
|
681 |
+esac; \ |
|
682 |
+case $$estatus:$$xfailed in \ |
|
683 |
+ 0:XFAIL) col=$$red; res=XPASS;; \ |
|
684 |
+ 0:*) col=$$grn; res=PASS ;; \ |
|
685 |
+ 77:*) col=$$blu; res=SKIP ;; \ |
|
686 |
+ 99:*) col=$$red; res=FAIL ;; \ |
|
687 |
+ *:XFAIL) col=$$lgn; res=XFAIL;; \ |
|
688 |
+ *:*) col=$$red; res=FAIL ;; \ |
|
689 |
+esac; \ |
|
690 |
+echo "$${col}$$res$${std}: $$f"; \ |
|
691 |
+echo "$$res: $$f (exit: $$estatus)" | \ |
|
692 |
+ $(am__rst_section) >$@; \ |
|
693 |
+cat $@-t >>$@; \ |
|
694 |
+rm -f $@-t |
|
695 |
+ |
|
696 |
+$(TEST_SUITE_LOG): $(TEST_LOGS) |
|
697 |
+ @$(am__sh_e_setup); \ |
|
698 |
+ list='$(TEST_LOGS)'; \ |
|
699 |
+ results=`for f in $$list; do \ |
|
700 |
+ read line < $$f && echo "$$line" || echo FAIL; \ |
|
701 |
+ done`; \ |
|
702 |
+ all=`echo "$$results" | sed '/^$$/d' | wc -l | sed -e 's/^[ ]*//'`; \ |
|
703 |
+ fail=`echo "$$results" | grep -c '^FAIL'`; \ |
|
704 |
+ pass=`echo "$$results" | grep -c '^PASS'`; \ |
|
705 |
+ skip=`echo "$$results" | grep -c '^SKIP'`; \ |
|
706 |
+ xfail=`echo "$$results" | grep -c '^XFAIL'`; \ |
|
707 |
+ xpass=`echo "$$results" | grep -c '^XPASS'`; \ |
|
708 |
+ failures=`expr $$fail + $$xpass`; \ |
|
709 |
+ all=`expr $$all - $$skip`; \ |
|
710 |
+ if test "$$all" -eq 1; then tests=test; All=; \ |
|
711 |
+ else tests=tests; All="All "; fi; \ |
|
712 |
+ case fail=$$fail:xpass=$$xpass:xfail=$$xfail in \ |
|
713 |
+ fail=0:xpass=0:xfail=0) \ |
|
714 |
+ msg="$$All$$all $$tests passed. "; \ |
|
715 |
+ exit=true;; \ |
|
716 |
+ fail=0:xpass=0:xfail=*) \ |
|
717 |
+ msg="$$All$$all $$tests behaved as expected"; \ |
|
718 |
+ if test "$$xfail" -eq 1; then xfailures=failure; \ |
|
719 |
+ else xfailures=failures; fi; \ |
|
720 |
+ msg="$$msg ($$xfail expected $$xfailures). "; \ |
|
721 |
+ exit=true;; \ |
|
722 |
+ fail=*:xpass=0:xfail=*) \ |
|
723 |
+ msg="$$fail of $$all $$tests failed. "; \ |
|
724 |
+ exit=false;; \ |
|
725 |
+ fail=*:xpass=*:xfail=*) \ |
|
726 |
+ msg="$$failures of $$all $$tests did not behave as expected"; \ |
|
727 |
+ if test "$$xpass" -eq 1; then xpasses=pass; \ |
|
728 |
+ else xpasses=passes; fi; \ |
|
729 |
+ msg="$$msg ($$xpass unexpected $$xpasses). "; \ |
|
730 |
+ exit=false;; \ |
|
731 |
+ *) \ |
|
732 |
+ echo >&2 "incorrect case"; exit 4;; \ |
|
733 |
+ esac; \ |
|
734 |
+ if test "$$skip" -ne 0; then \ |
|
735 |
+ if test "$$skip" -eq 1; then \ |
|
736 |
+ msg="$$msg($$skip test was not run). "; \ |
|
737 |
+ else \ |
|
738 |
+ msg="$$msg($$skip tests were not run). "; \ |
|
739 |
+ fi; \ |
|
740 |
+ fi; \ |
|
741 |
+ { \ |
|
742 |
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ |
|
743 |
+ $(am__rst_title); \ |
|
744 |
+ echo "$$msg"; \ |
|
745 |
+ echo; \ |
|
746 |
+ echo ".. contents:: :depth: 2"; \ |
|
747 |
+ echo; \ |
|
748 |
+ for f in $$list; do \ |
|
749 |
+ read line < $$f; \ |
|
750 |
+ case $$line in \ |
|
751 |
+ PASS:*|XFAIL:*);; \ |
|
752 |
+ *) echo; cat $$f;; \ |
|
753 |
+ esac; \ |
|
754 |
+ done; \ |
|
755 |
+ } >$(TEST_SUITE_LOG).tmp; \ |
|
756 |
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ |
|
757 |
+ if test "$$failures" -ne 0; then \ |
|
758 |
+ msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG). "; \ |
|
759 |
+ if test -n "$(PACKAGE_BUGREPORT)"; then \ |
|
760 |
+ msg="$${msg}Please report to $(PACKAGE_BUGREPORT). "; \ |
|
761 |
+ fi; \ |
|
762 |
+ fi; \ |
|
763 |
+ test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG); \ |
|
764 |
+ $(am__tty_colors); \ |
|
765 |
+ if $$exit; then \ |
|
766 |
+ echo $(ECHO_N) "$$grn$(ECHO_C)"; \ |
|
767 |
+ else \ |
|
768 |
+ echo $(ECHO_N) "$$red$(ECHO_C)"; \ |
|
769 |
+ fi; \ |
|
770 |
+ echo "$$msg" | $(am__text_box); \ |
|
771 |
+ echo $(ECHO_N) "$$std$(ECHO_C)"; \ |
|
772 |
+ $$exit |
|
773 |
+ |
|
774 |
+# Run all the tests. |
|
775 |
+check-TESTS: |
|
776 |
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list |
|
777 |
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) |
|
778 |
+ @set_logs=; if test "X$(TEST_LOGS)" = X.log; then \ |
|
779 |
+ set_logs=TEST_LOGS=; \ |
|
780 |
+ fi; \ |
|
781 |
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) $$set_logs |
|
782 |
+ |
|
783 |
+.log.html: |
|
784 |
+ @list='$(RST2HTML) $$RST2HTML rst2html rst2html.py'; \ |
|
785 |
+ for r2h in $$list; do \ |
|
786 |
+ if ($$r2h --version) >/dev/null 2>&1; then \ |
|
787 |
+ R2H=$$r2h; \ |
|
788 |
+ fi; \ |
|
789 |
+ done; \ |
|
790 |
+ if test -z "$$R2H"; then \ |
|
791 |
+ echo >&2 "cannot find rst2html, cannot create $@"; \ |
|
792 |
+ exit 2; \ |
|
793 |
+ fi; \ |
|
794 |
+ $$R2H $< >$@.tmp |
|
795 |
+ @mv $@.tmp $@ |
|
796 |
+ |
|
797 |
+# Be sure to run check first, and then to convert the result. |
|
798 |
+# Beware of concurrent executions. Run "check" not "check-TESTS", as |
|
799 |
+# check-SCRIPTS and other dependencies are rebuilt by the former only. |
|
800 |
+# And expect check to fail. |
|
801 |
+check-html: |
|
802 |
+ @if $(MAKE) $(AM_MAKEFLAGS) check; then \ |
|
803 |
+ rv=0; else rv=$$?; \ |
|
804 |
+ fi; \ |
|
805 |
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML) || exit 4; \ |
|
806 |
+ exit $$rv |
|
807 |
+recheck recheck-html: |
|
808 |
+ @target=`echo $@ | sed 's,^re,,'`; \ |
|
809 |
+ list='$(TEST_LOGS)'; \ |
|
810 |
+ list=`for f in $$list; do \ |
|
811 |
+ test -f $$f || continue; \ |
|
812 |
+ if read line < $$f; then \ |
|
813 |
+ case $$line in FAIL*|XPASS*) echo $$f;; esac; \ |
|
814 |
+ else echo $$f; fi; \ |
|
815 |
+ done | tr '\012\015' ' '`; \ |
|
816 |
+ $(MAKE) $(AM_MAKEFLAGS) $$target AM_MAKEFLAGS='$(AM_MAKEFLAGS) TEST_LOGS="'"$$list"'"' |
|
817 |
+check_clamav.log: check_clamav$(EXEEXT) |
|
818 |
+ @p='check_clamav$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
819 |
+check_freshclam.sh.log: check_freshclam.sh |
|
820 |
+ @p='check_freshclam.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
821 |
+check_sigtool.sh.log: check_sigtool.sh |
|
822 |
+ @p='check_sigtool.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
823 |
+check1_clamscan.sh.log: check1_clamscan.sh |
|
824 |
+ @p='check1_clamscan.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
825 |
+check2_clamd.sh.log: check2_clamd.sh |
|
826 |
+ @p='check2_clamd.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
827 |
+check3_clamd.sh.log: check3_clamd.sh |
|
828 |
+ @p='check3_clamd.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
829 |
+check4_clamd.sh.log: check4_clamd.sh |
|
830 |
+ @p='check4_clamd.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
831 |
+check5_clamd_vg.sh.log: check5_clamd_vg.sh |
|
832 |
+ @p='check5_clamd_vg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
833 |
+check6_clamd_vg.sh.log: check6_clamd_vg.sh |
|
834 |
+ @p='check6_clamd_vg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
835 |
+check7_clamd_hg.sh.log: check7_clamd_hg.sh |
|
836 |
+ @p='check7_clamd_hg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
837 |
+check8_clamd_hg.sh.log: check8_clamd_hg.sh |
|
838 |
+ @p='check8_clamd_hg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) |
|
839 |
+.test.log: |
|
840 |
+ @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post) |
|
841 |
+@am__EXEEXT_TRUE@.test$(EXEEXT).log: |
|
842 |
+@am__EXEEXT_TRUE@ @p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post) |
|
757 | 843 |
|
758 | 844 |
distdir: $(DISTFILES) |
759 | 845 |
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
... | ... |
@@ -806,6 +962,10 @@ install-strip: |
806 | 806 |
`test -z '$(STRIP)' || \ |
807 | 807 |
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install |
808 | 808 |
mostlyclean-generic: |
809 |
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) |
|
810 |
+ -test -z "$(TEST_LOGS_TMP)" || rm -f $(TEST_LOGS_TMP) |
|
811 |
+ -test -z "$(TEST_SUITE_HTML)" || rm -f $(TEST_SUITE_HTML) |
|
812 |
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) |
|
809 | 813 |
|
810 | 814 |
clean-generic: |
811 | 815 |
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) |
... | ... |
@@ -889,24 +1049,33 @@ ps-am: |
889 | 889 |
|
890 | 890 |
uninstall-am: |
891 | 891 |
|
892 |
-.MAKE: check-am install-am install-strip |
|
893 |
- |
|
894 |
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ |
|
895 |
- clean-checkPROGRAMS clean-generic clean-libtool clean-local \ |
|
896 |
- ctags distclean distclean-compile distclean-generic \ |
|
897 |
- distclean-libtool distclean-tags distdir dvi dvi-am html \ |
|
898 |
- html-am info info-am install install-am install-data \ |
|
899 |
- install-data-am install-dvi install-dvi-am install-exec \ |
|
900 |
- install-exec-am install-html install-html-am install-info \ |
|
901 |
- install-info-am install-man install-pdf install-pdf-am \ |
|
902 |
- install-ps install-ps-am install-strip installcheck \ |
|
903 |
- installcheck-am installdirs maintainer-clean \ |
|
892 |
+.MAKE: check-am check-html install-am install-strip recheck \ |
|
893 |
+ recheck-html |
|
894 |
+ |
|
895 |
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am check-html \ |
|
896 |
+ clean clean-checkPROGRAMS clean-generic clean-libtool \ |
|
897 |
+ clean-local ctags distclean distclean-compile \ |
|
898 |
+ distclean-generic distclean-libtool distclean-tags distdir dvi \ |
|
899 |
+ dvi-am html html-am info info-am install install-am \ |
|
900 |
+ install-data install-data-am install-dvi install-dvi-am \ |
|
901 |
+ install-exec install-exec-am install-html install-html-am \ |
|
902 |
+ install-info install-info-am install-man install-pdf \ |
|
903 |
+ install-pdf-am install-ps install-ps-am install-strip \ |
|
904 |
+ installcheck installcheck-am installdirs maintainer-clean \ |
|
904 | 905 |
maintainer-clean-generic mostlyclean mostlyclean-compile \ |
905 | 906 |
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ |
906 |
- tags uninstall uninstall-am |
|
907 |
- |
|
908 |
- |
|
909 |
-check_clamd.sh: $(FILES) |
|
907 |
+ recheck recheck-html tags uninstall uninstall-am |
|
908 |
+ |
|
909 |
+ |
|
910 |
+check2_clamd.sh: $(FILES) |
|
911 |
+check3_clamd.sh: $(FILES) |
|
912 |
+check4_clamd.sh: $(FILES) |
|
913 |
+check5_clamd_vg.sh: $(FILES) |
|
914 |
+check6_clamd_vg.sh: $(FILES) |
|
915 |
+check7_clamd_vg.sh: $(FILES) |
|
916 |
+check8_clamd_hg.sh: $(FILES) |
|
917 |
+check9_clamd_hg.sh: $(FILES) |
|
918 |
+check10_clamd_hg.sh: $(FILES) |
|
910 | 919 |
|
911 | 920 |
$(FILES) : |
912 | 921 |
cat $(SPLIT_DIR)/split.$@aa $(SPLIT_DIR)/split.$@ab > $@ |
0 | 5 |
deleted file mode 100755 |
... | ... |
@@ -1,289 +0,0 @@ |
1 |
-#!/bin/sh |
|
2 |
-CLAMD_WRAPPER=${CLAMD_WRAPPER-} |
|
3 |
-CLAMD_TEST_UNIQ1=${CLAMD_TEST_UNIQ1-1} |
|
4 |
-CLAMD_TEST_UNIQ2=${CLAMD_TEST_UNIQ2-2} |
|
5 |
-TOP="../.." |
|
6 |
-LTEXEC="$TOP/libtool --mode=execute" |
|
7 |
-killclamd() { |
|
8 |
- test -f clamd-test.pid || return |
|
9 |
- pid=`cat clamd-test.pid 2>/dev/null` |
|
10 |
- if test "X$pid" = "X"; then |
|
11 |
- # file can be removed between the 'test' and 'cat', |
|
12 |
- # it happened a few times for me |
|
13 |
- return |
|
14 |
- fi |
|
15 |
- kill -0 $pid 2>/dev/null || return |
|
16 |
- kill $pid |
|
17 |
- pippo=0 |
|
18 |
- while kill -0 $pid 2>/dev/null; do |
|
19 |
- sleep 1 |
|
20 |
- pippo=`expr $pippo + 1` |
|
21 |
- if test $pippo -gt 9; then |
|
22 |
- kill -KILL $pid |
|
23 |
- echo "Clamd didn't quit"; |
|
24 |
- rm -f clamd-test.pid |
|
25 |
- exit 4; |
|
26 |
- fi |
|
27 |
- done |
|
28 |
- rm -f clamd-test.pid |
|
29 |
-} |
|
30 |
- |
|
31 |
-die() |
|
32 |
-{ |
|
33 |
- killclamd |
|
34 |
- exit $1 |
|
35 |
-} |
|
36 |
- |
|
37 |
-error() |
|
38 |
-{ |
|
39 |
- echo >&2 |
|
40 |
- echo "***" >&2 |
|
41 |
- echo "*** $1" >&2 |
|
42 |
- echo "***" >&2 |
|
43 |
-} |
|
44 |
- |
|
45 |
-scan_failed() { |
|
46 |
- if test "X$unrar_disabled" = "X1" && test `grep -v '\.rar' $1 | grep OK | wc -l` -eq 0 |
|
47 |
- then |
|
48 |
- error "UNRAR is disabled, won't be able to detect unrar files!"; |
|
49 |
- else |
|
50 |
- error $2; |
|
51 |
- die 2; |
|
52 |
- fi |
|
53 |
-} |
|
54 |
- |
|
55 |
-start_clamd() |
|
56 |
-{ |
|
57 |
- rm -f clamd-test.log ../clamd-test1.log ../clamd-test2.log |
|
58 |
- $LTEXEC $CLAMD_WRAPPER $TOP/clamd/clamd -c $1 --help >clamd-test.log 2>&1 || |
|
59 |
- { error "Failed to start clamd --help!"; cat clamd-test.log; die 1; } |
|
60 |
- grep "Clam AntiVirus Daemon" clamd-test.log >/dev/null || |
|
61 |
- { error "Wrong --help reply from clamd!"; die 1; } |
|
62 |
- $LTEXEC $CLAMD_WRAPPER $TOP/clamd/clamd -c $1 >clamd-test.log 2>&1 || |
|
63 |
- { error "Failed to start clamd!"; cat clamd-test.log; die 1; } |
|
64 |
-} |
|
65 |
- |
|
66 |
-run_clamdscan_fileonly() { |
|
67 |
- rm -f clamdscan.log clamdscan-multiscan.log |
|
68 |
- $TOP/clamdscan/clamdscan --version --config-file=test-clamd.conf 2>&1|grep "^ClamAV" >/dev/null || |
|
69 |
- { error "clamdscan can't get version of clamd!"; die 1;} |
|
70 |
- $TOP/clamdscan/clamdscan --quiet --config-file=test-clamd.conf $* --log=clamdscan.log |
|
71 |
- if test $? = 2; then |
|
72 |
- error "Failed to run clamdscan!" |
|
73 |
- cat clamdscan.log |
|
74 |
- die 1 |
|
75 |
- fi |
|
76 |
- $TOP/clamdscan/clamdscan --quiet --config-file=test-clamd.conf $* -m --log=clamdscan-multiscan.log |
|
77 |
- if test $? = 2; then |
|
78 |
- error "Failed to run clamdscan (multiscan)!" |
|
79 |
- cat clamdscan-multiscan.log |
|
80 |
- die 1 |
|
81 |
- fi |
|
82 |
-} |
|
83 |
- |
|
84 |
-run_clamdscan() { |
|
85 |
- run_clamdscan_fileonly $* |
|
86 |
- rm -f clamdscan-fdpass.log clamdscan-multiscan-fdpass.log |
|
87 |
- $TOP/clamdscan/clamdscan --quiet --config-file=test-clamd.conf $* --fdpass --log=clamdscan-fdpass.log |
|
88 |
- if test $? = 2; then |
|
89 |
- error "Failed to run clamdscan (fdpass)!" |
|
90 |
- cat clamdscan-fdpass.log |
|
91 |
- die 1 |
|
92 |
- fi |
|
93 |
- $TOP/clamdscan/clamdscan --quiet --config-file=test-clamd.conf $* -m --fdpass --log=clamdscan-multiscan-fdpass.log |
|
94 |
- if test $? = 2; then |
|
95 |
- error "Failed to run clamdscan (fdpass + multiscan)!" |
|
96 |
- cat clamdscan-multiscan-fdpass.log |
|
97 |
- die 1 |
|
98 |
- fi |
|
99 |
- $TOP/clamdscan/clamdscan --quiet --config-file=test-clamd.conf $* --stream --log=clamdscan-stream.log |
|
100 |
- if test $? = 2; then |
|
101 |
- error "Failed to run clamdscan (instream)!" |
|
102 |
- cat clamdscan-stream.log |
|
103 |
- die 1 |
|
104 |
- fi |
|
105 |
- $TOP/clamdscan/clamdscan --quiet --config-file=test-clamd.conf $* -m --stream --log=clamdscan-multiscan-stream.log |
|
106 |
- if test $? = 2; then |
|
107 |
- error "Failed to run clamdscan (instream + multiscan)!" |
|
108 |
- cat clamdscan-multiscan-stream.log |
|
109 |
- die 1 |
|
110 |
- fi |
|
111 |
-} |
|
112 |
- |
|
113 |
-run_reload_test() |
|
114 |
-{ |
|
115 |
- rm -f reload-testfile |
|
116 |
- echo "ClamAV-RELOAD-Test" >reload-testfile |
|
117 |
- run_clamdscan reload-testfile |
|
118 |
- grep "ClamAV-RELOAD-TestFile" clamdscan.log >/dev/null 2>/dev/null; |
|
119 |
- if test $? -eq 0; then |
|
120 |
- # it is not supposed to detect until we actually put the |
|
121 |
- # signature there and reload! |
|
122 |
- error "RELOAD test failed!" |
|
123 |
- cat clamdscan.log |
|
124 |
- die 10 |
|
125 |
- fi |
|
126 |
- echo "ClamAV-RELOAD-TestFile:0:0:436c616d41562d52454c4f41442d54657374" >test-db/new.ndb |
|
127 |
- $TOP/clamdscan/clamdscan --reload --config-file=test-clamd.conf |
|
128 |
- if test $? -ne 0; then |
|
129 |
- error "clamdscan says reload failed!" |
|
130 |
- die 11 |
|
131 |
- fi |
|
132 |
- run_clamdscan reload-testfile |
|
133 |
- grep "ClamAV-RELOAD-TestFile" clamdscan.log >/dev/null 2>/dev/null; |
|
134 |
- failed=0 |
|
135 |
- if test $? -ne 0; then |
|
136 |
- error "RELOAD test failed! (after reload)" |
|
137 |
- cat clamdscan.log |
|
138 |
- failed=1 |
|
139 |
- fi |
|
140 |
- grep "ClamAV-RELOAD-TestFile" clamdscan-multiscan.log >/dev/null 2>/dev/null; |
|
141 |
- if test $? -ne 0; then |
|
142 |
- error "RELOAD test failed! (after reload, multiscan)" |
|
143 |
- cat clamdscan-multiscan.log |
|
144 |
- failed=1 |
|
145 |
- fi |
|
146 |
- if test "$failed" = "1"; then |
|
147 |
- echo "RELOAD tests failed!" |
|
148 |
- die 12 |
|
149 |
- fi |
|
150 |
- rm -f reload-testfile |
|
151 |
-} |
|
152 |
- |
|
153 |
-run_clamdscan_fdpass() { |
|
154 |
- rm -f clamdscan.log |
|
155 |
- $TOP/clamdscan/clamdscan --quiet --fdpass --config-file=test-clamd.conf - <$1 --log=clamdscan.log |
|
156 |
- if test $? = 2; then |
|
157 |
- error "Failed to run clamdscan (fdpass)!" |
|
158 |
- cat clamdscan.log |
|
159 |
- die 14 |
|
160 |
- fi |
|
161 |
-} |
|
162 |
- |
|
163 |
-# We run multiple clamd tests in parallel, each in its own directory |
|
164 |
-prepare_clamd() |
|
165 |
-{ |
|
166 |
- cd clamdtest$1 |
|
167 |
- # Set up test DBdir |
|
168 |
- rm -rf test-db |
|
169 |
- mkdir -p test-db |
|
170 |
- cat <<EOF >test-db/test.hdb |
|
171 |
-aa15bcf478d165efd2065190eb473bcb:544:ClamAV-Test-File |
|
172 |
-EOF |
|
173 |
- cp $abs_srcdir/input/daily.pdb test-db/ |
|
174 |
- $AWK "{ sub(/X/,\"$1\"); sub(/CWD/,\"`pwd`\"); print }" $abs_srcdir/test-clamd.conf >test-clamd.conf |
|
175 |
-} |
|
176 |
- |
|
177 |
-rm -rf clamdtest$CLAMD_TEST_UNIQ1 clamdtest$CLAMD_TEST_UNIQ2 |
|
178 |
-mkdir clamdtest$CLAMD_TEST_UNIQ1 clamdtest$CLAMD_TEST_UNIQ2 || |
|
179 |
- { echo "Unable to create temporary directories!"; exit 1; } |
|
180 |
- |
|
181 |
-# Prepare configuration for clamd #1 and #2 |
|
182 |
-(prepare_clamd $CLAMD_TEST_UNIQ1) |
|
183 |
-(prepare_clamd $CLAMD_TEST_UNIQ2) |
|
184 |
-# Add clamd #2 specific configuration |
|
185 |
-echo "VirusEvent $abs_srcdir/virusaction-test.sh `pwd`/clamdtest$CLAMD_TEST_UNIQ2 \"Virus found: %v\"" >>clamdtest$CLAMD_TEST_UNIQ2/test-clamd.conf |
|
186 |
-echo "HeuristicScanPrecedence yes" >>clamdtest$CLAMD_TEST_UNIQ2/test-clamd.conf |
|
187 |
-grep -v LogFile clamdtest$CLAMD_TEST_UNIQ2/test-clamd.conf >tmp__ |
|
188 |
-mv tmp__ clamdtest$CLAMD_TEST_UNIQ2/test-clamd.conf |
|
189 |
- |
|
190 |
-# Start clamd #1 tests |
|
191 |
-(cd clamdtest$CLAMD_TEST_UNIQ1 |
|
192 |
-start_clamd test-clamd.conf |
|
193 |
- |
|
194 |
-# Test that all testfiles are detected |
|
195 |
-FILES=$TOP/test/clam* |
|
196 |
-run_clamdscan $FILES |
|
197 |
-NFILES=`ls -1 $FILES | wc -l` |
|
198 |
-NINFECTED=`grep "Infected files" clamdscan.log | cut -f2 -d:|sed -e 's/ //g'` |
|
199 |
-NINFECTED_MULTI=`grep "Infected files" clamdscan-multiscan.log | cut -f2 -d:|sed -e 's/ //g'` |
|
200 |
-NINFECTED_FDPASS=`grep "Infected files" clamdscan-fdpass.log | cut -f2 -d:|sed -e 's/ //g'` |
|
201 |
-NINFECTED_MULTI_FDPASS=`grep "Infected files" clamdscan-multiscan-fdpass.log | cut -f2 -d:|sed -e 's/ //g'` |
|
202 |
-NINFECTED_STREAM=`grep "Infected files" clamdscan-stream.log | cut -f2 -d:|sed -e 's/ //g'` |
|
203 |
-NINFECTED_MULTI_STREAM=`grep "Infected files" clamdscan-multiscan-stream.log | cut -f2 -d:|sed -e 's/ //g'` |
|
204 |
-if test "$NFILES" -ne "0$NINFECTED"; then |
|
205 |
- grep OK clamdscan.log |
|
206 |
- scan_failed clamdscan.log "clamd did not detect all testfiles correctly!" |
|
207 |
-fi |
|
208 |
-if test "$NFILES" -ne "0$NINFECTED_MULTI"; then |
|
209 |
- grep OK clamdscan-multiscan.log |
|
210 |
- scan_failed clamdscan-multiscan.log "clamd did not detect all testfiles correctly in multiscan mode!" |
|
211 |
-fi |
|
212 |
-if test "$NFILES" -ne "0$NINFECTED_FDPASS"; then |
|
213 |
- grep OK clamdscan-fdpass.log |
|
214 |
- scan_failed clamdscan-multiscan.log "clamd did not detect all testfiles correctly in fdpass mode!" |
|
215 |
-fi |
|
216 |
-if test "$NFILES" -ne "0$NINFECTED_MULTI_FDPASS"; then |
|
217 |
- grep OK clamdscan-multiscan-fdpass.log |
|
218 |
- scan_failed clamdscan-multiscan.log "clamd did not detect all testfiles correctly in fdpass+multiscan mode!" |
|
219 |
-fi |
|
220 |
- |
|
221 |
-$TOP/unit_tests/check_clamd |
|
222 |
-ecode=$? |
|
223 |
-if test $ecode -ne 77 && test $ecode -ne 0; then |
|
224 |
- error "Failed clamd protocol test!" |
|
225 |
- die 1 |
|
226 |
-fi |
|
227 |
-# Test HeuristicScanPrecedence off feature |
|
228 |
-run_clamdscan ../clam-phish-exe |
|
229 |
-grep "ClamAV-Test-File" clamdscan.log >/dev/null 2>/dev/null; |
|
230 |
-if test $? -ne 0; then |
|
231 |
- error "HeuristicScanPrecedence off test failed!" |
|
232 |
- cat clamdscan.log |
|
233 |
- die 4 |
|
234 |
-fi |
|
235 |
-die 0 |
|
236 |
-)& |
|
237 |
-pid1=$! |
|
238 |
- |
|
239 |
-# Start clamd #2 tests |
|
240 |
-(cd clamdtest$CLAMD_TEST_UNIQ2 |
|
241 |
-start_clamd test-clamd.conf |
|
242 |
- |
|
243 |
-# Test VirusEvent feature |
|
244 |
-run_clamdscan_fileonly $TOP/test/clam.exe |
|
245 |
-grep "Virus found: ClamAV-Test-File.UNOFFICIAL" test-clamd.log >/dev/null 2>/dev/null; |
|
246 |
-if test $? -ne 0; then |
|
247 |
- error "Virusaction test failed!" |
|
248 |
- cat test-clamd.log |
|
249 |
- die 2 |
|
250 |
-fi |
|
251 |
- |
|
252 |
-# Test HeuristicScanPrecedence feature |
|
253 |
-run_clamdscan ../clam-phish-exe |
|
254 |
-grep "Phishing.Heuristics.Email.SpoofedDomain" clamdscan.log >/dev/null 2>/dev/null; |
|
255 |
-if test $? -ne 0; then |
|
256 |
- error "HeuristicScanPrecedence on test failed!" |
|
257 |
- cat clamdscan.log |
|
258 |
- die 3 |
|
259 |
-fi |
|
260 |
- |
|
261 |
-if grep "^#define HAVE_FD_PASSING 1" $TOP/clamav-config.h >/dev/null; then |
|
262 |
- run_clamdscan_fdpass $TOP/test/clam.exe |
|
263 |
- grep "ClamAV-Test-File" clamdscan.log >/dev/null 2>/dev/null; |
|
264 |
- if test $? -ne 0; then |
|
265 |
- error "FDpassing test failed!" |
|
266 |
- cat clamdscan.log; |
|
267 |
- die 4 |
|
268 |
- fi |
|
269 |
-else |
|
270 |
- echo "*** No file descriptor passing support, skipping test" |
|
271 |
-fi |
|
272 |
- |
|
273 |
-# Test RELOAD command |
|
274 |
-run_reload_test |
|
275 |
- |
|
276 |
-die 0 |
|
277 |
-)& |
|
278 |
- |
|
279 |
-pid2=$! |
|
280 |
- |
|
281 |
-wait $pid1 |
|
282 |
-exitcode1=$? |
|
283 |
-wait $pid2 |
|
284 |
-exitcode2=$? |
|
285 |
-rm -rf clamdtest$CLAMD_TEST_UNIQ1 clamdtest$CLAMD_TEST_UNIQ2 test-db accdenied |
|
286 |
-if (test $exitcode1 -ne 0 && test $exitcode1 -ne 127) || (test $exitcode2 -ne 0 && test $exitcode2 -ne 127); then |
|
287 |
- exit 1 |
|
288 |
-fi |
|
289 |
-exit 0 |
290 | 1 |
deleted file mode 100755 |
... | ... |
@@ -1,66 +0,0 @@ |
1 |
-#!/bin/sh |
|
2 |
-CLAMSCAN_WRAPPER=${CLAMSCAN_WRAPPER-} |
|
3 |
-die() { |
|
4 |
- rm -rf test-db |
|
5 |
- exit $1; |
|
6 |
-} |
|
7 |
- |
|
8 |
-scan_failed() { |
|
9 |
- if test "X$unrar_disabled" = "X1" && test `grep -v '\.rar' $1 | grep OK | wc -l` -eq 0 |
|
10 |
- then |
|
11 |
- echo "***" >&2; |
|
12 |
- echo "*** UNRAR is disabled, won't be able to detect unrar files!" >&2; |
|
13 |
- echo "***" >&2; |
|
14 |
- else |
|
15 |
- echo "clamscan did not detect all testfiles correctly!" >&2; |
|
16 |
- die 2; |
|
17 |
- fi |
|
18 |
-} |
|
19 |
- |
|
20 |
-mkdir test-db |
|
21 |
-cat <<EOF >test-db/test.hdb |
|
22 |
-aa15bcf478d165efd2065190eb473bcb:544:ClamAV-Test-File |
|
23 |
-EOF |
|
24 |
-rm -f clamscan.log |
|
25 |
-../libtool --mode=execute $CLAMSCAN_WRAPPER ../clamscan/clamscan --quiet -dtest-db/test.hdb ../test/clam* --log=clamscan.log |
|
26 |
-if test $? != 1; then |
|
27 |
- echo "Error running clamscan: $?" >&2; |
|
28 |
- grep OK clamscan.log >&2; |
|
29 |
- die 1; |
|
30 |
-fi |
|
31 |
-NFILES=`ls -1 ../test/clam* | wc -l` |
|
32 |
-NINFECTED=`grep "Infected files" clamscan.log | cut -f2 -d: |sed -e 's/ //g'` |
|
33 |
-if test "$NFILES" -ne "0$NINFECTED"; then |
|
34 |
- grep OK clamscan.log >&2; |
|
35 |
- scan_failed clamscan.log |
|
36 |
-fi |
|
37 |
- |
|
38 |
-cat <<EOF >test-db/test.pdb |
|
39 |
-H:example.com |
|
40 |
-EOF |
|
41 |
-rm -f clamscan2.log |
|
42 |
-../clamscan/clamscan -dtest-db $abs_srcdir/input/phish-test-* --log=clamscan2.log --quiet |
|
43 |
-val=$? |
|
44 |
-if test $val != 0; then |
|
45 |
- if test $val = 1; then |
|
46 |
- echo "clamscan detected a file it shouldn't" >&2 |
|
47 |
- grep FOUND clamscan2.log |
|
48 |
- die 3; |
|
49 |
- fi |
|
50 |
- echo "Error running clamscan: $val" >&2; |
|
51 |
- die 3; |
|
52 |
-fi |
|
53 |
- |
|
54 |
-rm -f clamscan2.log |
|
55 |
-../clamscan/clamscan --phishing-ssl --phishing-cloak -dtest-db $abs_srcdir/input/phish-test-* --log=clamscan2.log --quiet |
|
56 |
-val=$? |
|
57 |
-if test $val != 1; then |
|
58 |
- echo "Error running clamscan: $val" >&2; |
|
59 |
- die 3; |
|
60 |
-fi |
|
61 |
-grep "phish-test-ssl: Phishing.Heuristics.Email.SSL-Spoof FOUND" clamscan2.log >/dev/null && grep "phish-test-cloak: Phishing.Heuristics.Email.Cloaked.Null FOUND" clamscan2.log >/dev/null |
|
62 |
-if test $? -ne 0; then |
|
63 |
- echo "Error on ssl/cloak phishing test" >&2; |
|
64 |
- die 4; |
|
65 |
-fi |
|
66 |
-die 0; |
67 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,318 @@ |
0 |
+#!/bin/sh |
|
1 |
+set -e |
|
2 |
+ |
|
3 |
+WRAPPER=${WRAPPER-} |
|
4 |
+TOP=`pwd`/.. |
|
5 |
+CLAMSCAN=$TOP/clamscan/clamscan |
|
6 |
+CLAMD=$TOP/clamd/clamd |
|
7 |
+CHECK_CLAMD=$TOP/unit_tests/check_clamd |
|
8 |
+CLAMDSCAN=$TOP/clamdscan/clamdscan |
|
9 |
+TESTFILES=$TOP/test/clam* |
|
10 |
+NFILES=`ls -1 $TESTFILES | wc -l` |
|
11 |
+ |
|
12 |
+killclamd() { |
|
13 |
+ test -f clamd-test.pid && |
|
14 |
+ pid=`cat clamd-test.pid 2>/dev/null` && |
|
15 |
+ test -n "$pid" && |
|
16 |
+ kill -0 $pid 2>/dev/null && |
|
17 |
+ kill $pid 2>/dev/null && |
|
18 |
+ kill -0 $pid 2>/dev/null && |
|
19 |
+ sleep 1 && |
|
20 |
+ kill -0 $pid 2>/dev/null && |
|
21 |
+ sleep 9 && |
|
22 |
+ kill -0 $pid 2>/dev/null && |
|
23 |
+ kill -KILL $pid || true |
|
24 |
+} |
|
25 |
+ |
|
26 |
+error() |
|
27 |
+{ |
|
28 |
+ echo >&2 |
|
29 |
+ echo "***" >&2 |
|
30 |
+ echo "*** $1" >&2 |
|
31 |
+ echo "***" >&2 |
|
32 |
+} |
|
33 |
+ |
|
34 |
+die() |
|
35 |
+{ |
|
36 |
+ error "$1" |
|
37 |
+ test -f valgrind.log && cat valgrind.log || true |
|
38 |
+ killclamd |
|
39 |
+ exit 42 |
|
40 |
+} |
|
41 |
+ |
|
42 |
+# Setup test directory to avoid temporary and output file clashes |
|
43 |
+test_start() { |
|
44 |
+ ulimit -t 120; ulimit -d 512000; ulimit -v 512000; |
|
45 |
+ (cd test-$1 2>/dev/null && killclamd || true) |
|
46 |
+ rm -rf test-$1 |
|
47 |
+ mkdir test-$1 |
|
48 |
+ cd test-$1 |
|
49 |
+ mkdir test-db |
|
50 |
+ cat <<EOF >test-db/test.hdb |
|
51 |
+aa15bcf478d165efd2065190eb473bcb:544:ClamAV-Test-File |
|
52 |
+EOF |
|
53 |
+ cat <<EOF >test-clamd.conf |
|
54 |
+LogFile `pwd`/clamd-test.log |
|
55 |
+LogFileMaxSize 0 |
|
56 |
+LogTime yes |
|
57 |
+Debug yes |
|
58 |
+LogClean yes |
|
59 |
+LogVerbose yes |
|
60 |
+PidFile `pwd`/clamd-test.pid |
|
61 |
+DatabaseDirectory `pwd`/test-db |
|
62 |
+LocalSocket clamd-test.socket |
|
63 |
+TCPAddr 127.0.0.1 |
|
64 |
+# using different port here to avoid conflicts with system clamd daemon |
|
65 |
+TCPSocket 331$1 |
|
66 |
+ExitOnOOM yes |
|
67 |
+DetectPUA yes |
|
68 |
+ScanPDF yes |
|
69 |
+CommandReadTimeout 1 |
|
70 |
+MaxQueue 800 |
|
71 |
+MaxConnectionQueueLength 1024 |
|
72 |
+EOF |
|
73 |
+} |
|
74 |
+ |
|
75 |
+# arg1: expected exitcode |
|
76 |
+test_run() { |
|
77 |
+ expected=$1 |
|
78 |
+ shift |
|
79 |
+ set +e |
|
80 |
+ $TOP/libtool --mode=execute $WRAPPER $* |
|
81 |
+ val=$? |
|
82 |
+ if test $val -ne $expected; then |
|
83 |
+ error "Failed to run $*, expected $expected exitcode, but was $val" >&2; |
|
84 |
+ return 0; |
|
85 |
+ fi |
|
86 |
+ set -e |
|
87 |
+ return 1; |
|
88 |
+} |
|
89 |
+ |
|
90 |
+# Run a test and return its exitcode |
|
91 |
+test_run_check() { |
|
92 |
+ set +e |
|
93 |
+ $TOP/libtool --mode=execute $WRAPPER $* |
|
94 |
+ val=$? |
|
95 |
+ set -e |
|
96 |
+ return $?; |
|
97 |
+} |
|
98 |
+ |
|
99 |
+# test successfully finished, remove test dir |
|
100 |
+test_end() { |
|
101 |
+ killclamd |
|
102 |
+ cd .. |
|
103 |
+ rm -rf test-$1 |
|
104 |
+} |
|
105 |
+ |
|
106 |
+scan_failed() { |
|
107 |
+ if test "X$unrar_disabled" = "X1" && test `grep -v '\.rar' $1 | grep OK | wc -l` -eq 0 |
|
108 |
+ then |
|
109 |
+ error "UNRAR is disabled, won't be able to detect unrar files!" |
|
110 |
+ else |
|
111 |
+ cat $1 |
|
112 |
+ die "$2"; |
|
113 |
+ fi |
|
114 |
+} |
|
115 |
+ |
|
116 |
+# ----------- valgrind wrapper |
|
117 |
+init_valgrind() { |
|
118 |
+ test "x$VG" = "x1" || { echo "*** valgrind tests skipped by default, use 'make check VG=1' to activate"; exit 77; } |
|
119 |
+ export VALGRIND=`which ${VALGRIND-valgrind}` |
|
120 |
+ export VALGRIND_COMMON_FLAGS="-v --trace-children=yes --suppressions=$abs_srcdir/valgrind.supp --log-file=valgrind.log --error-exitcode=123 $GENSUPP" |
|
121 |
+ export VALGRIND_FLAGS="$VALGRIND_COMMON_FLAGS --track-fds=yes --leak-check=full" |
|
122 |
+ export VALGRIND_FLAGS_RACE="$VALGRIND_COMMON_FLAGS --tool=helgrind" |
|
123 |
+ test -n "$VALGRIND" || { echo "*** valgrind not found, skipping test"; exit 77; } |
|
124 |
+ test -x "$VALGRIND" || { echo "*** valgrind not executable, skipping test"; exit 77; } |
|
125 |
+} |
|
126 |
+ |
|
127 |
+init_helgrind() { |
|
128 |
+ init_valgrind |
|
129 |
+} |
|
130 |
+ |
|
131 |
+end_valgrind() { |
|
132 |
+ NRUNS=`grep -a "ERROR SUMMARY" valgrind.log | wc -l` |
|
133 |
+ if test $NRUNS -ne `grep -a "ERROR SUMMARY: 0 errors" valgrind.log | wc -l` || |
|
134 |
+ test `grep -a "FATAL:" valgrind.log|wc -l` -ne 0; then |
|
135 |
+ cat valgrind.log |
|
136 |
+ die "Valgrind tests failed" |
|
137 |
+ fi |
|
138 |
+} |
|
139 |
+ |
|
140 |
+# ----------- clamscan tests -------------------------------------------------------- |
|
141 |
+test_clamscan() { |
|
142 |
+ test_start $1 |
|
143 |
+ if test_run 1 $CLAMSCAN --quiet -dtest-db/test.hdb $TESTFILES --log=clamscan.log; then |
|
144 |
+ scan_failed clamscan.log "clamscan didn't detect all testfiles correctly" |
|
145 |
+ fi |
|
146 |
+ NINFECTED=`grep "Infected files" clamscan.log | cut -f2 -d: | sed -e 's/ //g'` |
|
147 |
+ if test "$NFILES" -ne "0$NINFECTED"; then |
|
148 |
+ scan_failed clamscan.log "clamscan didn't detect all testfiles correctly" |
|
149 |
+ fi |
|
150 |
+ |
|
151 |
+ cat <<EOF >test-db/test.pdb |
|
152 |
+H:example.com |
|
153 |
+EOF |
|
154 |
+ if test_run 0 $CLAMSCAN --quiet -dtest-db $abs_srcdir/input/phish-test-* --log=clamscan2.log; then |
|
155 |
+ cat clamscan2.log; |
|
156 |
+ die "Failed to run clamscan (phish-test)"; |
|
157 |
+ fi |
|
158 |
+ |
|
159 |
+ if test_run 1 $CLAMSCAN --quiet --phishing-ssl --phishing-cloak -dtest-db $abs_srcdir/input/phish-test-* --log=clamscan3.log; then |
|
160 |
+ cat clamscan3.log; |
|
161 |
+ die "Failed to run clamscan (phish-test2)"; |
|
162 |
+ fi |
|
163 |
+ |
|
164 |
+ grep "phish-test-ssl: Phishing.Heuristics.Email.SSL-Spoof FOUND" clamscan3.log >/dev/null || die "phish-test1 failed"; |
|
165 |
+ grep "phish-test-cloak: Phishing.Heuristics.Email.Cloaked.Null FOUND" clamscan3.log >/dev/null || die "phish-test2 failed"; |
|
166 |
+ test_end $1 |
|
167 |
+} |
|
168 |
+ |
|
169 |
+# ----------- clamd tests -------------------------------------------------------- |
|
170 |
+start_clamd() |
|
171 |
+{ |
|
172 |
+ cp $abs_srcdir/input/daily.pdb test-db/daily.pdb |
|
173 |
+ if test_run 0 $CLAMD -c test-clamd.conf --help >clamd-test.log; then |
|
174 |
+ die "Failed to run clamd --help"; |
|
175 |
+ fi |
|
176 |
+ grep "Clam AntiVirus Daemon" clamd-test.log >/dev/null || die "Wrong --help reply from clamd!"; |
|
177 |
+ if test_run 0 $CLAMD -c test-clamd.conf >clamd-test.log 2>&1; then |
|
178 |
+ cat clamd-test.log |
|
179 |
+ die "Failed to run clamd"; |
|
180 |
+ fi |
|
181 |
+} |
|
182 |
+ |
|
183 |
+run_clamdscan_fileonly() { |
|
184 |
+ rm -f clamdscan.log clamdscan-multiscan.log |
|
185 |
+ $CLAMDSCAN --version --config-file=test-clamd.conf | grep "^ClamAV" >/dev/null || die "clamdscan can't get version of clamd!"; |
|
186 |
+ set +e |
|
187 |
+ $CLAMDSCAN --quiet --config-file=test-clamd.conf $* --log=clamdscan.log |
|
188 |
+ if test $? = 2; then |
|
189 |
+ die "Failed to run clamdscan!" |
|
190 |
+ fi |
|
191 |
+ $CLAMDSCAN --quiet --config-file=test-clamd.conf $* -m --log=clamdscan-multiscan.log |
|
192 |
+ if test $? = 2; then |
|
193 |
+ die "Failed to run clamdscan (multiscan)!" |
|
194 |
+ fi |
|
195 |
+ set -e |
|
196 |
+} |
|
197 |
+ |
|
198 |
+run_clamdscan() { |
|
199 |
+ run_clamdscan_fileonly $* |
|
200 |
+ rm -f clamdscan-fdpass.log clamdscan-multiscan-fdpass.log clamdscan-stream.log clamdscan-multiscan-stream.log |
|
201 |
+ set +e |
|
202 |
+ $CLAMDSCAN --quiet --config-file=test-clamd.conf $* --fdpass --log=clamdscan-fdpass.log |
|
203 |
+ if test $? = 2; then |
|
204 |
+ die "Failed to run clamdscan (fdpass)!" |
|
205 |
+ fi |
|
206 |
+ $CLAMDSCAN --quiet --config-file=test-clamd.conf $* -m --fdpass --log=clamdscan-multiscan-fdpass.log |
|
207 |
+ if test $? = 2; then |
|
208 |
+ die "Failed to run clamdscan (fdpass + multiscan)!" |
|
209 |
+ fi |
|
210 |
+ $CLAMDSCAN --quiet --config-file=test-clamd.conf $* --stream --log=clamdscan-stream.log |
|
211 |
+ if test $? = 2; then |
|
212 |
+ die "Failed to run clamdscan (instream)!" |
|
213 |
+ fi |
|
214 |
+ $CLAMDSCAN --quiet --config-file=test-clamd.conf $* -m --stream --log=clamdscan-multiscan-stream.log |
|
215 |
+ if test $? = 2; then |
|
216 |
+ die "Failed to run clamdscan (instream + multiscan)!" |
|
217 |
+ fi |
|
218 |
+ set -e |
|
219 |
+} |
|
220 |
+ |
|
221 |
+run_reload_test() |
|
222 |
+{ |
|
223 |
+ echo "ClamAV-RELOAD-Test" >reload-testfile |
|
224 |
+ run_clamdscan reload-testfile |
|
225 |
+ # it is not supposed to detect until we actually put the |
|
226 |
+ # signature there and reload! |
|
227 |
+ grep "ClamAV-RELOAD-TestFile" clamdscan.log >/dev/null 2>/dev/null && die "RELOAD test(1) failed!" |
|
228 |
+ echo "ClamAV-RELOAD-TestFile:0:0:436c616d41562d52454c4f41442d54657374" >test-db/new.ndb |
|
229 |
+ $CLAMDSCAN --reload --config-file=test-clamd.conf || die "clamdscan says reload failed!" |
|
230 |
+ run_clamdscan reload-testfile |
|
231 |
+ failed=0 |
|
232 |
+ grep "ClamAV-RELOAD-TestFile" clamdscan.log >/dev/null 2>/dev/null || die "RELOAD test failed! (after reload)" |
|
233 |
+ grep "ClamAV-RELOAD-TestFile" clamdscan-multiscan.log >/dev/null 2>/dev/null || die "RELOAD test failed! (after reload, multiscan)" |
|
234 |
+} |
|
235 |
+ |
|
236 |
+run_clamdscan_fdpass() { |
|
237 |
+ set +e |
|
238 |
+ $CLAMDSCAN --quiet --fdpass --config-file=test-clamd.conf - <$1 --log=clamdscan.log |
|
239 |
+ if test $? = 2; then |
|
240 |
+ die "Failed to run clamdscan (fdpass)!" |
|
241 |
+ fi |
|
242 |
+ set -e |
|
243 |
+} |
|
244 |
+ |
|
245 |
+test_clamd1() { |
|
246 |
+ test_start $1 |
|
247 |
+ start_clamd |
|
248 |
+ # Test that all testfiles are detected |
|
249 |
+ run_clamdscan $TESTFILES |
|
250 |
+ NINFECTED=`grep "Infected files" clamdscan.log | cut -f2 -d:|sed -e 's/ //g'` |
|
251 |
+ NINFECTED_MULTI=`grep "Infected files" clamdscan-multiscan.log | cut -f2 -d:|sed -e 's/ //g'` |
|
252 |
+ NINFECTED_FDPASS=`grep "Infected files" clamdscan-fdpass.log | cut -f2 -d:|sed -e 's/ //g'` |
|
253 |
+ NINFECTED_MULTI_FDPASS=`grep "Infected files" clamdscan-multiscan-fdpass.log | cut -f2 -d:|sed -e 's/ //g'` |
|
254 |
+ NINFECTED_STREAM=`grep "Infected files" clamdscan-stream.log | cut -f2 -d:|sed -e 's/ //g'` |
|
255 |
+ NINFECTED_MULTI_STREAM=`grep "Infected files" clamdscan-multiscan-stream.log | cut -f2 -d:|sed -e 's/ //g'` |
|
256 |
+ if test "$NFILES" -ne "0$NINFECTED"; then |
|
257 |
+ scan_failed clamdscan.log "clamd did not detect all testfiles correctly!" |
|
258 |
+ fi |
|
259 |
+ if test "$NFILES" -ne "0$NINFECTED_MULTI"; then |
|
260 |
+ scan_failed clamdscan-multiscan.log "clamd did not detect all testfiles correctly in multiscan mode!" |
|
261 |
+ fi |
|
262 |
+ if test "$NFILES" -ne "0$NINFECTED_FDPASS"; then |
|
263 |
+ scan_failed clamdscan-multiscan.log "clamd did not detect all testfiles correctly in fdpass mode!" |
|
264 |
+ fi |
|
265 |
+ if test "$NFILES" -ne "0$NINFECTED_MULTI_FDPASS"; then |
|
266 |
+ scan_failed clamdscan-multiscan.log "clamd did not detect all testfiles correctly in fdpass+multiscan mode!" |
|
267 |
+ fi |
|
268 |
+ # Test HeuristicScanPrecedence off feature |
|
269 |
+ run_clamdscan ../clam-phish-exe |
|
270 |
+ grep "ClamAV-Test-File" clamdscan.log >/dev/null 2>/dev/null; |
|
271 |
+ if test $? -ne 0; then |
|
272 |
+ cat clamdscan.log |
|
273 |
+ die "HeuristicScanPrecedence off test failed!" |
|
274 |
+ fi |
|
275 |
+ test_end $1 |
|
276 |
+} |
|
277 |
+ |
|
278 |
+test_clamd2() { |
|
279 |
+ test_start $1 |
|
280 |
+ start_clamd |
|
281 |
+ # Run clamd test suite |
|
282 |
+ test_run_check $CHECK_CLAMD |
|
283 |
+ val=$? |
|
284 |
+ |
|
285 |
+ # Test RELOAD command |
|
286 |
+ run_reload_test |
|
287 |
+ |
|
288 |
+ test_end $1 |
|
289 |
+ exit $? |
|
290 |
+} |
|
291 |
+ |
|
292 |
+test_clamd3() { |
|
293 |
+ test_start $1 |
|
294 |
+ echo "VirusEvent $abs_srcdir/virusaction-test.sh `pwd` \"Virus found: %v\"" >>test-clamd.conf |
|
295 |
+ echo "HeuristicScanPrecedence yes" >>test-clamd.conf |
|
296 |
+ start_clamd |
|
297 |
+ # Test HeuristicScanPrecedence feature |
|
298 |
+ run_clamdscan ../clam-phish-exe |
|
299 |
+ grep "Phishing.Heuristics.Email.SpoofedDomain" clamdscan.log >/dev/null 2>/dev/null || |
|
300 |
+ { cat clamdscan.log; die "HeuristicScanPrecedence on test failed!"; } |
|
301 |
+ |
|
302 |
+ if grep "^#define HAVE_FD_PASSING 1" $TOP/clamav-config.h >/dev/null; then |
|
303 |
+ run_clamdscan_fdpass $TOP/test/clam.exe |
|
304 |
+ grep "ClamAV-Test-File" clamdscan.log >/dev/null 2>/dev/null || |
|
305 |
+ { cat clamdscan.log; die "FDpassing test failed!";} |
|
306 |
+ else |
|
307 |
+ echo "*** No file descriptor passing support, skipping test" |
|
308 |
+ fi |
|
309 |
+ |
|
310 |
+ # Test VirusEvent feature |
|
311 |
+ run_clamdscan_fileonly $TOP/test/clam.exe |
|
312 |
+ test -f test-clamd.log || sleep 1 |
|
313 |
+ grep "Virus found: ClamAV-Test-File.UNOFFICIAL" test-clamd.log >/dev/null 2>/dev/null || |
|
314 |
+ { cat test-clamd.log || true; die "Virusaction test failed"; } |
|
315 |
+ |
|
316 |
+ test_end $1 |
|
317 |
+} |
0 | 318 |
deleted file mode 100644 |
... | ... |
@@ -1,19 +0,0 @@ |
1 |
-# script will fill in CWD and X |
|
2 |
-LogFile CWD/../clamd-testX.log |
|
3 |
-LogFileMaxSize 0 |
|
4 |
-LogTime yes |
|
5 |
-Debug yes |
|
6 |
-LogClean yes |
|
7 |
-LogVerbose yes |
|
8 |
-PidFile CWD/clamd-test.pid |
|
9 |
-DatabaseDirectory CWD/test-db |
|
10 |
-LocalSocket clamd-test.socket |
|
11 |
-TCPAddr 127.0.0.1 |
|
12 |
-# using different port here to avoid conflicts with system clamd daemon |
|
13 |
-TCPSocket 331X |
|
14 |
-ExitOnOOM yes |
|
15 |
-DetectPUA yes |
|
16 |
-ScanPDF yes |
|
17 |
-CommandReadTimeout 1 |
|
18 |
-MaxQueue 800 |
|
19 |
-MaxConnectionQueueLength 1024 |
... | ... |
@@ -1,343 +0,0 @@ |
1 |
-{ |
|
2 |
- glibc-freeres-dbg |
|
3 |
- Memcheck:Free |
|
4 |
- fun:free |
|
5 |
- fun:free_mem |
|
6 |
- fun:__libc_freeres |
|
7 |
-} |
|
8 |
-{ |
|
9 |
- glibc-freeres |
|
10 |
- Memcheck:Free |
|
11 |
- fun:free |
|
12 |
- obj:/lib*/libc-*.so |
|
13 |
- fun:__libc_freeres |
|
14 |
-} |
|
15 |
-{ |
|
16 |
- glibc-etch1 |
|
17 |
- Memcheck:Free |
|
18 |
- fun:* |
|
19 |
- fun:_dl_allocate_tls |
|
20 |
-} |
|
21 |
-{ |
|
22 |
- glibc-etch2 |
|
23 |
- Memcheck:Free |
|
24 |
- obj:/lib*/ld-*.so |
|
25 |
- obj:/lib*/ld-*.so |
|
26 |
-} |
|
27 |
-{ |
|
28 |
- glibc-etch1 |
|
29 |
- Memcheck:Free |
|
30 |
- fun:* |
|
31 |
- fun:_dl_allocate_tls |
|
32 |
-} |
|
33 |
-{ |
|
34 |
- glibc-etch2 |
|
35 |
- Memcheck:Addr8 |
|
36 |
- obj:/lib*/ld-*.so |
|
37 |
- obj:/lib*/ld-*.so |
|
38 |
-} |
|
39 |
-{ |
|
40 |
- glibc-etch2 |
|
41 |
- Memcheck:Addr4 |
|
42 |
- obj:/lib*/ld-*.so |
|
43 |
- obj:/lib*/ld-*.so |
|
44 |
-} |
|
45 |
-{ |
|
46 |
- helgrind-glibc27-dbg01 |
|
47 |
- Helgrind:Race |
|
48 |
- fun:mythread_wrapper |
|
49 |
- fun:start_thread |
|
50 |
-} |
|
51 |
-{ |
|
52 |
- helgrind-glibc27-dbg02 |
|
53 |
- Helgrind:Race |
|
54 |
- fun:pthread_mutex_* |
|
55 |
-} |
|
56 |
-{ |
|
57 |
- helgrind-glibc27-dbg03 |
|
58 |
- Helgrind:Race |
|
59 |
- fun:pthread_create* |
|
60 |
-} |
|
61 |
-{ |
|
62 |
- helgrind-glibc27-dbg04 |
|
63 |
- Helgrind:Race |
|
64 |
- fun:pthread_create* |
|
65 |
-} |
|
66 |
-{ |
|
67 |
- helgrind-glibc27-dbg05 |
|
68 |
- Helgrind:Race |
|
69 |
- fun:__deallocate_stack |
|
70 |
- fun:start_thread |
|
71 |
-} |
|
72 |
-{ |
|
73 |
- helgrind-glibc27-dbg05 |
|
74 |
- Helgrind:Race |
|
75 |
- fun:free_stacks |
|
76 |
- fun:__deallocate_stack |
|
77 |
- fun:start_thread |
|
78 |
-} |
|
79 |
-{ |
|
80 |
- helgrind-glibc27-dbg06 |
|
81 |
- Helgrind:Race |
|
82 |
- fun:* |
|
83 |
- obj:/usr/lib/debug/libpthread-*.so |
|
84 |
-} |
|
85 |
-{ |
|
86 |
- helgrind-glibc27-dbg06 |
|
87 |
- Helgrind:Race |
|
88 |
- fun:* |
|
89 |
- obj:/lib/libpthread-*.so |
|
90 |
-} |
|
91 |
-{ |
|
92 |
- helgrind-glibc27-dbg08 |
|
93 |
- Helgrind:Race |
|
94 |
- obj:/lib/ld-*.so |
|
95 |
-} |
|
96 |
-{ |
|
97 |
- helgrind-glibc27-dbg09 |
|
98 |
- Helgrind:Race |
|
99 |
- fun:* |
|
100 |
- fun:exit |
|
101 |
-} |
|
102 |
-{ |
|
103 |
- helgrind-glibc27-dbg10 |
|
104 |
- Helgrind:Race |
|
105 |
- fun:* |
|
106 |
- fun:* |
|
107 |
- fun:exit |
|
108 |
-} |
|
109 |
-{ |
|
110 |
- helgrind-glibc27-dbg11 |
|
111 |
- Helgrind:Race |
|
112 |
- fun:* |
|
113 |
- fun:* |
|
114 |
- fun:* |
|
115 |
- fun:exit |
|
116 |
-} |
|
117 |
-{ |
|
118 |
- helgrind-glibc27-dbg12 |
|
119 |
- Helgrind:Race |
|
120 |
- fun:* |
|
121 |
- fun:* |
|
122 |
- fun:* |
|
123 |
- fun:* |
|
124 |
- fun:exit |
|
125 |
-} |
|
126 |
-{ |
|
127 |
- helgrind-glibc27-dbg13 |
|
128 |
- Helgrind:Race |
|
129 |
- fun:* |
|
130 |
- fun:* |
|
131 |
- fun:ctime_r |
|
132 |
-} |
|
133 |
-{ |
|
134 |
- helgrind-glibc27-dbg15 |
|
135 |
- Helgrind:Race |
|
136 |
- fun:* |
|
137 |
- fun:* |
|
138 |
- fun:* |
|
139 |
- fun:ctime_r |
|
140 |
-} |
|
141 |
-{ |
|
142 |
- helgrind-glibc27-dbg14 |
|
143 |
- Helgrind:Race |
|
144 |
- fun:_IO_link_in |
|
145 |
- fun:_IO_file_init* |
|
146 |
-} |
|
147 |
-# libc has a gconv_lock, but valgrind doesn't know that because it uses lll_lock |
|
148 |
-# instead of pthread_mutex_lock |
|
149 |
-{ |
|
150 |
- helgrind-glibc27-dbg15 |
|
151 |
- Helgrind:Race |
|
152 |
- fun:__gconv_release_shlib |
|
153 |
-} |
|
154 |
-{ |
|
155 |
- helgrind-glibc27-dbg16 |
|
156 |
- Helgrind:Race |
|
157 |
- fun:__gconv_find_shlib |
|
158 |
-} |
|
159 |
-{ |
|
160 |
- helgrind-glibc27-dbg17 |
|
161 |
- Helgrind:Race |
|
162 |
- fun:exit |
|
163 |
-} |
|
164 |
- |
|
165 |
-{ |
|
166 |
-# suppress false positives, see bb 1189 |
|
167 |
- chm-etch-gcc41-fp |
|
168 |
- Memcheck:Cond |
|
169 |
- fun:cli_chm_open |
|
170 |
- fun:cli_scanmschm |
|
171 |
-} |
|
172 |
-{ |
|
173 |
- glibc-etch |
|
174 |
- Memcheck:Leak |
|
175 |
- fun:* |
|
176 |
- fun:_dl_allocate_tls |
|
177 |
-} |
|
178 |
-{ |
|
179 |
- glibc-suse |
|
180 |
- Memcheck:Leak |
|
181 |
- fun:* |
|
182 |
- obj:* |
|
183 |
- fun:_dl_allocate_tls |
|
184 |
-} |
|
185 |
-{ |
|
186 |
- glibc-tls3 |
|
187 |
- Memcheck:Leak |
|
188 |
- fun:* |
|
189 |
- fun:allocate_dtv |
|
190 |
- fun:_dl_allocate_tls |
|
191 |
-} |
|
192 |
-{ |
|
193 |
- glibc-tls4 |
|
194 |
- Memcheck:Leak |
|
195 |
- fun:allocate_dtv |
|
196 |
- fun:_dl_allocate_tls |
|
197 |
-} |
|
198 |
-# glibc uses IO_lock_lock, which uses lll_lock, |
|
199 |
-# and valgrind doesn't know about it, so it thinks it is unlocked |
|
200 |
-{ |
|
201 |
- glibc-IOlock-fp |
|
202 |
- Helgrind:Race |
|
203 |
- fun:* |
|
204 |
- fun:* |
|
205 |
- fun:fputs |
|
206 |
-} |
|
207 |
-{ |
|
208 |
- glibc-IOlock-fp |
|
209 |
- Helgrind:Race |
|
210 |
- fun:fputs |
|
211 |
-} |
|
212 |
-{ |
|
213 |
- glibc-fork |
|
214 |
- Helgrind:Race |
|
215 |
- fun:fork |
|
216 |
-} |
|
217 |
-{ |
|
218 |
- glibc-fork |
|
219 |
- Helgrind:Race |
|
220 |
- fun:* |
|
221 |
- fun:fork |
|
222 |
-} |
|
223 |
-{ |
|
224 |
- glibc-freetcb |
|
225 |
- Helgrind:Race |
|
226 |
- fun:__free_tcb |
|
227 |
-} |
|
228 |
-{ |
|
229 |
- glibc-2.5-strcpy_chk |
|
230 |
- Memcheck:Addr8 |
|
231 |
- obj:/lib64/libc-2.5.so |
|
232 |
- fun:decodeLine |
|
233 |
-} |
|
234 |
-{ |
|
235 |
- glibc-2.5-strcpy_chk |
|
236 |
- Memcheck:Cond |
|
237 |
- obj:/lib64/libc-2.5.so |
|
238 |
- fun:decodeLine |
|
239 |
-} |
|
240 |
-{ |
|
241 |
- glibc-2.5-strcpy_chk |
|
242 |
- Memcheck:Cond |
|
243 |
- obj:/lib64/libc-2.5.so |
|
244 |
- fun:cli_mbox |
|
245 |
-} |
|
246 |
-{ |
|
247 |
- glibc-2.8-lll |
|
248 |
- Helgrind:Race |
|
249 |
- fun:__lll_unlock_wake |
|
250 |
-} |
|
251 |
-{ |
|
252 |
- glibc-freeres |
|
253 |
- Helgrind:Race |
|
254 |
- fun: * |
|
255 |
- fun: __libc_thread_freeres |
|
256 |
-} |
|
257 |
-{ |
|
258 |
- glibc-poll |
|
259 |
- Helgrind:Race |
|
260 |
- fun: __libc_enable_asynccancel |
|
261 |
- fun: poll |
|
262 |
-} |
|
263 |
-{ |
|
264 |
- glibc-poll |
|
265 |
- Helgrind:Race |
|
266 |
- fun: _setjmp |
|
267 |
- fun: clone |
|
268 |
-} |
|
269 |
-{ |
|
270 |
- glibc-ubuntu-jaunty |
|
271 |
- Helgrind:Race |
|
272 |
- fun:__fprintf_chk |
|
273 |
-} |
|
274 |
-# no symbols in opensuse's libs :( |
|
275 |
-{ |
|
276 |
- glibc-suse |
|
277 |
- Helgrind:Race |
|
278 |
- obj:/lib*/ld-*.so |
|
279 |
- obj:/lib*/ld-*.so |
|
280 |
- obj:/lib*/ld-*.so |
|
281 |
-} |
|
282 |
-{ |
|
283 |
- glibc-suse2 |
|
284 |
- Helgrind:Race |
|
285 |
- obj:/lib*/ld-*.so |
|
286 |
- obj:/lib*/ld-*.so |
|
287 |
- obj:/lib*/ld-*.so |
|
288 |
- obj:/lib*/ld-*.so |
|
289 |
-} |
|
290 |
-{ |
|
291 |
- glibc-suse4 |
|
292 |
- Helgrind:Race |
|
293 |
- obj:/lib*/libc-*.so |
|
294 |
- obj:/lib*/libc-*.so |
|
295 |
- obj:/lib*/libc-*.so |
|
296 |
-} |
|
297 |
-{ |
|
298 |
- glibc-suse3 |
|
299 |
- Helgrind:Race |
|
300 |
- obj:* |
|
301 |
- fun:start_thread |
|
302 |
-} |
|
303 |
-{ |
|
304 |
- helgrind-glibc2X-005-valgrind-3.4.0 |
|
305 |
- Helgrind:Race |
|
306 |
- obj:/lib*/libpthread-2.*so* |
|
307 |
-} |
|
308 |
-{ |
|
309 |
- debian-libc-dbg |
|
310 |
- Helgrind:Race |
|
311 |
- fun:__pthread_mutex_* |
|
312 |
-} |
|
313 |
-{ |
|
314 |
- debian-libc-dbg |
|
315 |
- Helgrind:Race |
|
316 |
- fun:pthread_create@* |
|
317 |
-} |
|
318 |
-{ |
|
319 |
- debian-libc-dbg |
|
320 |
- Helgrind:Race |
|
321 |
- fun:close |
|
322 |
-} |
|
323 |
-{ |
|
324 |
- debian-libc-dbg |
|
325 |
- Helgrind:Race |
|
326 |
- obj:/usr/lib*/debug/libpthread-2.*so* |
|
327 |
-} |
|
328 |
-{ |
|
329 |
- sighandler-no-mutex |
|
330 |
- Helgrind:Race |
|
331 |
- fun:sighandler_th |
|
332 |
-} |
|
333 |
-{ |
|
334 |
- sighandler-no-mutex |
|
335 |
- Helgrind:Race |
|
336 |
- fun:recvloop_th |
|
337 |
-} |
|
338 |
-#{ |
|
339 |
-# helgrind-glibc27-dbg18 |
|
340 |
-# Helgrind:Race |
|
341 |
-# fun:__reclaim_stacks |
|
342 |
-# fun:fork |
|
343 |
-#} |
... | ... |
@@ -17,12 +17,13 @@ parse_valgrindlog() |
17 | 17 |
if test ! -f $1; then |
18 | 18 |
echo "*** Logfile $1 not found. Valgrind failed to run?" |
19 | 19 |
fi |
20 |
- NRUNS=`grep "ERROR SUMMARY" $1 | wc -l` |
|
21 |
- if test $NRUNS -eq `grep "ERROR SUMMARY: 0 errors" $1 | wc -l` && test `grep "FATAL:" $1|wc -l ` -eq 0; then |
|
20 |
+ NRUNS=`grep -a "ERROR SUMMARY" $1 | wc -l` |
|
21 |
+ if test $NRUNS -eq `grep -a "ERROR SUMMARY: 0 errors" $1 | wc -l` && test `grep -a "FATAL:" $1|wc -l ` -eq 0; then |
|
22 | 22 |
if test "$1" = "valgrind-race.log" || |
23 | 23 |
test $NRUNS -eq `grep "no leaks are possible" $1 | wc -l` || |
24 | 24 |
test `grep "lost:" $1 | grep -v " 0 bytes" | wc -l` -eq 0; then |
25 | 25 |
if test -z "$GENSUPP"; then |
26 |
+ cp $1 /tmp |
|
26 | 27 |
rm -f $1; |
27 | 28 |
fi |
28 | 29 |
return |
... | ... |
@@ -62,24 +63,40 @@ else |
62 | 62 |
GENSUPP= |
63 | 63 |
fi |
64 | 64 |
|
65 |
-VALGRIND_COMMON_FLAGS="-v --trace-children=yes --suppressions=$abs_srcdir/valgrind.supp $GENSUPP" |
|
65 |
+VALGRIND_COMMON_FLAGS="-v --trace-children=yes --suppressions=$abs_srcdir/valgrind.supp --error-exitcode=123 $GENSUPP" |
|
66 | 66 |
VALGRIND_FLAGS="$VALGRIND_COMMON_FLAGS --track-fds=yes --leak-check=full" |
67 | 67 |
VALGRIND_FLAGS_RACE="$VALGRIND_COMMON_FLAGS --tool=helgrind" |
68 | 68 |
export CK_DEFAULT_TIMEOUT=40 |
69 | 69 |
echo "--- Starting check_clamav under valgrind/memcheck" |
70 | 70 |
rm -f valgrind-check.log valgrind-clamd.log valgrind-race.log |
71 |
-CK_FORK=no ../libtool --mode=execute $VALGRIND $VALGRIND_FLAGS ./check_clamav >valgrind-check.log 2>&1 & |
|
71 |
+CK_FORK=no ../libtool --mode=execute $VALGRIND $VALGRIND_FLAGS --log-file=valgrind-check.log ./check_clamav & |
|
72 | 72 |
pid1=$! |
73 | 73 |
|
74 | 74 |
echo "--- Starting clamd under valgrind/memcheck" |
75 |
-CLAMD_WRAPPER="$VALGRIND $VALGRIND_FLAGS" $abs_srcdir/check_clamd.sh >valgrind-clamd.log 2>&1 & |
|
75 |
+CLAMD_WRAPPER="$VALGRIND $VALGRIND_FLAGS --log-file=`pwd`/valgrind-clamd.log" $abs_srcdir/check_clamd.sh & |
|
76 | 76 |
pid2=$! |
77 | 77 |
|
78 | 78 |
echo "--- Starting clamd under valgrind/helgrind" |
79 |
-CLAMD_TEST_UNIQ1=3 CLAMD_TEST_UNIQ2=4 CLAMD_WRAPPER="$VALGRIND $VALGRIND_FLAGS_RACE" $abs_srcdir/check_clamd.sh >valgrind-race.log 2>&1 & |
|
79 |
+CLAMD_TEST_UNIQ1=3 CLAMD_TEST_UNIQ2=4 CLAMD_WRAPPER="$VALGRIND $VALGRIND_FLAGS_RACE --log-file=`pwd`/valgrind-race.log" $abs_srcdir/check_clamd.sh & |
|
80 | 80 |
pid3=$! |
81 | 81 |
|
82 |
-wait $pid1 $pid2 $pid3 |
|
82 |
+errors=0 |
|
83 |
+wait $pid1 |
|
84 |
+if test $? -ne 0; then |
|
85 |
+ # don't rm logs |
|
86 |
+ GENSUPP=1 |
|
87 |
+ errors=1 |
|
88 |
+fi |
|
89 |
+wait $pid2 |
|
90 |
+if test $? -ne 0; then |
|
91 |
+ GENSUPP=1 |
|
92 |
+ errors=1 |
|
93 |
+fi |
|
94 |
+wait $pid3 |
|
95 |
+if test $? -ne 0; then |
|
96 |
+ GENSUPP=1 |
|
97 |
+ errors=1 |
|
98 |
+fi |
|
83 | 99 |
parse_valgrindlog valgrind-check.log |
84 | 100 |
parse_valgrindlog valgrind-clamd.log |
85 | 101 |
parse_valgrindlog valgrind-race.log |
... | ... |
@@ -87,4 +104,4 @@ parse_valgrindlog valgrind-race.log |
87 | 87 |
if test -f valgrind-check.log || test -f valgrind-race.log || test -f valgrind-clamd.log; then |
88 | 88 |
exit 1; |
89 | 89 |
fi |
90 |
-exit 0 |
|
90 |
+exit $errors |