factor out common code

remotes/push_mirror/fmapify
Török Edvin 15 years ago
parent 81e5772859
commit 592e246c3f
  1. 47
      unit_tests/check_clamav.c

@ -241,6 +241,21 @@ static void engine_teardown(void)
cl_engine_free(g_engine);
}
static int get_test_file(int i, char *file, unsigned fsize, unsigned long *size)
{
int fd;
struct stat st;
fail_unless(i < testfiles_n);
snprintf(file, fsize, OBJDIR"/../test/%s", testfiles[i]);
fd = open(file, O_RDONLY);
fail_unless(fd > 0, "open");
fail_unless(fstat(fd, &st) == 0, "fstat");
*size = st.st_size;
return fd;
}
static ssize_t pread_cb(void *handle, void *buf, size_t count, off_t offset)
{
return pread(*((int*)handle), buf, count, offset);
@ -248,22 +263,16 @@ static ssize_t pread_cb(void *handle, void *buf, size_t count, off_t offset)
START_TEST (test_cl_scanmap_callback_handle)
{
int fd;
char file[256];
struct stat st;
const char *virname = NULL;
unsigned long int scanned = 0;
cl_fmap_t *map;
int ret;
char file[256];
unsigned long size;
fail_unless(_i < testfiles_n);
snprintf(file, sizeof(file), OBJDIR"/../test/%s", testfiles[_i]);
fd = open(file, O_RDONLY);
fail_unless(fd > 0, "open");
fail_unless(fstat(fd, &st) == 0, "fstat");
int fd = get_test_file(_i, file, sizeof(file), &size);
/* intentionally use different way than scanners.c for testing */
map = cl_fmap_open_handle(&fd, 0, st.st_size, pread_cb, 1);
map = cl_fmap_open_handle(&fd, 0, size, pread_cb, 1);
fail_unless(!!map, "cl_fmap_open_handle");
cli_dbgmsg("scanning (handle) %s\n", file);
@ -278,27 +287,21 @@ END_TEST
START_TEST (test_cl_scanmap_callback_mem)
{
int fd;
char file[256];
struct stat st;
const char *virname = NULL;
unsigned long int scanned = 0;
cl_fmap_t *map;
int ret;
void *mem;
unsigned long size;
char file[256];
fail_unless(_i < testfiles_n);
snprintf(file, sizeof(file), OBJDIR"/../test/%s", testfiles[_i]);
fd = open(file, O_RDONLY);
fail_unless(fd > 0, "open");
fail_unless(fstat(fd, &st) == 0, "fstat");
int fd = get_test_file(_i, file, sizeof(file), &size);
mem = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
mem = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
fail_unless(mem != MAP_FAILED, "mmap");
/* intentionally use different way than scanners.c for testing */
map = cl_fmap_open_memory(mem, st.st_size);
map = cl_fmap_open_memory(mem, size);
fail_unless(!!map, "cl_fmap_open_mem");
cli_dbgmsg("scanning (mem) %s\n", file);
@ -308,7 +311,7 @@ START_TEST (test_cl_scanmap_callback_mem)
fail_unless_fmt(virname && !strcmp(virname, "ClamAV-Test-File.UNOFFICIAL"), "virusname: %s for %s", virname, file);
close(fd);
munmap(mem, st.st_size);
munmap(mem, size);
}
END_TEST

Loading…
Cancel
Save