END_TEST START_TEST (test_cl_scanmap_callback_mem_allscan) { const char *virname = NULL; unsigned long int scanned = 0; cl_fmap_t *map; int ret; void *mem; unsigned long size; char file[256]; int fd = get_test_file(_i, file, sizeof(file), &size); 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, size); fail_unless(!!map, "cl_fmap_open_mem %s"); cli_dbgmsg("scanning (mem) allscan %s\n", file); ret = cl_scanmap_callback(map, &virname, &scanned, g_engine, CL_SCAN_ALLMATCHES+CL_SCAN_STDOPT, NULL); cli_dbgmsg("scan end (mem) allscan %s\n", file); if (!FALSE_NEGATIVE) { fail_unless_fmt(ret == CL_VIRUS, "cl_scanmap_callback failed for %s: %s", file, cl_strerror(ret)); fail_unless_fmt(virname && !strcmp(virname, "ClamAV-Test-File.UNOFFICIAL"), "virusname: %s for %s", virname, file); } close(fd); cl_fmap_close(map); munmap(mem, size); }
END_TEST START_TEST (test_cl_scanmap_callback_handle_allscan) { const char *virname = NULL; unsigned long int scanned = 0; cl_fmap_t *map; int ret; char file[256]; unsigned long size; 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, size, pread_cb, 1); fail_unless(!!map, "cl_fmap_open_handle %s"); cli_dbgmsg("scanning (handle) allscan %s\n", file); ret = cl_scanmap_callback(map, &virname, &scanned, g_engine, CL_SCAN_ALLMATCHES+CL_SCAN_STDOPT, NULL); cli_dbgmsg("scan end (handle) allscan %s\n", file); if (!FALSE_NEGATIVE) { fail_unless_fmt(ret == CL_VIRUS, "cl_scanmap_callback_allscan failed for %s: %s", file, cl_strerror(ret)); fail_unless_fmt(virname && !strcmp(virname, "ClamAV-Test-File.UNOFFICIAL"), "virusname: %s", virname); } close(fd); }
END_TEST START_TEST (test_cl_scandesc_callback_allscan) { const char *virname = NULL; const char **virpp = &virname; char file[256]; unsigned long size; unsigned long int scanned = 0; int ret; int fd = get_test_file(_i, file, sizeof(file), &size); cli_dbgmsg("scanning (scandesc_cb_allscan) %s\n", file); /* TODO: test callbacks */ ret = cl_scandesc_callback(fd, virpp, &scanned, g_engine, CL_SCAN_ALLMATCHES+CL_SCAN_STDOPT, NULL); cli_dbgmsg("scan end (scandesc_cb_allscan) %s\n", file); if (!FALSE_NEGATIVE) { fail_unless_fmt(ret == CL_VIRUS, "cl_scanfile_allscan failed for %s: %s", file, cl_strerror(ret)); virpp = (const char **)*virpp; /* allscan api hack */ fail_unless_fmt(*virpp && !strcmp(*virpp, "ClamAV-Test-File.UNOFFICIAL"), "virusname: %s", *virpp); free((void *)virpp); } close(fd); }
static gboolean known_fail(const char *test_name) { char *filename = get_test_file (test_name, ".ui.known_fail", TRUE); if (filename) { g_free (filename); return TRUE; } return FALSE; }
static void test_ui_file (GFile *file) { gchar *ui_file, *in_file, *out_file; GString *record; GError *error = NULL; ui_file = g_file_get_path (file); in_file = get_test_file (ui_file, ".in", TRUE); out_file = get_test_file (ui_file, ".out", TRUE); record = g_string_new (""); record_events (ui_file, in_file, record); if (out_file) { char *diff = diff_with_file (out_file, record->str, record->len, &error); g_assert_no_error (error); if (diff && diff[0]) { g_printerr ("Contents don't match expected contents:\n%s", diff); g_test_fail (); g_free (diff); } } else if (record->str[0]) { g_test_message ("Expected a reference file:\n%s", record->str); g_test_fail (); } g_string_free (record, TRUE); g_free (in_file); g_free (out_file); g_free (ui_file); }
static void test_ui_file (GFile *file) { char *ui_file, *reference_file; cairo_surface_t *ui_image, *reference_image, *diff_image; GtkStyleProvider *provider; ui_file = g_file_get_path (file); provider = add_extra_css (ui_file, ".css"); ui_image = reftest_snapshot_ui_file (ui_file); reference_file = get_test_file (ui_file, ".ref.ui", TRUE); if (reference_file) reference_image = reftest_snapshot_ui_file (reference_file); else { reference_image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1); g_test_message ("No reference image."); g_test_fail (); } g_free (reference_file); diff_image = reftest_compare_surfaces (ui_image, reference_image); save_image (ui_image, ui_file, ".out.png"); save_image (reference_image, ui_file, ".ref.png"); if (diff_image) { save_image (diff_image, ui_file, ".diff.png"); if (known_fail(ui_file)) { printf("KNOWN FAILURE - %s\n", ui_file); g_test_message ("KNOWN FAIL: %s", ui_file); } else g_test_fail (); } remove_extra_css (provider); }
END_TEST START_TEST (test_cl_scanfile_allscan) { const char *virname = NULL; char file[256]; unsigned long size; unsigned long int scanned = 0; int ret; int fd = get_test_file(_i, file, sizeof(file), &size); close(fd); cli_dbgmsg("scanning (scanfile_allscan) %s\n", file); ret = cl_scanfile(file, &virname, &scanned, g_engine, CL_SCAN_ALLMATCHES+CL_SCAN_STDOPT); cli_dbgmsg("scan end (scanfile_allscan) %s\n", file); if (!FALSE_NEGATIVE) { fail_unless_fmt(ret == CL_VIRUS, "cl_scanfile_allscan failed for %s: %s", file, cl_strerror(ret)); fail_unless_fmt(virname && !strcmp(virname, "ClamAV-Test-File.UNOFFICIAL"), "virusname: %s", virname); } }
static GtkStyleProvider * add_extra_css (const char *testname, const char *extension) { GtkStyleProvider *provider = NULL; char *css_file; css_file = get_test_file (testname, extension, TRUE); if (css_file == NULL) return NULL; provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ()); gtk_css_provider_load_from_path (GTK_CSS_PROVIDER (provider), css_file, NULL); gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), provider, GTK_STYLE_PROVIDER_PRIORITY_FORCE); g_free (css_file); return provider; }
END_TEST //* int cl_scanfile(const char *filename, const char **virname, unsigned long int *scanned, const struct cl_engine *engine, const struct cl_limits *limits, unsigned int options) */ START_TEST (test_cl_scanfile) { const char *virname = NULL; char file[256]; unsigned long size; unsigned long int scanned = 0; int ret; int fd = get_test_file(_i, file, sizeof(file), &size); close(fd); cli_dbgmsg("scanning (scanfile) %s\n", file); ret = cl_scanfile(file, &virname, &scanned, g_engine, CL_SCAN_STDOPT); cli_dbgmsg("scan end (scanfile) %s\n", file); if (!FALSE_NEGATIVE) { fail_unless_fmt(ret == CL_VIRUS , "cl_scanfile failed for %s: %s", file, cl_strerror(ret)); fail_unless_fmt(virname && !strcmp(virname, "ClamAV-Test-File.UNOFFICIAL"), "virusname: %s", virname); } }