tytest: add write buffer to checksum

This commit is contained in:
Boris Faure 2018-12-09 20:55:25 +01:00
parent e0ed4b4ad9
commit 5cef3b68b6
6 changed files with 37 additions and 8 deletions

View File

@ -56,6 +56,7 @@ tyfuzz_sources = ['termptyesc.c', 'termptyesc.h',
'termpty.c', 'termpty.h', 'termpty.c', 'termpty.h',
'config.c', 'config.h', 'config.c', 'config.h',
'col.c', 'col.h', 'col.c', 'col.h',
'sb.c', 'sb.h',
'tyfuzz.c'] 'tyfuzz.c']
tytest_sources = ['termptyesc.c', 'termptyesc.h', tytest_sources = ['termptyesc.c', 'termptyesc.h',
'termptysave.c', 'termptysave.h', 'termptysave.c', 'termptysave.h',
@ -66,6 +67,7 @@ tytest_sources = ['termptyesc.c', 'termptyesc.h',
'termpty.c', 'termpty.h', 'termpty.c', 'termpty.h',
'config.c', 'config.h', 'config.c', 'config.h',
'col.c', 'col.h', 'col.c', 'col.h',
'sb.c', 'sb.h',
'md5/md5.c', 'md5/md5.h', 'md5/md5.c', 'md5/md5.h',
'tytest.c'] 'tytest.c']

View File

@ -1241,15 +1241,18 @@ termpty_cell_get(Termpty *ty, int y_requested, int x_requested)
void void
termpty_write(Termpty *ty, const char *input, int len) termpty_write(Termpty *ty, const char *input, int len)
{ {
#if defined(ENABLE_TESTS)
ty_sb_add(&ty->write_buffer, input, len);
#else
int fd = ty->fd; int fd = ty->fd;
#if defined(ENABLE_FUZZING)
#if defined(ENABLE_FUZZING) || defined(ENABLE_TESTS)
fd = ty->fd_dev_null; fd = ty->fd_dev_null;
#endif #endif
if (fd < 0) return; if (fd < 0) return;
if (write(fd, input, len) < 0) if (write(fd, input, len) < 0)
ERR(_("Could not write to file descriptor %d: %s"), ERR(_("Could not write to file descriptor %d: %s"),
fd, strerror(errno)); fd, strerror(errno));
#endif
} }
struct screen_info struct screen_info

View File

@ -3,6 +3,7 @@
#include "config.h" #include "config.h"
#include "media.h" #include "media.h"
#include "sb.h"
typedef struct _Termcell Termcell; typedef struct _Termcell Termcell;
typedef struct _Termatt Termatt; typedef struct _Termatt Termatt;
@ -163,7 +164,10 @@ struct _Termpty
Backlog_Beacon backlog_beacon; Backlog_Beacon backlog_beacon;
int w, h; int w, h;
int fd, slavefd; int fd, slavefd;
#if defined(ENABLE_FUZZING) || defined(ENABLE_TESTS) #if defined(ENABLE_TESTS)
struct ty_sb write_buffer;
#endif
#if defined(ENABLE_FUZZING)
int fd_dev_null; int fd_dev_null;
#endif #endif
struct { struct {

View File

@ -172,8 +172,12 @@ _tytest_checksum(Termpty *ty)
{ {
MD5Update(&ctx, (unsigned char const*)"(NULL)", 6); MD5Update(&ctx, (unsigned char const*)"(NULL)", 6);
} }
/* Cursor shape */
MD5Update(&ctx, (unsigned char const*)_cursor_shape, MD5Update(&ctx, (unsigned char const*)_cursor_shape,
strlen(_cursor_shape)); strlen(_cursor_shape));
/* Write buffer */
MD5Update(&ctx, (unsigned char const*)ty->write_buffer.buf,
ty->write_buffer.len);
MD5Final(hash, &ctx); MD5Final(hash, &ctx);
@ -205,8 +209,10 @@ _termpty_init(Termpty *ty)
assert(ty->screen2); assert(ty->screen2);
ty->circular_offset = 0; ty->circular_offset = 0;
ty->fd = STDIN_FILENO; ty->fd = STDIN_FILENO;
#if defined(ENABLE_FUZZING)
ty->fd_dev_null = open("/dev/null", O_WRONLY|O_APPEND); ty->fd_dev_null = open("/dev/null", O_WRONLY|O_APPEND);
assert(ty->fd_dev_null >= 0); assert(ty->fd_dev_null >= 0);
#endif
ty->hl.bitmap = calloc(1, HL_LINKS_MAX / 8); /* bit map for 1 << 16 elements */ ty->hl.bitmap = calloc(1, HL_LINKS_MAX / 8); /* bit map for 1 << 16 elements */
assert(ty->hl.bitmap); assert(ty->hl.bitmap);
/* Mark id 0 as set */ /* Mark id 0 as set */
@ -216,7 +222,12 @@ _termpty_init(Termpty *ty)
static void static void
_termpty_shutdown(Termpty *ty) _termpty_shutdown(Termpty *ty)
{ {
#if defined(ENABLE_TESTS)
ty_sb_free(&ty->write_buffer);
#endif
#if defined(ENABLE_FUZZING)
close(ty->fd_dev_null); close(ty->fd_dev_null);
#endif
} }
int int

8
tests/dsr-kbd.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
# fill space with E
printf '\033#8'
#set color
printf '\033[46;31;3m'
printf '\033[?26n'

View File

@ -14,8 +14,9 @@ cursor-shape-5.sh 21332951c006a2d91cf0f227758ff477
cursor-shape-6.sh 21332951c006a2d91cf0f227758ff477 cursor-shape-6.sh 21332951c006a2d91cf0f227758ff477
cursor-shape-7.sh 5d0dadf7273d918cbcd99df95e56795e cursor-shape-7.sh 5d0dadf7273d918cbcd99df95e56795e
tabs.sh 960b74686e23e8e39c3446768b9efc75 tabs.sh 960b74686e23e8e39c3446768b9efc75
xterm-osc-0-title-icon.sh cb5080cc1dbc23b553b62fbdc8cbdf68 xterm-osc-0-title-icon.sh edae688004c15739bcc5a10f51faa6ed
xterm-osc-1-icon.sh 9202db6e81ce810f007035770934fecb xterm-osc-1-icon.sh be549a661504e4dcfb974dcccd7b0bdf
xterm-osc-2-title.sh 49a058f1813bdd64faab1cf1af3ebe09 xterm-osc-2-title.sh e8485fd460aba2a2ae1d4e63a1143b32
dsr-cpr.sh 5a778fd856455475e695e5469e69d227 dsr-cpr.sh a03cfba07a7b76075a4126f452d48ad5
dsr-dir.sh f7dde335d44f8691041d40c3efd24ffb dsr-dir.sh 28b0d8b4b60f3c61d49cee69895a07b2
dsr-kbd.sh 1c474c101697080a85563d9b5bc1505c