/
githubmirror
/
libreport
Обзор
Документация
Войти
/
githubmirror
/
libreport
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.17.13
tests/client.at
152 строки
4 KB
Michal Fabik
internal_libreport: Fix namespacing with #defines
14 апр 2020, 12:42
14 апр 2020, 12:42
2beaddf
Код
Авторство
О чём код?
# -*- Autotest -*- AT_BANNER([Client]) ## -------------------------- ## ## libreport_set_echo ## ## -------------------------- ## AT_TESTFUN([libreport_set_echo], [[ #include <assert.h> #include "client.h" #include "internal_libreport.h" #include <pty.h> #define ECHO_TEST (!(new_mode.c_lflag & ECHO)) #define ECHONL_TEST (!(new_mode.c_lflag & ECHONL)) int main (void) { int master_pty; pid_t pid = forkpty(&master_pty, NULL, NULL, NULL); if (pid < 0) { perror_msg_and_die("forkpty failed."); } if (pid == 0) { int check, result, changed; struct termios old_mode, new_mode; assert(isatty(STDIN_FILENO) == 1); check = tcgetattr(STDIN_FILENO, &new_mode); assert(check == 0); old_mode = new_mode; new_mode.c_lflag |= ECHO; new_mode.c_lflag &= ~(ECHONL); check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 0; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(check == 0); assert(result != changed); assert(ECHO_TEST == 1); assert(ECHONL_TEST == 0); changed = 1; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(check == 0); assert(result == changed); assert(ECHO_TEST == 0); assert(ECHONL_TEST == 1); new_mode.c_lflag &= ~(ECHO); new_mode.c_lflag |= ECHONL; check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 0; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(result == changed); assert(ECHO_TEST == 1); assert(ECHONL_TEST == 0); new_mode.c_lflag |= ECHO; new_mode.c_lflag &= ~(ECHONL); check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 1; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(result != changed); assert(ECHO_TEST == 0); assert(ECHONL_TEST == 1); new_mode.c_lflag &= ~(ECHO | ECHONL); check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 0; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(result != changed); assert(ECHO_TEST == 1); assert(ECHONL_TEST == 0); new_mode.c_lflag &= ~(ECHO | ECHONL); check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 1; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(check == 0); assert(result == changed); assert(ECHO_TEST == 0); assert(ECHONL_TEST == 1); new_mode.c_lflag |= (ECHO | ECHONL); check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 0; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(check == 0); assert(result != changed); assert(ECHO_TEST == 1); assert(ECHONL_TEST == 0); new_mode.c_lflag |= (ECHO | ECHONL); check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode); assert(check == 0); changed = 1; result = libreport_set_echo(changed); check = tcgetattr(STDIN_FILENO, &new_mode); assert(check == 0); assert(result == changed); assert(ECHO_TEST == 0); assert(ECHONL_TEST == 1); check = tcsetattr(STDIN_FILENO, TCSANOW, &old_mode); assert(check == 0); return 0; } int status; if (libreport_safe_waitpid(pid, &status, 0) < 0) { perror_msg_and_die("waitpid failed."); } if (WIFEXITED(status)) { return WEXITSTATUS(status); } else if (WIFSIGNALED(status)) { error_msg_and_die("Killed by signal %d.", WTERMSIG(status)); } else { error_msg_and_die("Test unexpectedly stopped/continued."); } return 0; } ]])