125 lines
2.9 KiB
Python
125 lines
2.9 KiB
Python
import subprocess
|
|
import sys
|
|
import logging
|
|
from logging import info, error
|
|
import os
|
|
|
|
BIN_DIR = "bin/tests/logging/"
|
|
|
|
|
|
def run_check_output():
|
|
info("started check output...")
|
|
|
|
p = subprocess.run(BIN_DIR + "output", capture_output=True, text=True)
|
|
|
|
info("checking exit code...")
|
|
|
|
# check exit code
|
|
assert p.returncode == 0
|
|
|
|
output = p.stderr
|
|
|
|
# check if logs appear in default log output (stderr)
|
|
info("checking stderr...")
|
|
|
|
assert "logging some debug..." in output
|
|
assert "logging some info..." in output
|
|
assert "logging some warning..." in output
|
|
assert "logging some error..." in output
|
|
|
|
|
|
def run_check_level():
|
|
info("started check level...")
|
|
|
|
p = subprocess.run(BIN_DIR + "level", capture_output=True, text=True)
|
|
|
|
info("checking exit code...")
|
|
|
|
# check exit code
|
|
assert p.returncode == 0
|
|
|
|
output = p.stderr
|
|
|
|
# check if logs appear in default log output (stderr)
|
|
info("checking stderr...")
|
|
|
|
assert "logging some debug..." not in output
|
|
assert "logging some info..." not in output
|
|
assert "logging some warning..." in output
|
|
assert "logging some error..." in output
|
|
|
|
|
|
def run_check_panic():
|
|
info("started check panic...")
|
|
|
|
p = subprocess.run(BIN_DIR + "panic", capture_output=True, text=True)
|
|
|
|
info("checking exit code...")
|
|
|
|
# check exit code
|
|
assert p.returncode == 1
|
|
|
|
output = p.stderr
|
|
|
|
# check if logs appear (not) in default log output (stderr)
|
|
info("checking stderr...")
|
|
|
|
assert "before exit" in output
|
|
assert "oooops something happened" in output
|
|
assert "after exit" not in output
|
|
|
|
|
|
def run_check_stream():
|
|
info("started check panic...")
|
|
|
|
info("creating temporary folder...")
|
|
|
|
if not os.path.exists("tmp"):
|
|
os.mkdir("tmp")
|
|
|
|
info("cleaning temporary folder...")
|
|
|
|
if os.path.exists("tmp/test.log"):
|
|
os.remove("tmp/test.log")
|
|
|
|
info("launching test binary...")
|
|
|
|
p = subprocess.run(BIN_DIR + "stream", capture_output=True, text=True)
|
|
|
|
info("checking exit code...")
|
|
|
|
# check exit code
|
|
assert p.returncode == 0
|
|
|
|
with open("tmp/test.log", "r") as file:
|
|
assert "should be in both" in "".join(file.readlines())
|
|
|
|
output = p.stderr
|
|
|
|
# check if logs appear (not) in default log output (stderr)
|
|
info("checking stderr...")
|
|
|
|
assert "should only be in stderr" in output
|
|
assert "should be in both" in output
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
target = sys.argv[1]
|
|
|
|
info(f"starting logging test suite with target: {target}")
|
|
|
|
match target:
|
|
case "check_output":
|
|
run_check_output()
|
|
case "check_panic":
|
|
run_check_panic()
|
|
case "check_stream":
|
|
run_check_stream()
|
|
case "check_level":
|
|
run_check_level()
|
|
case _:
|
|
error(f"unknown target: {target}")
|
|
exit(1)
|