added test for multiple output logger streams
This commit is contained in:
parent
138937af57
commit
ebf526d6da
|
@ -18,7 +18,7 @@ add_test(NAME logging_output
|
||||||
COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_output)
|
COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_output)
|
||||||
|
|
||||||
# ------------------------------------------------------- #
|
# ------------------------------------------------------- #
|
||||||
# CTEST 1
|
# CTEST 2
|
||||||
# test the panic functionality of the logger
|
# test the panic functionality of the logger
|
||||||
|
|
||||||
add_executable(logging_panic
|
add_executable(logging_panic
|
||||||
|
@ -31,3 +31,18 @@ set_target_properties(logging_panic
|
||||||
add_test(NAME logging_panic
|
add_test(NAME logging_panic
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_panic)
|
COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_panic)
|
||||||
|
|
||||||
|
# ------------------------------------------------------- #
|
||||||
|
# CTEST 3
|
||||||
|
# test the ability to write to multiple output streams
|
||||||
|
|
||||||
|
add_executable(logging_streams
|
||||||
|
${PROJECT_SOURCE_DIR}/src/sys/log.c
|
||||||
|
streams.c)
|
||||||
|
set_target_properties(logging_streams
|
||||||
|
PROPERTIES
|
||||||
|
OUTPUT_NAME "stream"
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY ${GEMSTONE_BINARY_DIR}/tests/logging)
|
||||||
|
add_test(NAME logging_streams
|
||||||
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
|
COMMAND python ${GEMSTONE_TEST_DIR}/logging/test_logging.py check_stream)
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
//
|
||||||
|
// Created by servostar on 5/2/24.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "sys/log.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static FILE* file;
|
||||||
|
|
||||||
|
void close_file(void) {
|
||||||
|
if (file != NULL) {
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
log_init();
|
||||||
|
|
||||||
|
// this should appear in stderr
|
||||||
|
INFO("should only be in stderr");
|
||||||
|
|
||||||
|
file = fopen("tmp/test.log", "w");
|
||||||
|
if (file == NULL) {
|
||||||
|
PANIC("could not open file");
|
||||||
|
}
|
||||||
|
atexit(close_file);
|
||||||
|
|
||||||
|
log_register_stream(file);
|
||||||
|
|
||||||
|
INFO("should be in both");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ import subprocess
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
from logging import info, error
|
from logging import info, error
|
||||||
|
import os
|
||||||
|
|
||||||
BIN_DIR = "bin/tests/logging/"
|
BIN_DIR = "bin/tests/logging/"
|
||||||
|
|
||||||
|
@ -47,6 +48,40 @@ def run_check_panic():
|
||||||
assert "after exit" not 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__":
|
if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
@ -59,6 +94,8 @@ if __name__ == "__main__":
|
||||||
run_check_output()
|
run_check_output()
|
||||||
case "check_panic":
|
case "check_panic":
|
||||||
run_check_panic()
|
run_check_panic()
|
||||||
|
case "check_stream":
|
||||||
|
run_check_stream()
|
||||||
case _:
|
case _:
|
||||||
error(f"unknown target: {target}")
|
error(f"unknown target: {target}")
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
Loading…
Reference in New Issue