[cairo] [PATCH 2/2] test: Fix several tests to place output files in the output directory

Uli Schlachter psychon at znc.in
Sat Aug 10 11:44:32 PDT 2013


On 17.07.2013 06:38, Bryce W. Harrington wrote:
> The standard location for test output is cairo/test/output.  The harness
> itself was updated to write automatically generated images in this
> directory, however a number of tests generate their own local output
> files.
> 
> This patch updates these tests to write their output into
> cairo/test/output as well, in the interest of decluttering the test
> directory.
> 
> Signed-off-by: Bryce Harrington <b.harrington at samsung.com>
> ---
>  test/create-for-stream.c  |    2 +-
>  test/multi-page.c         |    5 +++--
>  test/pdf-features.c       |    3 ++-
>  test/pdf-mime-data.c      |    9 +++++----
>  test/pdf-surface-source.c |    4 +++-
>  test/png.c                |    3 ++-
>  test/ps-features.c        |    3 ++-
>  test/ps-surface-source.c  |    4 +++-
>  test/svg-clip.c           |    3 ++-
>  test/svg-surface-source.c |    4 +++-
>  test/svg-surface.c        |    3 ++-
>  11 files changed, 28 insertions(+), 15 deletions(-)
> 
> diff --git a/test/create-for-stream.c b/test/create-for-stream.c
> index 3dde378..fdd4e01 100644
> --- a/test/create-for-stream.c
> +++ b/test/create-for-stream.c
> @@ -57,7 +57,7 @@
>  #define WIDTH_IN_POINTS  (WIDTH_IN_INCHES  * 72.0)
>  #define HEIGHT_IN_POINTS (HEIGHT_IN_INCHES * 72.0)
>  
> -#define BASENAME "create-for-stream.out"
> +#define BASENAME "output/create-for-stream.out"

I don't really like this.

First, I think that "output/" should be put into a common header file under
another define and then be used by all tests together, because "output/" is
nothing per-test specific.

Also, I wonder how good the test suite copes with being run with a relative
path. All these path names seem to be interpreted relative to the current
working directory. Thanks to the CAIRO_REF_DIR environment variable, it *might*
be possible to run the test suite from outside of cairo's source directory. In
this case all of these tests will fail because there is no directory called
output/ (which makes me wonder who creates output/ currently...)



Ok, I took a look at the source:

We already have a define CAIRO_TEST_OUTPUT_DIR for "output" which is only used
in three places, all of them using it like
_cairo_test_mkdir(CAIRO_TEST_OUTPUT_DIR). I guess this means that this patch
would need something equivalent.

Uli


