added test for logger panic
This commit is contained in:
parent
b386c11043
commit
4b24e0645c
|
@ -1,9 +1,25 @@
|
|||
include(CTest)
|
||||
|
||||
add_executable(logging ${PROJECT_SOURCE_DIR}/src/sys/log.c main.c)
|
||||
target_include_directories(logging PUBLIC ${PROJECT_SOURCE_DIR}/src)
|
||||
set_target_properties(logging
|
||||
# ------------------------------------------------------- #
|
||||
# CTEST 1
|
||||
# test the default output of the logger
|
||||
|
||||
add_executable(logging_output ${PROJECT_SOURCE_DIR}/src/sys/log.c output.c)
|
||||
target_include_directories(logging_output PUBLIC ${PROJECT_SOURCE_DIR}/src)
|
||||
set_target_properties(logging_output
|
||||
PROPERTIES
|
||||
OUTPUT_NAME "output"
|
||||
RUNTIME_OUTPUT_DIRECTORY ${GEMSTONE_BINARY_DIR}/tests/logging)
|
||||
add_test(NAME logging WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND python ${GEMSTONE_TEST_DIR}/logging/check_output.py)
|
||||
add_test(NAME logging_output WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_output)
|
||||
|
||||
# ------------------------------------------------------- #
|
||||
# CTEST 1
|
||||
# test the panic functionality of the logger
|
||||
|
||||
add_executable(logging_panic ${PROJECT_SOURCE_DIR}/src/sys/log.c panic.c)
|
||||
target_include_directories(logging_panic PUBLIC ${PROJECT_SOURCE_DIR}/src)
|
||||
set_target_properties(logging_panic
|
||||
PROPERTIES
|
||||
OUTPUT_NAME "panic"
|
||||
RUNTIME_OUTPUT_DIRECTORY ${GEMSTONE_BINARY_DIR}/tests/logging)
|
||||
add_test(NAME logging_panic WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_panic)
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
import subprocess
|
||||
|
||||
|
||||
def run_logger_test():
|
||||
p = subprocess.run("bin/tests/logging/output", capture_output=True, text=True)
|
||||
|
||||
# check exit code
|
||||
if p.returncode != 0:
|
||||
exit(p.returncode)
|
||||
|
||||
output = p.stderr
|
||||
|
||||
# check if logs appear in default log output (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
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_logger_test()
|
|
@ -0,0 +1,20 @@
|
|||
//
|
||||
// Created by servostar on 5/2/24.
|
||||
//
|
||||
|
||||
#include "sys/log.h"
|
||||
|
||||
int main(void) {
|
||||
log_init();
|
||||
|
||||
// this should appear in stderr
|
||||
INFO("before exit");
|
||||
|
||||
PANIC("oooops something happened");
|
||||
|
||||
// this should NOT appear in stderr
|
||||
// ^^^
|
||||
ERROR("after exit");
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
import subprocess
|
||||
import sys
|
||||
import logging
|
||||
from logging import info, error
|
||||
|
||||
BIN_DIR = "bin/tests/logging/"
|
||||
|
||||
|
||||
def run_logger_test():
|
||||
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_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
|
||||
|
||||
|
||||
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_logger_test()
|
||||
case "check_panic":
|
||||
run_check_panic()
|
||||
case _:
|
||||
error(f"unknown target: {target}")
|
||||
exit(1)
|
Loading…
Reference in New Issue