Add tests
This commit is contained in:
parent
e7a6581dca
commit
2a44f23de2
13 changed files with 168 additions and 115 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -2,3 +2,5 @@
|
||||||
/config/2-conditionals.mk
|
/config/2-conditionals.mk
|
||||||
/polytreewm
|
/polytreewm
|
||||||
/src/*.o
|
/src/*.o
|
||||||
|
/tests/*.o
|
||||||
|
/tests/*.test
|
||||||
|
|
34
Makefile
34
Makefile
|
@ -22,6 +22,7 @@ MODULES_SRC = \
|
||||||
src/geom.c \
|
src/geom.c \
|
||||||
src/helpers.c \
|
src/helpers.c \
|
||||||
src/layouts.c \
|
src/layouts.c \
|
||||||
|
src/logger.c \
|
||||||
src/settings.c \
|
src/settings.c \
|
||||||
src/spawn.c \
|
src/spawn.c \
|
||||||
src/state.c \
|
src/state.c \
|
||||||
|
@ -34,25 +35,37 @@ DWM_SRC = \
|
||||||
src/dwm/layouts.c \
|
src/dwm/layouts.c \
|
||||||
src/dwm/xerror.c
|
src/dwm/xerror.c
|
||||||
|
|
||||||
|
TEST_SRC = \
|
||||||
|
tests/geom_position.c \
|
||||||
|
tests/geom_sizes.c
|
||||||
|
|
||||||
|
MAIN_SRC = $(MODULES_SRC) src/main.c
|
||||||
|
|
||||||
MODULES_HDR = $(MODULES_SRC:.c=.h)
|
MODULES_HDR = $(MODULES_SRC:.c=.h)
|
||||||
DWM_HDR = $(DWM_SRC:.c=.h)
|
DWM_HDR = $(DWM_SRC:.c=.h)
|
||||||
|
MAIN_HDR = $(MODULES_HDR) src/main.h src/config.def.h
|
||||||
|
|
||||||
SRC = $(MODULES_SRC) src/main.c
|
MODULES_OBJ = $(MODULES_SRC:.c=.o)
|
||||||
HDR = $(MODULES_HDR) src/main.h src/config.def.h
|
TEST_OBJ = $(TEST_SRC:.c=.o) tests/main.o
|
||||||
|
MAIN_OBJ = src/main.o
|
||||||
|
ALL_OBJ = $(MODULES_OBJ) $(TEST_OBJ) $(MAIN_OBJ)
|
||||||
|
|
||||||
OBJ = $(SRC:.c=.o)
|
TEST_EXE = $(TEST_SRC:.c=.test)
|
||||||
|
ALL_EXE = polytreewm $(TEST_EXE)
|
||||||
|
|
||||||
polytreewm: $(OBJ)
|
polytreewm: $(MAIN_OBJ) $(MODULES_OBJ)
|
||||||
$(CC) -o $@ $(OBJ) $(LDFLAGS)
|
$(CC) -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c $(CONFIGMKS) $(HDR)
|
||||||
$(CC) -c $< -o $@ $(CFLAGS)
|
$(CC) -c $< -o $@ $(CFLAGS)
|
||||||
|
|
||||||
|
%.test: %.o $(MODULES_OBJ) tests/main.o
|
||||||
|
$(CC) -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
dwm.o: $(DWM_SRC) $(DWM_HDR)
|
dwm.o: $(DWM_SRC) $(DWM_HDR)
|
||||||
$(OBJ): $(CONFIGMKS) $(HDR)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f polytreewm $(OBJ)
|
rm -f $(ALL_OBJ) $(ALL_EXE)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f $(CONFIGMKS_TO_REMOVE)
|
rm -f $(CONFIGMKS_TO_REMOVE)
|
||||||
|
@ -71,4 +84,7 @@ uninstall:
|
||||||
$(DESTDIR)$(BINDIR)/polytreewm \
|
$(DESTDIR)$(BINDIR)/polytreewm \
|
||||||
$(DESTDIR)$(MANDIR)/man1/polytreewm.1
|
$(DESTDIR)$(MANDIR)/man1/polytreewm.1
|
||||||
|
|
||||||
.PHONY: all clean distclean install uninstall
|
test: $(TEST_EXE)
|
||||||
|
@echo "$(TEST_EXE)" | awk '{ OFS="\n"; $$1=$$1 } 1' | sh
|
||||||
|
|
||||||
|
.PHONY: all clean distclean install uninstall test
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "main.h"
|
#include "logger.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
#include "layouts.h"
|
#include "layouts.h"
|
||||||
|
#include "logger.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "spawn.h"
|
#include "spawn.h"
|
||||||
|
|
93
src/logger.c
Normal file
93
src/logger.c
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static void logger(const char *level, const char *fmt, ...);
|
||||||
|
static void logger_perror(const char *level, const char *fmt, ...);
|
||||||
|
|
||||||
|
void logger(const char *const level, const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
fprintf(stderr, PROGRAM_NAME": %s: ", level);
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vfprintf(stderr, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
fputc('\n', stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void logger_perror(const char *const level, const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
fprintf(stderr, PROGRAM_NAME": %s: ", level);
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vfprintf(stderr, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
fprintf(stderr, ": ");
|
||||||
|
perror(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fatal(const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger("ERROR", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fatal_perror(const char* const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger_perror("ERROR", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fatal_nodie(const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger("ERROR", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fatal_perror_nodie(const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger_perror("ERROR", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void warning(const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger("WARN", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void warning_perror(const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger_perror("WARN", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void info(const char *const fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
logger("INFO", fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
17
src/logger.h
Normal file
17
src/logger.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef _LOGGER_H
|
||||||
|
#define _LOGGER_H
|
||||||
|
|
||||||
|
#define PROGRAM_TITLE "PolytreeWM"
|
||||||
|
#define PROGRAM_NAME "polytreewm"
|
||||||
|
|
||||||
|
__attribute__((noreturn))
|
||||||
|
void fatal(const char *fmt, ...);
|
||||||
|
__attribute__((noreturn))
|
||||||
|
void fatal_perror(const char *fmt, ...);
|
||||||
|
void fatal_nodie(const char *fmt, ...);
|
||||||
|
void fatal_perror_nodie(const char *fmt, ...);
|
||||||
|
void warning(const char *fmt, ...);
|
||||||
|
void warning_perror(const char *fmt, ...);
|
||||||
|
void info(const char *fmt, ...);
|
||||||
|
|
||||||
|
#endif // _LOGGER_H
|
93
src/main.c
93
src/main.c
|
@ -1,10 +1,10 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
#include "dwm.h"
|
#include "dwm.h"
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -12,16 +12,10 @@
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define PROGRAM_TITLE "PolytreeWM"
|
|
||||||
#define PROGRAM_NAME "polytreewm"
|
|
||||||
|
|
||||||
static char *program_exe = NULL;
|
static char *program_exe = NULL;
|
||||||
|
|
||||||
static void signal_callback(int signo);
|
static void signal_callback(int signo);
|
||||||
|
|
||||||
static void logger(const char *level, const char *fmt, ...);
|
|
||||||
static void logger_perror(const char *level, const char *fmt, ...);
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
if (argc == 2 &&
|
if (argc == 2 &&
|
||||||
|
@ -83,88 +77,3 @@ void restart()
|
||||||
execvp(program_exe, args);
|
execvp(program_exe, args);
|
||||||
fatal_perror("restart with `execvp' failed");
|
fatal_perror("restart with `execvp' failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void logger(const char *const level, const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
fprintf(stderr, PROGRAM_NAME": %s: ", level);
|
|
||||||
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
vfprintf(stderr, fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
fputc('\n', stderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void logger_perror(const char *const level, const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
fprintf(stderr, PROGRAM_NAME": %s: ", level);
|
|
||||||
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
vfprintf(stderr, fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
fprintf(stderr, ": ");
|
|
||||||
perror(NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fatal(const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger("ERROR", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fatal_perror(const char* const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger_perror("ERROR", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fatal_nodie(const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger("ERROR", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fatal_perror_nodie(const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger_perror("ERROR", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
void warning(const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger("WARN", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
void warning_perror(const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger_perror("WARN", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
void info(const char *const fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
logger("INFO", fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
10
src/main.h
10
src/main.h
|
@ -1,16 +1,6 @@
|
||||||
#ifndef _MAIN_H
|
#ifndef _MAIN_H
|
||||||
#define _MAIN_H
|
#define _MAIN_H
|
||||||
|
|
||||||
__attribute__((noreturn))
|
|
||||||
void fatal(const char *fmt, ...);
|
|
||||||
__attribute__((noreturn))
|
|
||||||
void fatal_perror(const char *fmt, ...);
|
|
||||||
void fatal_nodie(const char *fmt, ...);
|
|
||||||
void fatal_perror_nodie(const char *fmt, ...);
|
|
||||||
void warning(const char *fmt, ...);
|
|
||||||
void warning_perror(const char *fmt, ...);
|
|
||||||
void info(const char *fmt, ...);
|
|
||||||
|
|
||||||
__attribute__((noreturn))
|
__attribute__((noreturn))
|
||||||
void restart();
|
void restart();
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#include "main.h"
|
#include "logger.h"
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "xbase.h"
|
#include "xbase.h"
|
||||||
|
|
||||||
#include "main.h"
|
#include "logger.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
3
tests/geom_position.c
Normal file
3
tests/geom_position.c
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
int test() {
|
||||||
|
return 0;
|
||||||
|
}
|
3
tests/geom_sizes.c
Normal file
3
tests/geom_sizes.c
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
int test() {
|
||||||
|
return 0;
|
||||||
|
}
|
19
tests/main.c
Normal file
19
tests/main.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int test();
|
||||||
|
|
||||||
|
void restart() {}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
const char *const test_name = argv[0];
|
||||||
|
const int test_result = test();
|
||||||
|
|
||||||
|
if (test_result == 0) {
|
||||||
|
printf("[ OK ] %s\n", test_name);
|
||||||
|
} else {
|
||||||
|
printf("[FAIL] %s\n", test_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return test_result;
|
||||||
|
}
|
Loading…
Reference in a new issue