forked from AuroraMiddleware/gtk
reftests: Add a way to compare different runs
gtk-reftest already had an --output=DIR option to tell it where to save all the resulting images. Now you can combine this with the --compare-with=DIR option in a second run to make gtk-reftest compare the .out.png files from the first run with the .out.png files of the current run, instead of producing .ref.png files. The intended use for this is to verify that changes do not affect the generated output.
This commit is contained in:
parent
db8e6aa497
commit
40bb2a1616
@ -39,6 +39,7 @@ typedef enum {
|
|||||||
static char *arg_output_dir = NULL;
|
static char *arg_output_dir = NULL;
|
||||||
static char *arg_base_dir = NULL;
|
static char *arg_base_dir = NULL;
|
||||||
static char *arg_direction = NULL;
|
static char *arg_direction = NULL;
|
||||||
|
static char *arg_compare_dir = NULL;
|
||||||
|
|
||||||
static const GOptionEntry test_args[] = {
|
static const GOptionEntry test_args[] = {
|
||||||
{ "output", 'o', 0, G_OPTION_ARG_FILENAME, &arg_output_dir,
|
{ "output", 'o', 0, G_OPTION_ARG_FILENAME, &arg_output_dir,
|
||||||
@ -47,6 +48,8 @@ static const GOptionEntry test_args[] = {
|
|||||||
"Directory to run tests from", "DIR" },
|
"Directory to run tests from", "DIR" },
|
||||||
{ "direction", 0, 0, G_OPTION_ARG_STRING, &arg_direction,
|
{ "direction", 0, 0, G_OPTION_ARG_STRING, &arg_direction,
|
||||||
"Set text direction", "ltr|rtl" },
|
"Set text direction", "ltr|rtl" },
|
||||||
|
{ "compare-with", 0, 0, G_OPTION_ARG_FILENAME, &arg_compare_dir,
|
||||||
|
"Directory to compare with", "DIR" },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -175,6 +178,28 @@ get_test_file (const char *test_file,
|
|||||||
return g_string_free (file, FALSE);
|
return g_string_free (file, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
get_reference_image (const char *ui_file)
|
||||||
|
{
|
||||||
|
char *base;
|
||||||
|
char *reference_image;
|
||||||
|
|
||||||
|
if (!arg_compare_dir)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
get_components_of_test_file (ui_file, NULL, &base);
|
||||||
|
reference_image = g_strconcat (arg_compare_dir, G_DIR_SEPARATOR_S, base, ".out.png", NULL);
|
||||||
|
g_free (base);
|
||||||
|
|
||||||
|
if (!g_file_test (reference_image, G_FILE_TEST_EXISTS))
|
||||||
|
{
|
||||||
|
g_free (reference_image);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return reference_image;
|
||||||
|
}
|
||||||
|
|
||||||
static GtkStyleProvider *
|
static GtkStyleProvider *
|
||||||
add_extra_css (const char *testname,
|
add_extra_css (const char *testname,
|
||||||
const char *extension)
|
const char *extension)
|
||||||
@ -235,8 +260,9 @@ test_ui_file (GFile *file)
|
|||||||
|
|
||||||
ui_image = reftest_snapshot_ui_file (ui_file);
|
ui_image = reftest_snapshot_ui_file (ui_file);
|
||||||
|
|
||||||
reference_file = get_test_file (ui_file, ".ref.ui", TRUE);
|
if ((reference_file = get_reference_image (ui_file)) != NULL)
|
||||||
if (reference_file)
|
reference_image = cairo_image_surface_create_from_png (reference_file);
|
||||||
|
else if ((reference_file = get_test_file (ui_file, ".ref.ui", TRUE)) != NULL)
|
||||||
reference_image = reftest_snapshot_ui_file (reference_file);
|
reference_image = reftest_snapshot_ui_file (reference_file);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user