From 23934e5c3daf1f4589b3614f1fe5f10f6d7f8ce5 Mon Sep 17 00:00:00 2001 From: Douglas Barahona Date: Thu, 3 Sep 2026 23:18:42 -0600 Subject: [PATCH] fix: count files from clamd daemon log --- scripts/virus-scan | 3 ++- tests/test-virus-scan.sh | 23 ++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/scripts/virus-scan b/scripts/virus-scan index 3a334c0..21de879 100644 --- a/scripts/virus-scan +++ b/scripts/virus-scan @@ -68,6 +68,7 @@ LocalSocket ${runtime_dir}/clamd.sock FixStaleSocket yes DatabaseDirectory ${database_dir} Foreground yes +LogClean yes PidFile ${runtime_dir}/clamd.pid ExcludePath (^|/)\.composer-cache(/|$) ExcludePath (^|/)node_modules_cache(/|$) @@ -108,7 +109,7 @@ scanned_files="$( awk ' /: OK$/ || / FOUND$/ { count++ } END { print count + 0 } - ' "${scan_report}" + ' "${clamd_log}" )" awk -v scanned_files="${scanned_files}" ' diff --git a/tests/test-virus-scan.sh b/tests/test-virus-scan.sh index 1ff854e..a7582ee 100644 --- a/tests/test-virus-scan.sh +++ b/tests/test-virus-scan.sh @@ -80,6 +80,24 @@ done cp "${config_file}" "${TEST_STATE}/clamd.conf" printf '%s\n' "$$" > "${TEST_STATE}/clamd.pid" + +case "${FAKE_SCAN_EXIT:-0}" in + 0) + printf '%s\n' \ + "${TEST_STATE}/work/clean-one.php: OK" \ + "${TEST_STATE}/work/clean-two.php: OK" + ;; + 1) + printf '%s\n' \ + "${TEST_STATE}/work/clean.php: OK" \ + "${TEST_STATE}/work/infected.php: Eicar-Test-Signature FOUND" + ;; + 2) + printf '%s\n' \ + "${TEST_STATE}/work/unreadable.php: Permission denied. ERROR" + ;; +esac + trap 'touch "${TEST_STATE}/clamd.stopped"; exit 0' TERM INT while :; do sleep 0.05 @@ -106,8 +124,7 @@ done case "${FAKE_SCAN_EXIT:-0}" in 0) printf '%s\n' \ - "${TEST_STATE}/work/clean-one.php: OK" \ - "${TEST_STATE}/work/clean-two.php: OK" \ + "${TEST_STATE}/work: OK" \ '' \ '----------- SCAN SUMMARY -----------' \ 'Infected files: 0' \ @@ -115,7 +132,6 @@ case "${FAKE_SCAN_EXIT:-0}" in ;; 1) printf '%s\n' \ - "${TEST_STATE}/work/clean.php: OK" \ "${TEST_STATE}/work/infected.php: Eicar-Test-Signature FOUND" \ '' \ '----------- SCAN SUMMARY -----------' \ @@ -180,6 +196,7 @@ run_scan_case() { run_scan_case clean 0 success 0 assert_file_contains "${TEST_DIR}/clean/clamdscan.calls" '--multiscan' 'clean scan requests multiscan' assert_file_not_contains "${TEST_DIR}/clean/clamdscan.calls" '--infected' 'clean scan captures clean results for counting' +assert_file_contains "${TEST_DIR}/clean/clamd.conf" '^LogClean yes$' 'clean file results are enabled in the private daemon log' assert_file_contains "${TEST_DIR}/clean/clamd.conf" 'ExcludePath .*\\.composer-cache' 'composer cache exclusion is configured for clamd' assert_file_contains "${TEST_DIR}/clean/clamd.conf" 'ExcludePath .*node_modules_cache' 'node modules cache exclusion is configured for clamd' assert_file_contains "${TEST_DIR}/clean/output" 'Scanned files: 2' 'clean scan reports the scanned file count'