mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
73 lines
1.8 KiB
Text
73 lines
1.8 KiB
Text
# This test is intended to help keep the "Log Files" documentation page
|
|
# up-to-date. The output of this test should match all the log filenames
|
|
# listed on the "Log Files" page in the documentation.
|
|
#
|
|
# If this test fails, then the "Log Files" documentation page should be updated.
|
|
|
|
# @TEST-REQUIRES: ${SCRIPTS}/have-spicy
|
|
# @TEST-REQUIRES: which python3
|
|
# @TEST-EXEC: bash %INPUT
|
|
# @TEST-EXEC: btest-diff out
|
|
|
|
BROSCRIPTS=${DIST}/scripts
|
|
|
|
if [ ! -d "${BROSCRIPTS}" ]; then
|
|
echo "Directory not found: ${BROSCRIPTS}" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
python3 find_logs.py "${BROSCRIPTS}" | sort > out
|
|
|
|
@TEST-START-FILE find_logs.py
|
|
import os, sys
|
|
import re
|
|
|
|
scriptdir = sys.argv[1]
|
|
|
|
# Return a list of all zeek script files.
|
|
def find_scripts():
|
|
scripts = []
|
|
|
|
for r, d, f in os.walk(scriptdir):
|
|
for fname in f:
|
|
if fname.endswith(".zeek") or fname.endswith(".bro"):
|
|
scripts.append(os.path.join(r, fname))
|
|
|
|
return scripts
|
|
|
|
# For a given script file, return a list of all "Log::create_stream" lines.
|
|
def find_log(fname):
|
|
f = open(fname, "r")
|
|
|
|
lines = []
|
|
get_semicolon = False
|
|
|
|
for line in f:
|
|
line = line.strip()
|
|
if not line:
|
|
continue
|
|
if line.startswith("#"):
|
|
continue
|
|
|
|
if get_semicolon:
|
|
lines[-1] += line
|
|
if line.endswith(";"):
|
|
get_semicolon = False
|
|
elif line.startswith("Log::create_stream"):
|
|
lines.append(line)
|
|
if not line.endswith(";"):
|
|
get_semicolon = True
|
|
|
|
f.close()
|
|
|
|
return lines
|
|
|
|
for fname in find_scripts():
|
|
lines = find_log(fname)
|
|
for line in lines:
|
|
# Print the value of the "$path" field.
|
|
idx = line.find("$path")
|
|
if idx > 0:
|
|
m = re.match('.*\$path\s*=\s*"?(\w+)"?.*', line[idx:])
|
|
print(m.group(1))
|
|
@TEST-END-FILE
|