summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/.gitignore16
-rw-r--r--tests/bmp/bmp_im2im.c10
-rw-r--r--tests/gd/gd_im2im.c10
-rw-r--r--tests/gd2/gd2_im2im.c10
-rw-r--r--tests/gdimagefile/.gitignore1
-rw-r--r--tests/gdimagefile/gdnametest.c26
-rw-r--r--tests/gdimagefill/bug00002_1.c13
-rw-r--r--tests/gdimagestringft/gdimagestringft_bbox.c6
-rw-r--r--tests/gdtest/gdtest.c114
-rw-r--r--tests/gdtest/gdtest.h15
-rw-r--r--tests/gif/bug00006.c17
-rw-r--r--tests/gif/bug00181.c24
-rw-r--r--tests/gif/bug00227.c6
-rw-r--r--tests/gif/gif_im2im.c10
-rw-r--r--tests/jpeg/jpeg_im2im.c10
-rw-r--r--tests/png/png_im2im.c10
-rw-r--r--tests/tiff/tiff_dpi.c10
-rw-r--r--tests/tiff/tiff_im2im.c10
-rw-r--r--tests/wbmp/wbmp_im2im.c10
-rw-r--r--tests/webp/bug00111.c6
-rwxr-xr-xtravis/main.sh40
21 files changed, 224 insertions, 150 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
index 7e1230c..9422fc4 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,20 +1,4 @@
*.log
*.trs
-# We don't keep any media files in the top dir ... just generated outputs.
-/*.bmp
-/*.gd
-/*.gd2
-/*.gif
-/*.jpeg
-/*.jpg
-/*.png
-/*.tga
-/*.tiff
-/*.ttf
-/*.wbmp
-/*.webp
-/*.xbm
-/*.xpm
-
/test_config.h
diff --git a/tests/bmp/bmp_im2im.c b/tests/bmp/bmp_im2im.c
index 2beb2db..00e2123 100644
--- a/tests/bmp/bmp_im2im.c
+++ b/tests/bmp/bmp_im2im.c
@@ -23,13 +23,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_BMP(name) do { \
- FILE *fp; \
- \
- fp = fopen("bmp_im2im_" #name ".bmp", "wb"); \
- if (fp) { \
- gdImageBmp(name, fp, 1); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageBmp(name, fp, 1); \
+ fclose(fp); \
} while (0)
OUTPUT_BMP(src);
diff --git a/tests/gd/gd_im2im.c b/tests/gd/gd_im2im.c
index a7a2226..990605d 100644
--- a/tests/gd/gd_im2im.c
+++ b/tests/gd/gd_im2im.c
@@ -23,13 +23,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_GD(x) do { \
- FILE *fp; \
- \
- fp = fopen("gd_im2im_" #x ".gd", "wb"); \
- if (fp) { \
- gdImageGd(x, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageGd(x, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_GD(src);
diff --git a/tests/gd2/gd2_im2im.c b/tests/gd2/gd2_im2im.c
index 7745fa5..72e99da 100644
--- a/tests/gd2/gd2_im2im.c
+++ b/tests/gd2/gd2_im2im.c
@@ -23,13 +23,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_GD2(x) do { \
- FILE *fp; \
- \
- fp = fopen("gd2_im2im_" #x ".gd2", "wb"); \
- if (fp) { \
- gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageGd2(x, fp, (GD2_CHUNKSIZE_MIN+GD2_CHUNKSIZE_MAX)/2, GD2_FMT_COMPRESSED); \
+ fclose(fp); \
} while (0)
OUTPUT_GD2(src);
diff --git a/tests/gdimagefile/.gitignore b/tests/gdimagefile/.gitignore
index b0f021b..9c76ed4 100644
--- a/tests/gdimagefile/.gitignore
+++ b/tests/gdimagefile/.gitignore
@@ -1,2 +1 @@
/gdnametest
-/img.png
diff --git a/tests/gdimagefile/gdnametest.c b/tests/gdimagefile/gdnametest.c
index f2bb8a6..2be648e 100644
--- a/tests/gdimagefile/gdnametest.c
+++ b/tests/gdimagefile/gdnametest.c
@@ -84,7 +84,7 @@ do_test() {
for (n = 0; names[n].nm; n++) {
gdImagePtr orig, copy;
int status;
- char full_filename[255];
+ char *full_filename;
/* Some image readers are buggy and crash the program so we
* skip them. Bug fixers should remove these from the list of
@@ -104,24 +104,19 @@ do_test() {
orig = mkcross();
-
- #ifdef GDTEST_TOP_DIR
-
- snprintf(full_filename, sizeof(full_filename), GDTEST_TOP_DIR"/gdimagefile/%s",
- names[n].nm);
-
- #else
- /* Prepend the test directory; this is expected to be run in
- * the parent dir. */
- snprintf(full_filename, sizeof(full_filename), "gdimagefile/%s",
- names[n].nm);
- #endif
-
-
/* Write the image unless writing is not supported. */
if (!names[n].readonly) {
+ /* Prepend the test directory; this is expected to be run in
+ * the parent dir. */
+ full_filename = gdTestTempFile(names[n].nm);
status = gdImageFile(orig, full_filename);
gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename);
+ } else {
+ /* Prepend the test directory; this is expected to be run in
+ * the parent dir. */
+ full_filename = malloc(strlen(GDTEST_TOP_DIR) + strlen("/gdimagefile/") + strlen(names[n].nm) + 1);
+ gdTestAssert(full_filename != NULL);
+ sprintf(full_filename, GDTEST_TOP_DIR"/gdimagefile/%s", names[n].nm);
}/* if */
copy = gdImageCreateFromFile(full_filename);
@@ -138,6 +133,7 @@ do_test() {
gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename);
}/* if */
+ free(full_filename);
gdImageDestroy(orig);
gdImageDestroy(copy);
}/* for */
diff --git a/tests/gdimagefill/bug00002_1.c b/tests/gdimagefill/bug00002_1.c
index 2a440f2..060a22a 100644
--- a/tests/gdimagefill/bug00002_1.c
+++ b/tests/gdimagefill/bug00002_1.c
@@ -2,12 +2,11 @@
#include <stdio.h>
#include "gdtest.h"
-#define TMP_FN "bug00002_1.png"
-
int main()
{
gdImagePtr im;
FILE *fp;
+ char *file;
char path[1024];
im = gdImageCreateTrueColor(100, 100);
@@ -20,9 +19,10 @@ int main()
gdImageFill(im, 0, 0, 0xffffff);
gdImageFill(im, 0, 0, 0xffffff);
- fp = fopen(TMP_FN, "wb");
+ file = gdTestTempFile("bug00002_1.png");
+ fp = fopen(file, "wb");
if (fp == NULL) {
- gdTestErrorMsg("Cannot create image from <%s>\n", TMP_FN);
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
gdImageDestroy(im);
return 1;
}
@@ -38,11 +38,6 @@ int main()
gdImageDestroy(im);
- if (remove(TMP_FN) == -1) {
- gdTestErrorMsg("Cannot remove temporary file: <%s>\n", TMP_FN);
- return 1;
- }
-
return 0;
}
diff --git a/tests/gdimagestringft/gdimagestringft_bbox.c b/tests/gdimagestringft/gdimagestringft_bbox.c
index 01fd73a..47037cc 100644
--- a/tests/gdimagestringft/gdimagestringft_bbox.c
+++ b/tests/gdimagestringft/gdimagestringft_bbox.c
@@ -68,11 +68,7 @@ int main()
y = (int)(cos_t * y - sin_t * x);
x = temp;
}
- fp = fopen("gdimagestringft_bbox.png", "wb");
- if (!fp) {
- error = 1;
- goto done;
- }
+ fp = gdTestTempFp();
gdImagePng(im, fp);
fclose(fp);
done:
diff --git a/tests/gdtest/gdtest.c b/tests/gdtest/gdtest.c
index 64ca42f..d31b002 100644
--- a/tests/gdtest/gdtest.c
+++ b/tests/gdtest/gdtest.c
@@ -1,3 +1,4 @@
+#include <config.h>
#include <assert.h>
#include <setjmp.h>
#include <stdlib.h>
@@ -5,6 +6,20 @@
#include <string.h>
#include <math.h>
#include <limits.h>
+
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
#include "gd.h"
#include "gdtest.h"
@@ -38,6 +53,105 @@ gdImagePtr gdTestImageFromPng(const char *filename)
return image;
}
+static char *tmpdir_base;
+
+/* This is kind of hacky, but it's meant to be simple. */
+static void _clean_dir(const char *dir)
+{
+ DIR *d;
+ struct dirent *de;
+
+ d = opendir(dir);
+ if (d == NULL)
+ return;
+
+ if (chdir(dir) != 0)
+ goto done;
+
+ while ((de = readdir(d)) != NULL) {
+ struct stat st;
+
+ if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0)
+ continue;
+
+ if (lstat(de->d_name, &st) != 0)
+ continue;
+
+ if (S_ISDIR(st.st_mode))
+ _clean_dir(de->d_name);
+ else
+ unlink(de->d_name);
+ }
+
+ if (chdir("..")) {
+ /* Ignore. */;
+ }
+
+ done:
+ closedir(d);
+ rmdir(dir);
+}
+
+static void tmpdir_cleanup(void)
+{
+ _clean_dir(tmpdir_base);
+ free(tmpdir_base);
+}
+
+const char *gdTestTempDir(void)
+{
+ if (tmpdir_base == NULL) {
+ char *tmpdir, *tmpdir_root;
+
+ tmpdir_root = getenv("TMPDIR");
+ if (tmpdir_root == NULL)
+ tmpdir_root = "/tmp";
+
+ /* The constant here is a lazy over-estimate. */
+ tmpdir = malloc(strlen(tmpdir_root) + 30);
+ gdTestAssert(tmpdir != NULL);
+
+ sprintf(tmpdir, "%s/gdtest.XXXXXX", tmpdir_root);
+
+ tmpdir_base = mkdtemp(tmpdir);
+ gdTestAssert(tmpdir_base != NULL);
+
+ atexit(tmpdir_cleanup);
+ }
+
+ return tmpdir_base;
+}
+
+char *gdTestTempFile(const char *template)
+{
+ const char *tempdir = gdTestTempDir();
+ char *ret;
+
+ if (template == NULL)
+ template = "gdtemp.XXXXXX";
+
+ ret = malloc(strlen(tempdir) + 10 + strlen(template));
+ gdTestAssert(ret != NULL);
+ sprintf(ret, "%s/%s", tempdir, template);
+
+ if (strstr(template, "XXXXXX") != NULL) {
+ int fd = mkstemp(ret);
+ gdTestAssert(fd != -1);
+ close(fd);
+ }
+
+ return ret;
+}
+
+FILE *gdTestTempFp(void)
+{
+ char *file = gdTestTempFile(NULL);
+ FILE *fp = fopen(file, "wb");
+ gdTestAssert(fp != NULL);
+ free(file);
+ return fp;
+}
+
/* Compare two buffers, returning the number of pixels that are
* different and the maximum difference of any single color channel in
* result_ret.
diff --git a/tests/gdtest/gdtest.h b/tests/gdtest/gdtest.h
index 8f332b3..0d40d98 100644
--- a/tests/gdtest/gdtest.h
+++ b/tests/gdtest/gdtest.h
@@ -15,6 +15,21 @@ struct CuTestImageResult {
/* Internal versions of assert functions -- use the public versions */
gdImagePtr gdTestImageFromPng(const char *filename);
+/* Return a path to a writable temp dir. The common test code will make sure
+ * it's cleaned up when the test exits. Feel free to write whatever in here.
+ */
+const char *gdTestTempDir(void);
+
+/* Return a path to a writable file inside of the tempdir (see above).
+ * You should free the pointer when you're done.
+ * If |template| is NULL, you'll get a random file name, otherwise you'll get
+ * that under the tempdir.
+ */
+char *gdTestTempFile(const char *template);
+
+/* Return an open file handle to a temp file. */
+FILE *gdTestTempFp(void);
+
void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
gdImagePtr buf_diff, CuTestImageResult *result_ret);
diff --git a/tests/gif/bug00006.c b/tests/gif/bug00006.c
index 57d7ad0..f1a7fe8 100644
--- a/tests/gif/bug00006.c
+++ b/tests/gif/bug00006.c
@@ -2,12 +2,11 @@
#include "gd.h"
#include "gdtest.h"
-#define TMP_FN "_tmp_bug0006.gif"
-
int main()
{
gdImagePtr im;
FILE *fp;
+ char *file;
const int r = 255, g = 0, b = 0;
int r_f,g_f,b_f, trans_c_f;
int trans_c = gdTrueColorAlpha(r,g,b,0);
@@ -22,9 +21,10 @@ int main()
gdImageColorTransparent(im, trans_c);
gdImageFilledRectangle(im, 0,0, 192,36, trans_c);
- fp = fopen(TMP_FN, "wb");
+ file = gdTestTempFile("bug0006.gif");
+ fp = fopen(file, "wb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for writing\n", TMP_FN);
+ gdTestErrorMsg("Cannot open <%s> for writing\n", file);
return 1;
}
gdImageGif(im,fp);
@@ -32,16 +32,16 @@ int main()
gdImageDestroy(im);
- fp = fopen(TMP_FN, "rb");
+ fp = fopen(file, "rb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for reading\n", TMP_FN);
+ gdTestErrorMsg("Cannot open <%s> for reading\n", file);
return 1;
}
im = gdImageCreateFromGif(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("Cannot create image from <%s>\n", TMP_FN);
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
return 1;
}
@@ -60,8 +60,5 @@ int main()
/* Destroy it */
gdImageDestroy(im);
- if (remove(TMP_FN) == -1) {
- gdTestErrorMsg("Cannot remove file: <%s>\n", TMP_FN);
- }
return error;
}
diff --git a/tests/gif/bug00181.c b/tests/gif/bug00181.c
index 27d6481..43b9e3b 100644
--- a/tests/gif/bug00181.c
+++ b/tests/gif/bug00181.c
@@ -5,6 +5,7 @@
int main()
{
gdImagePtr im, im2, im3;
+ char *file;
FILE *fp;
int black, trans;
int error = 0;
@@ -16,28 +17,30 @@ int main()
return 1;
}
im->interlace = 1;
- fp = fopen("bug00181.gif", "wb");
+ file = gdTestTempFile("bug00181.gif");
+ fp = fopen(file, "wb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for writing.\n", "bug00181.gif");
+ gdTestErrorMsg("Cannot open <%s> for writing.\n", file);
return 1;
}
gdImageGif(im, fp);
gdImageDestroy(im);
fclose(fp);
- fp = fopen("bug00181.gif", "rb");
+ fp = fopen(file, "rb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for reading.\n", "bug00181.gif");
+ gdTestErrorMsg("Cannot open <%s> for reading.\n", file);
return 1;
}
im = gdImageCreateFromGif(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("Cannot create image from <%s>\n", "bug00181.gif");
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
return 1;
}
error = !im->interlace;
gdImageDestroy(im);
+ free(file);
if (error) return error;
@@ -48,9 +51,10 @@ int main()
black = gdImageColorAllocate(im, 0, 0, 0);
trans = gdImageColorAllocate(im, 1, 1, 1);
gdImageRectangle(im, 0, 0, 10, 10, black);
- fp = fopen("bug00181a.gif", "wb");
+ file = gdTestTempFile("bug00181a.gif");
+ fp = fopen(file, "wb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for writing.\n", "bug00181a.gif");
+ gdTestErrorMsg("Cannot open <%s> for writing.\n", file);
return 1;
}
gdImageGifAnimBegin(im, fp, 1, 3);
@@ -75,15 +79,15 @@ int main()
gdImageDestroy(im2);
gdImageDestroy(im3);
- fp = fopen("bug00181a.gif", "rb");
+ fp = fopen(file, "rb");
if (!fp) {
- gdTestErrorMsg("Cannot open <%s> for reading.\n", "bug00181a.gif");
+ gdTestErrorMsg("Cannot open <%s> for reading.\n", file);
return 1;
}
im = gdImageCreateFromGif(fp);
fclose(fp);
if (!im) {
- gdTestErrorMsg("Cannot create image from <%s>\n", "bug00181a.gif");
+ gdTestErrorMsg("Cannot create image from <%s>\n", file);
return 1;
}
error = !im->interlace;
diff --git a/tests/gif/bug00227.c b/tests/gif/bug00227.c
index 861006e..e25bd9a 100644
--- a/tests/gif/bug00227.c
+++ b/tests/gif/bug00227.c
@@ -11,6 +11,7 @@
int main()
{
FILE *fp;
+ char *file;
gdImagePtr im0, im1, im2;
int i;
char *buf;
@@ -23,7 +24,8 @@ int main()
gdImageSetPixel(im0, i, 0, c);
}
- fp = fopen("bug00227.gif", "wb");
+ file = gdTestTempFile("bug00227.gif");
+ fp = fopen(file, "wb");
if (!fp) return 1;
gdImageGifAnimBegin(im0, fp, 0, 0);
@@ -55,7 +57,7 @@ int main()
gdImageDestroy(im2);
/* check the Global Color Table flag */
- fp = fopen("bug00227.gif", "rb");
+ fp = fopen(file, "rb");
if (!fp) return 1;
buf = malloc(PROBE_SIZE);
if (!buf) return 1;
diff --git a/tests/gif/gif_im2im.c b/tests/gif/gif_im2im.c
index a5b0adb..b66dddf 100644
--- a/tests/gif/gif_im2im.c
+++ b/tests/gif/gif_im2im.c
@@ -23,13 +23,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_GIF(name) do { \
- FILE *fp; \
- \
- fp = fopen("gif_im2im_" #name ".gif", "wb"); \
- if (fp) { \
- gdImageGif(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageGif(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_GIF(src);
diff --git a/tests/jpeg/jpeg_im2im.c b/tests/jpeg/jpeg_im2im.c
index 89a72be..b361f4d 100644
--- a/tests/jpeg/jpeg_im2im.c
+++ b/tests/jpeg/jpeg_im2im.c
@@ -25,13 +25,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_JPEG(name) do { \
- FILE *fp; \
- \
- fp = fopen("jpeg_im2im_" #name ".jpeg", "wb"); \
- if (fp) { \
- gdImageJpeg(name, fp, 100); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageJpeg(name, fp, 100); \
+ fclose(fp); \
} while (0)
OUTPUT_JPEG(src);
diff --git a/tests/png/png_im2im.c b/tests/png/png_im2im.c
index bac5e13..df6037d 100644
--- a/tests/png/png_im2im.c
+++ b/tests/png/png_im2im.c
@@ -23,13 +23,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_PNG(name) do { \
- FILE *fp; \
- \
- fp = fopen("png_im2im_" #name ".png", "wb"); \
- if (fp) { \
- gdImagePng(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImagePng(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_PNG(src);
diff --git a/tests/tiff/tiff_dpi.c b/tests/tiff/tiff_dpi.c
index 3d4a21a..cdffe6d 100644
--- a/tests/tiff/tiff_dpi.c
+++ b/tests/tiff/tiff_dpi.c
@@ -31,13 +31,9 @@ int main()
src->res_y = res_y;
#define OUTPUT_TIFF(name) do { \
- FILE *fp; \
- \
- fp = fopen("tiff_dpi_" #name ".tiff", "wb"); \
- if (fp) { \
- gdImageTiff(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageTiff(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_TIFF(src);
diff --git a/tests/tiff/tiff_im2im.c b/tests/tiff/tiff_im2im.c
index 4b6136d..2fc113d 100644
--- a/tests/tiff/tiff_im2im.c
+++ b/tests/tiff/tiff_im2im.c
@@ -25,13 +25,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_TIFF(name) do { \
- FILE *fp; \
- \
- fp = fopen("tiff_im2im_" #name ".tiff", "wb"); \
- if (fp) { \
- gdImageTiff(name, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageTiff(name, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_TIFF(src);
diff --git a/tests/wbmp/wbmp_im2im.c b/tests/wbmp/wbmp_im2im.c
index 826c7fa..597f602 100644
--- a/tests/wbmp/wbmp_im2im.c
+++ b/tests/wbmp/wbmp_im2im.c
@@ -21,13 +21,9 @@ int main()
gdImageEllipse(src, 70, 25, 30, 20, b);
#define OUTPUT_WBMP(name) do { \
- FILE *fp; \
- \
- fp = fopen("wbmp_im2im_" #name ".wbmp", "wb"); \
- if (fp) { \
- gdImageWBMP(name, 1, fp); \
- fclose(fp); \
- } \
+ FILE *fp = gdTestTempFp(); \
+ gdImageWBMP(name, 1, fp); \
+ fclose(fp); \
} while (0)
OUTPUT_WBMP(src);
diff --git a/tests/webp/bug00111.c b/tests/webp/bug00111.c
index 0dc2c8d..42aa428 100644
--- a/tests/webp/bug00111.c
+++ b/tests/webp/bug00111.c
@@ -8,7 +8,6 @@
int main()
{
gdImagePtr im;
- char path[2048];
FILE *fp;
im = gdImageCreateTrueColor(20, 20);
@@ -16,13 +15,10 @@ int main()
return 0;
}
- sprintf(path, "%s/webp/tmpbug00111.webp", GDTEST_TOP_DIR);
-
- fp = fopen(path, "wb");
+ fp = gdTestTempFp();
gdImageWebp(im, fp);
fclose(fp);
- unlink(path);
gdImageDestroy(im);
return 0;
}
diff --git a/travis/main.sh b/travis/main.sh
index 769d901..6e6b6d2 100755
--- a/travis/main.sh
+++ b/travis/main.sh
@@ -26,7 +26,7 @@ build_autotools() {
m check VERBOSE=1
# TODO: Re-enable this once out-of-tree tests work.
- #m distcheck
+ m distcheck VERBOSE=1
m install DESTDIR=$PWD/install-autotools
# Clean things up for cmake.
@@ -34,19 +34,31 @@ build_autotools() {
}
build_cmake() {
- v cmake \
- -DBUILD_TEST=1 \
- -DCMAKE_INSTALL_PREFIX=/usr/local \
- -DCMAKE_INSTALL_LIBDIR=/usr/local/lib \
- -DENABLE_FONTCONFIG=1 \
- -DENABLE_FREETYPE=1 \
- -DENABLE_JPEG=1 \
- -DENABLE_PNG=1 \
- -DENABLE_TIFF=1 \
- -DENABLE_WEBP=1 \
- -DENABLE_XPM=1 \
- -DENABLE_ZLIB=1 \
- .
+ local args=(
+ -DBUILD_TEST=1
+ -DCMAKE_INSTALL_PREFIX=/usr/local
+ -DCMAKE_INSTALL_LIBDIR=/usr/local/lib
+ -DENABLE_FONTCONFIG=1
+ -DENABLE_FREETYPE=1
+ -DENABLE_JPEG=1
+ -DENABLE_PNG=1
+ -DENABLE_TIFF=1
+ -DENABLE_WEBP=1
+ -DENABLE_XPM=1
+ -DENABLE_ZLIB=1
+ )
+
+ # First try building out of tree.
+ mkdir build
+ cd build
+ v cmake "${args[@]}" ..
+ m
+ v ctest -j${ncpus}
+ cd ..
+ rm -rf build
+
+ # Then build in-tree.
+ v cmake "${args[@]}" .
m
v ctest -j${ncpus}
m install DESTDIR=$PWD/install-cmake