[test] Use an in-repo font for test-multithread (#1218)

As Khaled's suggestion, hard-coded font paths was only for my own testing.
This commit is contained in:
Ebrahim Byagowi 2018-10-03 21:26:58 +03:30 committed by GitHub
parent fde9b8852d
commit 4146c00caa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 19 deletions

View File

@ -51,13 +51,18 @@ static inline hb_face_t *
hb_subset_test_open_font (const char *font_path)
{
#if GLIB_CHECK_VERSION(2,37,2)
char* path = g_test_build_filename (G_TEST_DIST, font_path, NULL);
char *path = g_test_build_filename (G_TEST_DIST, font_path, NULL);
#else
char* path = g_strdup (font_path);
char *path = g_strdup (font_path);
#endif
hb_blob_t* blob = hb_blob_create_from_file (path);
hb_face_t* face = hb_face_create (blob, 0);
hb_blob_t *blob = hb_blob_create_from_file (path);
if (hb_blob_get_length (blob) == 0)
{
printf ("The test font is not found.");
exit (1);
}
hb_face_t *face = hb_face_create (blob, 0);
hb_blob_destroy (blob);
g_free (path);

View File

@ -32,18 +32,10 @@
#include <hb.h>
#include <hb-ft.h>
#include <hb-ot.h>
#include <glib.h>
static const char *text = "طرح‌نَما";
static const char *path =
#if defined(__linux__)
"/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
#elif defined(__FreeBSD__)
"/usr/local/share/fonts/dejavu/DejaVuSans.ttf";
#elif defined(_WIN32) || defined(_WIN64)
"C:\\Windows\\Fonts\\tahoma.ttf";
#elif __APPLE__
"/Library/Fonts/Tahoma.ttf";
#endif
static char *font_path = "fonts/Inconsolata-Regular.abc.ttf";
static char *text = "abc";
static int num_threads = 30;
static int num_iters = 200;
@ -56,7 +48,7 @@ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static void
fill_the_buffer (hb_buffer_t *buffer)
{
hb_buffer_add_utf8 (buffer, text, sizeof (text), 0, sizeof (text));
hb_buffer_add_utf8 (buffer, text, -1, 0, -1);
hb_buffer_guess_segment_properties (buffer);
hb_shape (font, buffer, NULL, 0);
}
@ -135,16 +127,33 @@ test_body (void)
int
main (int argc, char **argv)
{
if (argc > 1)
num_threads = atoi (argv[1]);
g_test_init (&argc, &argv, NULL);
#if GLIB_CHECK_VERSION(2,37,2)
gchar *default_path = g_test_build_filename (G_TEST_DIST, font_path, NULL);
#else
gchar *default_path = g_strdup (font_path);
#endif
char *path = argc > 1 ? argv[1] : (char *) default_path;
if (argc > 2)
num_iters = atoi (argv[2]);
num_threads = atoi (argv[2]);
if (argc > 3)
num_iters = atoi (argv[3]);
if (argc > 4)
text = argv[4];
// Dummy call to alleviate _guess_segment_properties thread safety-ness
// https://github.com/harfbuzz/harfbuzz/issues/1191
hb_language_get_default ();
hb_blob_t *blob = hb_blob_create_from_file (path);
if (hb_blob_get_length (blob) == 0)
{
printf ("The test font is not found.");
return 1;
}
hb_face_t *face = hb_face_create (blob, 0);
font = hb_font_create (face);
@ -167,5 +176,7 @@ main (int argc, char **argv)
hb_face_destroy (face);
hb_blob_destroy (blob);
g_free (default_path);
return 0;
}

View File

@ -1,12 +1,18 @@
#include "hb-fuzzer.hh"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, char **argv) {
hb_blob_t *blob = hb_blob_create_from_file (argv[1]);
unsigned int len;
const char *font_data = hb_blob_get_data (blob, &len);
if (len == 0)
{
printf ("The test font is not found.");
exit (1);
}
for (int i = 1; i < argc; i++) {
printf ("%s\n", argv[i]);