>  static cairo_test_status_t
>  draw (cairo_t *cr, int width, int height)
> diff --git a/test/multi-page.c b/test/multi-page.c
> index 0b73902..95741d3 100644
> --- a/test/multi-page.c
> +++ b/test/multi-page.c
> @@ -51,6 +51,7 @@
>  #define HEIGHT_IN_INCHES 3
>  #define WIDTH_IN_POINTS  (WIDTH_IN_INCHES  * 72.0)
>  #define HEIGHT_IN_POINTS (HEIGHT_IN_INCHES * 72.0)
> +#define BASENAME         "output/multi-page.out"
>  
>  static void
>  draw_smiley (cairo_t *cr, double width, double height, double smile_ratio)
> @@ -142,7 +143,7 @@ preamble (cairo_test_context_t *ctx)
>  	if (result == CAIRO_TEST_UNTESTED)
>  	    result = CAIRO_TEST_SUCCESS;
>  
> -	filename = "multi-page.out.ps";
> +	filename = BASENAME ".ps";
>  	surface = cairo_ps_surface_create (filename,
>  					   WIDTH_IN_POINTS, HEIGHT_IN_POINTS);
>  	status = cairo_surface_status (surface);
> @@ -165,7 +166,7 @@ preamble (cairo_test_context_t *ctx)
>  	if (result == CAIRO_TEST_UNTESTED)
>  	    result = CAIRO_TEST_SUCCESS;
>  
> -	filename = "multi-page.out.pdf";
> +	filename = BASENAME ".pdf";
>  	surface = cairo_pdf_surface_create (filename,
>  					    WIDTH_IN_POINTS, HEIGHT_IN_POINTS);
>  	status = cairo_surface_status (surface);
> diff --git a/test/pdf-features.c b/test/pdf-features.c
> index f8850c4..5f167f7 100644
> --- a/test/pdf-features.c
> +++ b/test/pdf-features.c
> @@ -39,6 +39,7 @@
>  #define INCHES_TO_POINTS(in) ((in) * 72.0)
>  #define MM_TO_POINTS(mm) ((mm) / 25.4 * 72.0)
>  #define TEXT_SIZE 12
> +#define BASENAME "output/pdf-features.out"
>  
>  static struct {
>      const char *page_size;
> @@ -84,7 +85,7 @@ static struct {
>  static cairo_test_status_t
>  preamble (cairo_test_context_t *ctx)
>  {
> -    const char *filename = "pdf-features.out.pdf";
> +    const char *filename = BASENAME ".pdf";
>      cairo_surface_t *surface;
>      cairo_t *cr;
>      cairo_status_t status;
> diff --git a/test/pdf-mime-data.c b/test/pdf-mime-data.c
> index 00cde9d..9d7d36f 100644
> --- a/test/pdf-mime-data.c
> +++ b/test/pdf-mime-data.c
> @@ -39,6 +39,7 @@
>   * are not using a jpeg library */
>  #define IMAGE_FILE "romedalen"
>  
> +#define BASENAME "output/pdf-mime-data.out"
>  
>  static cairo_test_status_t
>  read_file (const cairo_test_context_t *ctx,
> @@ -83,7 +84,7 @@ read_file (const cairo_test_context_t *ctx,
>  static cairo_test_status_t
>  preamble (cairo_test_context_t *ctx)
>  {
> -    const char *filename = "pdf-mime-data.out.pdf";
> +    const char *filename = BASENAME ".pdf";
>      cairo_surface_t *image;
>      cairo_surface_t *surface;
>      cairo_t *cr;
> @@ -134,7 +135,7 @@ preamble (cairo_test_context_t *ctx)
>  
>      printf ("pdf-mime-data: Please check %s to ensure it looks/prints correctly.\n", filename);
>  
> -    sprintf (command, "pdfimages -j %s pdf-mime-data.out", filename);
> +    sprintf (command, "pdfimages -j %s %s", filename, BASENAME);
>      exit_status = system (command);
>      if (exit_status) {
>  	cairo_test_log (ctx, "pdfimages failed with exit status %d\n", exit_status);
> @@ -147,12 +148,12 @@ preamble (cairo_test_context_t *ctx)
>  	return test_status;
>      }
>  
> -    test_status = read_file (ctx, "pdf-mime-data.out-000.jpg", &out_data, &out_len);
> +    test_status = read_file (ctx, BASENAME "-000.jpg", &out_data, &out_len);
>      if (test_status) {
>  	free (data);
>  	cairo_test_log (ctx,
>  			"Could not read input jpeg file %s\n",
> -			"pdf-mime-data.out-000.jpg");
> +			BASENAME "-000.jpg");
>  	return test_status;
>      }
>  
> diff --git a/test/pdf-surface-source.c b/test/pdf-surface-source.c
> index 078af3a..13cdd08 100644
> --- a/test/pdf-surface-source.c
> +++ b/test/pdf-surface-source.c
> @@ -28,12 +28,14 @@
>  
>  #include "surface-source.c"
>  
> +#define BASENAME "output/pdf-surface-source.out"
> +
>  static cairo_surface_t *
>  create_source_surface (int size)
>  {
>      cairo_surface_t *surface;
>  
> -    surface = cairo_pdf_surface_create ("pdf-surface-source.out.pdf", size, size);
> +    surface = cairo_pdf_surface_create (BASENAME ".pdf", size, size);
>      cairo_surface_set_fallback_resolution (surface, 72., 72.);
>  
>      return surface;
> diff --git a/test/png.c b/test/png.c
> index 3980ddc..d58c030 100644
> --- a/test/png.c
> +++ b/test/png.c
> @@ -30,6 +30,7 @@
>  /* Test the idempotency of write_png->read_png */
>  
>  #define RGB_MASK 0x00ffffff
> +#define BASENAME "output/png.out"
>  
>  static cairo_bool_t
>  image_surface_equals (cairo_surface_t *A, cairo_surface_t *B)
> @@ -77,7 +78,7 @@ print_surface (const cairo_test_context_t *ctx, cairo_surface_t *surface)
>  static cairo_test_status_t
>  preamble (cairo_test_context_t *ctx)
>  {
> -    const char *filename = "png.out.png";
> +    const char *filename = BASENAME ".png";
>      cairo_surface_t *surface0, *surface1;
>      cairo_status_t status;
>      uint32_t argb32 = 0xdeadbede;
> diff --git a/test/ps-features.c b/test/ps-features.c
> index e3cf9b4..c8545ee 100644
> --- a/test/ps-features.c
> +++ b/test/ps-features.c
> @@ -42,6 +42,7 @@
>  #define INCHES_TO_POINTS(in) ((in) * 72.0)
>  #define MM_TO_POINTS(mm) ((mm) / 25.4 * 72.0)
>  #define TEXT_SIZE 12
> +#define BASENAME "output/ps-features.out"
>  
>  static struct {
>      const char *page_size;
> @@ -100,7 +101,7 @@ preamble (cairo_test_context_t *ctx)
>  	return CAIRO_TEST_UNTESTED;
>      }
>  
> -    filename = "ps-features.out.ps";
> +    filename = BASENAME ".ps";
>  
>      /* We demonstrate that the initial size doesn't matter (we're
>       * passing 0,0), if we use cairo_ps_surface_set_size on the first
> diff --git a/test/ps-surface-source.c b/test/ps-surface-source.c
> index 37f57ee..7c5c5aa 100644
> --- a/test/ps-surface-source.c
> +++ b/test/ps-surface-source.c
> @@ -28,12 +28,14 @@
>  
>  #include "surface-source.c"
>  
> +#define BASENAME "output/ps-surface-source.out"
> +
>  static cairo_surface_t *
>  create_source_surface (int size)
>  {
>      cairo_surface_t *surface;
>  
> -    surface = cairo_ps_surface_create ("ps-surface-source.out.ps", size, size);
> +    surface = cairo_ps_surface_create (BASENAME ".ps", size, size);
>      cairo_surface_set_fallback_resolution (surface, 72., 72.);
>  
>      return surface;
> diff --git a/test/svg-clip.c b/test/svg-clip.c
> index 035b236..d02c69e 100644
> --- a/test/svg-clip.c
> +++ b/test/svg-clip.c
> @@ -32,6 +32,7 @@
>  
>  #define WIDTH_IN_POINTS 600
>  #define HEIGHT_IN_POINTS 600
> +#define BASENAME "output/svg-clip.out"
>  
>  static void
>  test_clip (cairo_t *cr, double width, double height)
> @@ -107,7 +108,7 @@ static cairo_test_status_t
>  preamble (cairo_test_context_t *ctx)
>  {
>      cairo_t *cr;
> -    const char *filename = "svg-clip.out.svg";
> +    const char *filename = BASENAME ".svg";
>      cairo_surface_t *surface;
>  
>      if (! cairo_test_is_target_enabled (ctx, "svg11") &&
> diff --git a/test/svg-surface-source.c b/test/svg-surface-source.c
> index c97d3ca..64b7f86 100644
> --- a/test/svg-surface-source.c
> +++ b/test/svg-surface-source.c
> @@ -28,12 +28,14 @@
>  
>  #include "surface-source.c"
>  
> +#define BASENAME "output/svg-surface-source.out"
> +
>  static cairo_surface_t *
>  create_source_surface (int size)
>  {
>      cairo_surface_t *surface;
>  
> -    surface = cairo_svg_surface_create ("svg-surface-source.out.svg",
> +    surface = cairo_svg_surface_create (BASENAME ".svg",
>  					size, size);
>      cairo_surface_set_fallback_resolution (surface, 72., 72.);
>  
> diff --git a/test/svg-surface.c b/test/svg-surface.c
> index 4e29f1b..59d67ad 100644
> --- a/test/svg-surface.c
> +++ b/test/svg-surface.c
> @@ -37,6 +37,7 @@
>  #define HEIGHT_IN_INCHES 3
>  #define WIDTH_IN_POINTS  (WIDTH_IN_INCHES  * 72)
>  #define HEIGHT_IN_POINTS (HEIGHT_IN_INCHES * 72)
> +#define BASENAME "output/svg-surface.out"
>  
>  static cairo_test_status_t
>  draw (cairo_t *cr, int width, int height)
> @@ -90,7 +91,7 @@ static cairo_test_status_t
>  preamble (cairo_test_context_t *ctx)
>  {
>      cairo_t *cr;
> -    const char *filename = "svg-surface.out.svg";
> +    const char *filename = BASENAME ".svg";
>      cairo_surface_t *surface;
>  
>      if (! cairo_test_is_target_enabled (ctx, "svg11") &&


-- 
- Buck, when, exactly, did you lose your mind?
- Three months ago. I woke up one morning married to a pineapple.
  An ugly pineapple... But I loved her.


More information about the cairo mailing list