diff options
Diffstat (limited to 'Build/source/libs/gd/libgd-src/tests')
101 files changed, 674 insertions, 128 deletions
diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt index a42629b8bcf..8f2a88f9753 100644 --- a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt @@ -1,8 +1,13 @@ -SET(TESTS_FILES - bmp_im2im +LIST(APPEND TESTS_FILES bmp_null bug00275 +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + bmp_im2im bug00276 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am index 27dc7ecd00a..f3f1660e9ce 100644 --- a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am @@ -1,11 +1,11 @@ libgd_test_programs += \ bmp/bmp_null \ - bmp/bug00275 \ - bmp/bug00276 + bmp/bug00275 if HAVE_LIBPNG libgd_test_programs += \ - bmp/bmp_im2im + bmp/bmp_im2im \ + bmp/bug00276 endif EXTRA_DIST += \ diff --git a/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt index 159130dffb2..f78c4cf11f3 100644 --- a/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt @@ -1,7 +1,9 @@ -IF(FREETYPE_FOUND AND FONTCONFIG_FOUND) +if(FONTCONFIG_FOUND) +IF(FREETYPE_FOUND) LIST(APPEND TESTS_FILES basic ) -ENDIF(FREETYPE_FOUND AND FONTCONFIG_FOUND) +ENDIF(FREETYPE_FOUND) +ENDIF(FONTCONFIG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt index 728c226c661..9a1e0181a76 100644 --- a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt @@ -1,7 +1,9 @@ IF(FREETYPE_FOUND) -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00132 ) +ENDIF(PNG_FOUND) ENDIF(FREETYPE_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am index d2524931193..312759a176f 100644 --- a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am @@ -1,7 +1,9 @@ if HAVE_LIBFREETYPE +if HAVE_LIBPNG libgd_test_programs += \ freetype/bug00132 endif +endif EXTRA_DIST += \ freetype/CMakeLists.txt \ diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c index 713dd2d023f..42ed5b17dc6 100644 --- a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c +++ b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c @@ -11,6 +11,9 @@ int main() char *path; char *ret = NULL; + /* disable subpixel hinting */ + putenv("FREETYPE_PROPERTIES=truetype:interpreter-version=35"); + im = gdImageCreateTrueColor(50, 30); if (!im) { diff --git a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt index 1fc57932e6c..6053ba50826 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt @@ -1,8 +1,13 @@ -SET(TESTS_FILES - gd_im2im +LIST(APPEND TESTS_FILES gd_null gd_num_colors gd_versiontest ) +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + gd_im2im +) +ENDIF(PNG_FOUND) + ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt index 8c27babea2c..d60823130d8 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt @@ -1,12 +1,25 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug_289 + bug00209 bug00309 bug00354 gd2_empty_file - gd2_im2im - gd2_null php_bug_72339 + gd2_read_corrupt too_few_image_data ) +IF(ZLIB_FOUND) +LIST(APPEND TESTS_FILES + gd2_null +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + gd2_im2im + gd2_read +) +ENDIF(PNG_FOUND) +ENDIF(ZLIB_FOUND) + ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am index add4f34a76f..9c53b85649a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am @@ -1,5 +1,6 @@ libgd_test_programs += \ gd2/bug_289 \ + gd2/bug00209 \ gd2/bug00309 \ gd2/bug00354 \ gd2/gd2_empty_file \ @@ -20,6 +21,7 @@ endif EXTRA_DIST += \ gd2/CMakeLists.txt \ + gd2/bug00209.gd2 \ gd2/bug00354a.gd2 \ gd2/bug00354b.gd2 \ gd2/conv_gd2_exp.gd2 \ diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c new file mode 100644 index 00000000000..4379d389ccc --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c @@ -0,0 +1,28 @@ +/** + * Regression test for github issue #209 + * + * We're testing that bug00209.gd2, which claims to have 12336 x 48 pixels, but + * actually provides not enough image data, is rejected, i.e. that + * gdImageCreateFromGd2() returns NULL + * + * See <https://github.com/libgd/libgd/issues/209>. + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + + fp = gdTestFileOpen2("gd2", "bug00209.gd2"); + gdTestAssert(fp != NULL); + im = gdImageCreateFromGd2(fp); + gdTestAssert(im == NULL); + fclose(fp); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2 Binary files differnew file mode 100644 index 00000000000..1c797d1acfa --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2 diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c index 94fe069f6c6..8ce8bd15d57 100644 --- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c +++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c @@ -5,7 +5,7 @@ int main(int argc, char *argv[]) { - int error, i = 0; + int error = 0, i = 0; gdImagePtr im, exp; FILE *fp; char *path[] = { @@ -40,8 +40,6 @@ int main(int argc, char *argv[]) gdTestErrorMsg("image %s differs from expected result\n", path[i]); gdImageDestroy(im); error = 1; - } else { - error = 0; } if (exp) { gdImageDestroy(exp); @@ -52,8 +50,6 @@ int main(int argc, char *argv[]) gdTestErrorMsg("image %s should have failed to be loaded\n", path[i]); gdImageDestroy(im); error = 1; - } else { - error = 0; } } i++; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt index dcfdc54ca5e..fc8ca57b29d 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt @@ -1,5 +1,7 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00079 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt index 381c74d06e2..802c38220ae 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt index 381c74d06e2..802c38220ae 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt index 4f846c0b228..be903abe33e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt @@ -1,5 +1,7 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagecolorclosest ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt index 383a30277b7..1cc19958d22 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdimagecolordeallocate ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt index b627fa5682a..294fe4f7c9b 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt @@ -1,5 +1,7 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagecolorexact ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt index 4f7af18ecea..f2495d973ee 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt @@ -1,5 +1,7 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagecolorreplace ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt index a3e7bc21658..5b553388668 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt @@ -1,5 +1,7 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagecolorresolve ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt index ce838725a61..f3a83f33f8f 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdimagecolortransparent ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt index 381c74d06e2..802c38220ae 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt index 381c74d06e2..802c38220ae 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt index 024ad5a744a..f5863008810 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt @@ -1,6 +1,11 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug00007 +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00081 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt index 636c81184ba..4d0d66ba436 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt @@ -1,8 +1,10 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic basic_alpha exact_alpha bug00201 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt index e2d8249f91d..7f1a678670a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt @@ -1,5 +1,7 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00020 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt index 4fee5c33f6b..ba48d643352 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt @@ -1,5 +1,9 @@ -SET(TESTS_FILES +IF(TIFF_FOUND) +if(WEBP_FOUND) +LIST(APPEND TESTS_FILES gdnametest ) +ENDIF(WEBP_FOUND) +ENDIF(TIFF_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am index b537cbc0a3f..df86097df95 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am @@ -1,5 +1,9 @@ +if HAVE_LIBTIFF +if HAVE_LIBWEBP libgd_test_programs += \ gdimagefile/gdnametest +endif +endif EXTRA_DIST += \ gdimagefile/CMakeLists.txt \ diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c index 66da484e821..2b3cc322c45 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c @@ -69,13 +69,10 @@ do_test() { {"img.wbmp", 0, 1, 0}, {"img.bmp", 0, 1, 0}, {"img-ref.xpm", 0, 0, 1}, - - // These break the test so I'm skipping them since the point - // of this test is not those loaders. - {"img-ref.xbm", 0, -1, 1}, - {"img-ref.tga", 0, -1, 1}, - {"img.webp", 0, -1, 0}, - {"img.tiff", 0, -1, 0}, + {"img-ref.xbm", 0, 1, 1}, + {"img-ref.tga", 0, 1, 1}, + {"img.webp", 10, 1, 0}, + {"img.tiff", 0, 1, 0}, {NULL, 0} }; @@ -84,6 +81,7 @@ do_test() { gdImagePtr orig, copy; int status; char *full_filename = NULL; + unsigned int pixels; /* Some image readers are buggy and crash the program so we * skip them. Bug fixers should remove these from the list of @@ -97,7 +95,7 @@ do_test() { * it. (If it's one of the built-in types, *that* a different * problem; we assert that here.) */ if (!gdSupportsFileType(names[n].nm, 0)) { - gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", full_filename); + gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", names[n].nm); continue; }/* if */ @@ -120,7 +118,8 @@ do_test() { gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename); if (!copy) continue; - gdTestAssertMsg(gdMaxPixelDiff(orig, copy) <= names[n].maxdiff,"Pixels different on %s\n", full_filename, full_filename); + pixels = gdMaxPixelDiff(orig, copy); + gdTestAssertMsg(pixels <= names[n].maxdiff, "%u pixels different on %s\n", pixels, full_filename); if (!names[n].readonly) { status = remove(full_filename); diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt index 6b09c1bf5cc..457fd8d16a2 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt @@ -1,9 +1,11 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00002_1 bug00002_2 bug00002_3 bug00002_4 bug00104_1 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt index 1a0a2042e2d..ba6d28f49a6 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES php_bug43828 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt index bafe7dd5ac1..5fe4edd1ad4 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt @@ -1,7 +1,9 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00010 bug00191 github_bug_00238 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt index 190dad7f943..030a22464b1 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt @@ -1,4 +1,5 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagefilledpolygon0 gdimagefilledpolygon1 gdimagefilledpolygon2 @@ -7,5 +8,6 @@ SET(TESTS_FILES php_bug_64641 self_intersecting ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt index 2b26022ca70..45688733eb3 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug00004 bug00078 bug00106_gdimagefilledrectangle diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt index f03529a6082..fcf18f1a2e5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt @@ -1,6 +1,8 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00037 github_bug_215 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt index a1b6642984e..7a3c9594d78 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdCopyBlurred ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt index 39caf080fb3..c532f01ec94 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES gdimageflip ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c index e0a1a2ab3d7..a29e50e18f2 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c @@ -7,7 +7,7 @@ #include "gdtest.h" -static void test_flip(void (*func)(gdImagePtr), const char *filename) +static void test_flip(void (BGD_STDCALL *func)(gdImagePtr), const char *filename) { gdImagePtr im; FILE *fp; diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt index 381c74d06e2..b83521dc8f7 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt @@ -1,5 +1,8 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic + bug00386 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am index e715c5b4235..c6fec00ee3d 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am @@ -1,9 +1,11 @@ if HAVE_LIBPNG libgd_test_programs += \ - gdimagegrayscale/basic + gdimagegrayscale/basic \ + gdimagegrayscale/bug00386 endif EXTRA_DIST += \ gdimagegrayscale/CMakeLists.txt \ gdimagegrayscale/basic.png \ - gdimagegrayscale/basic_exp.png + gdimagegrayscale/basic_exp.png \ + gdimagegrayscale/bug00386.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c new file mode 100644 index 00000000000..5b6d048130a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c @@ -0,0 +1,51 @@ +/** + * Test that gdImageGrayScale() produces pure gray-scale images + * + * We are reading a PNG image with transparency, apply gdImageGrayScale() and + * test that each pixel has equal red, blue and green components. To avoid + * flooding the test log, we bail out after the first non gray-scale pixel. + * + * We also make sure that the image is a truecolor image, since otherwise it is + * not guaranteed that all pixels are actually gray-scale. + * + * See also <https://github.com/libgd/libgd/issues/386>. + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + int res; + int i, j; + + fp = gdTestFileOpen2("gdimagegrayscale", "bug00386.png"); + gdTestAssert(fp != NULL); + im = gdImageCreateFromPng(fp); + gdTestAssert(im != NULL); + fclose(fp); + + res = gdImageTrueColor(im); + gdTestAssert(res != 0); + + res = gdImageGrayScale(im); + gdTestAssert(res != 0); + + for (i = 0; i < gdImageSX(im); i++) { + for (j = 0; j < gdImageSY(im); j++) { + int color = gdImageGetTrueColorPixel(im, i, j); + int red = gdImageRed(im, color); + int green = gdImageGreen(im, color); + int blue = gdImageBlue(im, color); + if (!gdTestAssert(red == green && green == blue)) { + return gdNumFailures(); + } + } + } + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png Binary files differnew file mode 100644 index 00000000000..b5d5d1f4b25 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt index a1658a61a04..1f8c419a682 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt @@ -1,11 +1,17 @@ -SET(TESTS_FILES - gdimageline_aa +LIST(APPEND TESTS_FILES gdimageline_aa_outofrange - gdImageAALine_thickness - github_bug_167 +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00077 bug00072 bug00111 + gdimageline_aa + gdimageline_bug5 + gdImageAALine_thickness + github_bug_167 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS(m) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt index 381c74d06e2..802c38220ae 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt @@ -1,5 +1,7 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES basic ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt index 6ec1a0f15f4..5b3e06922f5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt @@ -1,8 +1,10 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimageopenpolygon0 gdimageopenpolygon1 gdimageopenpolygon2 gdimageopenpolygon3 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt index eadd82a4670..214c80148a9 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdimagepixelate ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt index e965b73fdd2..647636adcea 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt @@ -1,8 +1,10 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagepolygon0 gdimagepolygon1 gdimagepolygon2 gdimagepolygon3 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt index 9008d86c77f..e2a2b817e97 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt @@ -1,9 +1,14 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug00003 bug00106_gdimagerectangle - bug00299 github_bug_00172 point_ordering ) +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + bug00299 +) +ENDIF(PNG_FOUND) + ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am index ea9d52b9662..cd49b73fae4 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am @@ -1,10 +1,14 @@ libgd_test_programs += \ gdimagerectangle/bug00003 \ gdimagerectangle/bug00106_gdimagerectangle \ - gdimagerectangle/bug00299 \ gdimagerectangle/github_bug_00172 \ gdimagerectangle/point_ordering +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagerectangle/bug00299 +endif + EXTRA_DIST += \ gdimagerectangle/CMakeLists.txt \ gdimagerectangle/bug00299_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt index ab8b4cfb7ca..01957c5905c 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt @@ -1,7 +1,14 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +IF(JPEG_FOUND) +LIST(APPEND TESTS_FILES bug00067 +) +ENDIF(JPEG_FOUND) + +LIST(APPEND TESTS_FILES php_bug_64898 php_bug_65070 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am index 99b2398bb8a..9d375f39b9e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am @@ -1,9 +1,9 @@ +if HAVE_LIBPNG if HAVE_LIBJPEG libgd_test_programs += \ gdimagerotate/bug00067 endif -if HAVE_LIBPNG libgd_test_programs += \ gdimagerotate/php_bug_64898 \ gdimagerotate/php_bug_65070 diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt index b1d9cf3d85d..1174e6555d0 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug00329 bug00330 github_bug_00218 diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am index 771030151df..432ddbeafb6 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am @@ -1,4 +1,3 @@ - libgd_test_programs += \ gdimagescale/bug00329 \ gdimagescale/bug00330 \ diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt index 0a9e2167c4c..479afe573aa 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt @@ -1,6 +1,8 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00208_1 bug00208_2 ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt index f969cdf72d3..675bbfd4b62 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt @@ -1,8 +1,13 @@ -SET(TESTS_FILES - alpha_blending +LIST(APPEND TESTS_FILES bug00186 gdeffectoverlay gdeffectmultiply ) +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + alpha_blending +) +ENDIF(PNG_FOUND) + ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am index 0a574ad14b1..1eb022453b1 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am @@ -1,9 +1,13 @@ libgd_test_programs += \ - gdimagesetpixel/alpha_blending \ gdimagesetpixel/bug00186 \ gdimagesetpixel/gdeffectmultiply \ gdimagesetpixel/gdeffectoverlay +if HAVE_LIBPNG +libgd_test_programs += \ + gdimagesetpixel/alpha_blending +endif + EXTRA_DIST += \ gdimagesetpixel/CMakeLists.txt \ gdimagesetpixel/alphablending_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt index a38613f9a81..00a8f43cb63 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt @@ -1,7 +1,9 @@ IF(FREETYPE_FOUND) -SET(TESTS_FILES +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES gdimagestringft_bbox ) +ENDIF(PNG_FOUND) ENDIF(FREETYPE_FOUND) -ADD_GD_TESTS() +ADD_GD_TESTS(m) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am index 0dfe26fb13c..956e1db0d10 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am @@ -1,7 +1,9 @@ if HAVE_LIBFREETYPE +if HAVE_LIBPNG libgd_test_programs += \ gdimagestringft/gdimagestringft_bbox endif +endif EXTRA_DIST += \ gdimagestringft/CMakeLists.txt diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c index 0161ec8101c..1596a9e7be5 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c @@ -38,6 +38,9 @@ int main() int error = 0; FILE *fp; + /* disable subpixel hinting */ + putenv("FREETYPE_PROPERTIES=truetype:interpreter-version=35"); + path = gdTestFilePath("freetype/DejaVuSans.ttf"); im = gdImageCreate(800, 800); gdImageColorAllocate(im, 0xFF, 0xFF, 0xFF); /* allocate white for background color */ diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt index db08ac13a8e..c7130f119a9 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt @@ -1,5 +1,5 @@ IF(FREETYPE_FOUND) -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdimagestringftex_returnfontpathname ) ENDIF(FREETYPE_FOUND) diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am index 31f03624f66..ac9eedca029 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am @@ -1,4 +1,3 @@ - libgd_test_programs += \ gdimagetruecolortopalette/bug00307 \ gdimagetruecolortopalette/php_bug_72512 diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt index 296e3f1ca77..af0fd8c585e 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdModesAndPalettes gdTrivialResize ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt index bc72c27c84b..b796dd2b72a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES gdnewfilectx_null ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c index b0462fc42d7..7e9ee362985 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c @@ -40,6 +40,7 @@ void gdSilence(int priority, const char *format, va_list args) (void)args; } +#ifdef HAVE_LIBPNG gdImagePtr gdTestImageFromPng(const char *filename) { gdImagePtr image; @@ -64,6 +65,7 @@ gdImagePtr gdTestImageFromPng(const char *filename) fclose(fp); return image; } +#endif static char *tmpdir_base; @@ -500,7 +502,7 @@ unsigned int gdMaxPixelDiff(gdImagePtr a, gdImagePtr b) return diff; } - +#ifdef HAVE_LIBPNG int gdTestImageCompareToImage(const char* file, unsigned int line, const char* message, gdImagePtr expected, gdImagePtr actual) { @@ -577,13 +579,15 @@ fail: if (surface_diff) { gdImageDestroy(surface_diff); } - return 0; + return 1; } +#endif +#ifdef HAVE_LIBPNG int gdTestImageCompareToFile(const char* file, unsigned int line, const char* message, const char *expected_file, gdImagePtr actual) { - gdImagePtr expected; + gdImagePtr expected = 0; int res = 1; expected = gdTestImageFromPng(expected_file); @@ -597,7 +601,7 @@ int gdTestImageCompareToFile(const char* file, unsigned int line, const char* me } return res; } - +#endif static int failureCount = 0; diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt index aa09d66c40a..25f60459005 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt @@ -1,5 +1,9 @@ -SET(TESTS_FILES +IF(PNG_FOUND) +IF(ZLIB_FOUND) +LIST(APPEND TESTS_FILES bug00032 ) +ENDIF(ZLIB_FOUND) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt index f5c5bb75b0a..9851123fd7f 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt @@ -1,4 +1,4 @@ -SET(TESTS_FILES +LIST(APPEND TESTS_FILES github_bug_00221 ) diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am index e70b0735d12..2566ed58c88 100644 --- a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am @@ -1,4 +1,3 @@ - libgd_test_programs += \ gdtransformaffineboundingbox/github_bug_00221 diff --git a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt index f9aa0e23c78..7d40cddca6a 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt @@ -1,13 +1,19 @@ -SET(TESTS_FILES - gif_im2im +LIST(APPEND TESTS_FILES + bug00005_2 + bug00181 + bug00227 gif_null +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES bug00005 - bug00005_2 bug00006 bug00060 bug00066 - bug00181 - bug00227 + gif_im2im + uninitialized_memory_read ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am index 50f671fbceb..0bdeab7e663 100644 --- a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am @@ -2,7 +2,8 @@ libgd_test_programs += \ gif/bug00005_2 \ gif/bug00181 \ gif/bug00227 \ - gif/gif_null + gif/gif_null \ + gif/uninitialized_memory_read if HAVE_LIBPNG libgd_test_programs += \ @@ -22,4 +23,5 @@ EXTRA_DIST += \ gif/bug00005_3.gif \ gif/bug00060.gif \ gif/bug00066.gif \ - gif/bug00066_exp.png + gif/bug00066_exp.png \ + gif/unitialized_memory_read.gif diff --git a/Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c b/Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c new file mode 100644 index 00000000000..566fc4acc91 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c @@ -0,0 +1,42 @@ +/** + * Test for uninitialized color map entries + * + * We're reading a crafted GIF which consists of 16x16 color blocks and which + * has only two palette entries in the global color map, but uses other palette + * indexes as well. We verify whether all undefined palette indexes produce the + * color black. + * + * See also <CAKm_7a-AO++B6cXYWM_DtycPENG5WNWK7NSEvQ5OmZziMY_JyA@mail.gmail.com> + * which had been sent to security@libgd.org. + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + int i, j, col; + + fp = gdTestFileOpen2("gif", "unitialized_memory_read.gif"); + gdTestAssert(fp != NULL); + im = gdImageCreateFromGif(fp); + gdTestAssert(im != NULL); + fclose(fp); + + for (i = 0; i < gdImageSX(im); i += 16) { + for (j = 0; j < gdImageSY(im); j += 16) { + if (gdImageGetPixel(im, i, j) >= 2) { + col = gdImageGetTrueColorPixel(im, i, j); + gdTestAssertMsg(col == 0, "(%d,%d): expected color 0, but got %d\n", i, j, col); + } + } + } + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif b/Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif Binary files differnew file mode 100644 index 00000000000..92fbb7ff20d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt index 5effc8c0de6..19964b0ce2c 100644 --- a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt @@ -1,12 +1,18 @@ IF(JPEG_FOUND) -SET(TESTS_FILES +LIST(APPEND TESTS_FILES + jpeg_empty_file jpeg_im2im jpeg_null +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + bug_github_18 jpeg_read - jpeg_empty_file jpeg_resolution - bug_github_18 + bug00338 ) +ENDIF(PNG_FOUND) ENDIF(JPEG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am index bc196b197ba..7e5d317b69f 100644 --- a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am @@ -1,12 +1,13 @@ if HAVE_LIBJPEG libgd_test_programs += \ - jpeg/bug_github_18 \ jpeg/jpeg_empty_file \ jpeg/jpeg_im2im \ jpeg/jpeg_null if HAVE_LIBPNG libgd_test_programs += \ + jpeg/bug_github_18 \ + jpeg/bug00338 \ jpeg/jpeg_read \ jpeg/jpeg_resolution endif diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c new file mode 100644 index 00000000000..15224d32b34 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c @@ -0,0 +1,51 @@ +/** + * Regression test for <https://github.com/libgd/libgd/issues/338> + * + * We're testing that reading a JPEG image with gdImageCreateFromJpeg() + * raises a GD_WARNING for the fatal libjpeg error, but not a GD_ERROR. + * We also make sure, that the fatal libjpeg error is actually reported. + * + * See also ../png/bug00338.c + */ + + +#include <string.h> +#include "gd.h" +#include "gd_errors.h" +#include "gdtest.h" + + +#define MSG "gd-jpeg: JPEG library reports unrecoverable error: %s" + + +static int error_handler_called = 0; + + +static void error_handler(int priority, const char *format, va_list args) +{ + if (!strcmp(format, MSG)) { + gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority); + error_handler_called = 1; + } +} + + +int main() +{ + gdImagePtr im; + FILE *fp; + + gdSetErrorMethod(error_handler); + + im = gdImageCreateTrueColor(10, 10); + fp = gdTestTempFp(); + gdImagePng(im, fp); + gdImageDestroy(im); + + im = gdImageCreateFromJpeg(fp); + gdTestAssert(im == NULL); + + gdTestAssert(error_handler_called); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt index 5235417eaae..6fd64b24447 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt @@ -1,5 +1,5 @@ IF(PNG_FOUND) -SET(TESTS_FILES +LIST(APPEND TESTS_FILES png_im2im png_null png_resolution @@ -8,6 +8,9 @@ SET(TESTS_FILES bug00086 bug00088 bug00193 + bug00338 + bug00381_1 + bug00381_2 ) ENDIF(PNG_FOUND) diff --git a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am index 01c48036cc7..c167955b1cb 100644 --- a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am @@ -5,6 +5,9 @@ libgd_test_programs += \ png/bug00086 \ png/bug00088 \ png/bug00193 \ + png/bug00338 \ + png/bug00381_1 \ + png/bug00381_2 \ png/png_im2im \ png/png_null \ png/png_resolution @@ -17,4 +20,5 @@ EXTRA_DIST += \ png/bug00088_1_exp.png \ png/bug00088_2.png \ png/bug00088_2_exp.png \ + png/bug00381_2.gd \ png/emptyfile diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00338.c b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c new file mode 100644 index 00000000000..0bdd9f9a6f0 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c @@ -0,0 +1,48 @@ +/** + * Regression test for <https://github.com/libgd/libgd/issues/338> + * + * We're testing that writing a PNG image with an unsupported quality + * raises a GD_WARNING for the fatal libpng error, but not a GD_ERROR. + * We also make sure, that the fatal libpng error is actually reported. + * + * See also ../jpeg/bug00338.c + */ + + +#include <string.h> +#include "gd.h" +#include "gd_errors.h" +#include "gdtest.h" + + +#define MSG "gd-png: fatal libpng error: %s\n" + + +static int error_handler_called = 0; + + +static void error_handler(int priority, const char *format, va_list args) +{ + if (!strcmp(format, MSG)) { + gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority); + error_handler_called = 1; + } +} + + +int main() +{ + gdImagePtr im; + FILE *fp; + + gdSetErrorMethod(error_handler); + + im = gdImageCreateTrueColor(10, 10); + fp = gdTestTempFp(); + gdImagePngEx(im, fp, 100); + gdImageDestroy(im); + + gdTestAssert(error_handler_called); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c b/Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c new file mode 100644 index 00000000000..d8f375b89f8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c @@ -0,0 +1,31 @@ +/** + * Test that failure to convert to PNG returns NULL + * + * We are creating a palette image without allocating any colors in the palette, + * and pass this image to `gdImagePngPtr()` which is supposed to fail, and as + * such should return NULL. + * + * See also <https://github.com/libgd/libgd/issues/381> + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + void *data; + int size = 0; + + im = gdImageCreate(100, 100); + gdTestAssert(im != NULL); + + data = gdImagePngPtr(im, &size); + gdTestAssert(data == NULL); + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c new file mode 100644 index 00000000000..84c7bb15654 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c @@ -0,0 +1,35 @@ +/** + * Test that failure to convert to PNG returns NULL + * + * We are reading a palette image without any colors in the palette, and pass + * this image to `gdImagePngPtr()` which is supposed to fail, and as such should + * return NULL. + * + * See also <https://github.com/libgd/libgd/issues/381> + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + void *data; + int size = 0; + + fp = gdTestFileOpen2("png", "bug00381_2.gd"); + gdTestAssert(fp != NULL); + im = gdImageCreateFromGd(fp); + gdTestAssert(im != NULL); + fclose(fp); + + data = gdImagePngPtr(im, &size); + gdTestAssert(data == NULL); + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd Binary files differnew file mode 100644 index 00000000000..c18480aeeb3 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd diff --git a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt index af234971183..ca191a65ced 100644 --- a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt @@ -1,12 +1,17 @@ -SET(TESTS_FILES - tga_null +LIST(APPEND TESTS_FILES bug00084 bug00247 bug00247a bug00248 bug00248a heap_overflow + tga_null +) + +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES tga_read ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am index ab08dbff2b9..091e3bef35d 100644 --- a/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am @@ -5,8 +5,12 @@ libgd_test_programs += \ tga/bug00248 \ tga/bug00248a \ tga/heap_overflow \ - tga/tga_null \ + tga/tga_null + +if HAVE_LIBPNG +libgd_test_programs += \ tga/tga_read +endif EXTRA_DIST += \ tga/CMakeLists.txt \ diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt index e5862ac126f..8e542e690c4 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt @@ -1,9 +1,10 @@ IF(TIFF_FOUND) -SET(TESTS_FILES +LIST(APPEND TESTS_FILES tiff_im2im tiff_invalid_read tiff_null tiff_dpi + tiff_read_bw ) ENDIF(TIFF_FOUND) diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am index 670434a7d32..2a88d68df3c 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am @@ -3,11 +3,14 @@ libgd_test_programs += \ tiff/tiff_dpi \ tiff/tiff_im2im \ tiff/tiff_invalid_read \ - tiff/tiff_null + tiff/tiff_null \ + tiff/tiff_read_bw endif EXTRA_DIST += \ tiff/CMakeLists.txt \ tiff/tiff_invalid_read_1.tiff \ tiff/tiff_invalid_read_2.tiff \ - tiff/tiff_invalid_read_3.tiff + tiff/tiff_invalid_read_3.tiff \ + tiff/tiff_read_bw.tiff \ + tiff/tiff_read_bw_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c index d639839c420..7b607a25fa1 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c @@ -3,14 +3,7 @@ * works correctly. Set the image resolution, write the file, read the file * back and test that the image resolution comes back correct. */ -#ifdef _WIN32 -#include <stdio.h> -int main() -{ - printf("skip"); - return 0; -} -#else + #include "gd.h" #include "gdtest.h" @@ -81,4 +74,3 @@ door0: gdImageDestroy(src); return status; } -#endif diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c index b6b240e3ce3..7b6c4cb9c5f 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c @@ -1,11 +1,3 @@ -#ifdef _WIN32 -#include <stdio.h> -int main() -{ - printf("skip"); - return 0; -} -#else #include "gd.h" #include "gdtest.h" @@ -70,4 +62,3 @@ door0: gdImageDestroy(src); return status; } -#endif
\ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c index 19b64f771c3..ccaade7498f 100644 --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c @@ -1,11 +1,3 @@ -#ifdef _WIN32 -#include <stdio.h> -int main() -{ - printf("skip"); - return 0; -} -#else #include "gd.h" int main() @@ -20,4 +12,3 @@ int main() gdImageTiff(im, NULL); /* noop safely */ return 0; } -#endif
\ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c new file mode 100644 index 00000000000..c302c63aa86 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c @@ -0,0 +1,26 @@ +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + char *path; + + fp = gdTestFileOpen2("tiff", "tiff_read_bw.tiff"); + gdTestAssert(fp != NULL); + im = gdImageCreateFromTiff(fp); + fclose(fp); + + gdTestAssert(im != NULL); + gdTestAssert(!gdImageTrueColor(im)); + + path = gdTestFilePath2("tiff", "tiff_read_bw_exp.png"); + gdAssertImageEqualsToFile(path, im); + gdFree(path); + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff Binary files differnew file mode 100644 index 00000000000..69813f0ddd9 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png Binary files differnew file mode 100644 index 00000000000..b43daf9b8da --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt index 2c988680f8f..1f85a15f86e 100644 --- a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt @@ -1,6 +1,11 @@ -SET(TESTS_FILES - wbmp_im2im +LIST(APPEND TESTS_FILES wbmp_null ) +IF(PNG_FOUND) +LIST(APPEND TESTS_FILES + wbmp_im2im +) +ENDIF(PNG_FOUND) + ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt index d2db95b9698..ec27127b1d6 100644 --- a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt @@ -1,5 +1,5 @@ IF(WEBP_FOUND) -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug00111 bug_double_free ) diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt index 183cf5eaf3f..3e3bb696cad 100644 --- a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt @@ -1,5 +1,9 @@ +IF(PNG_FOUND) LIST(APPEND TESTS_FILES + github_bug_109 github_bug_170 + x10_basic_read ) +ENDIF(PNG_FOUND) ADD_GD_TESTS() diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am index ba1eabd5bd4..a9a293d1612 100644 --- a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am +++ b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am @@ -1,5 +1,13 @@ +if HAVE_LIBPNG libgd_test_programs += \ - xbm/github_bug_170 + xbm/github_bug_109 \ + xbm/github_bug_170 \ + xbm/x10_basic_read +endif EXTRA_DIST += \ - xbm/CMakeLists.txt + xbm/CMakeLists.txt \ + xbm/github_bug_109.xbm \ + xbm/github_bug_109_exp.png \ + xbm/x10_basic_read.xbm \ + xbm/x10_basic_read_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c new file mode 100644 index 00000000000..c0b50a8f0d4 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c @@ -0,0 +1,35 @@ +/** + * Test reading of XBM images with a width that is not a multiple of 8 + * + * We're reading such an XBM image, and check that we got what we've expected, + * instead of an error message. + * + * See also <https://github.com/libgd/libgd/issues/109>. + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + char *path; + + fp = gdTestFileOpen2("xbm", "github_bug_109.xbm"); + im = gdImageCreateFromXbm(fp); + fclose(fp); + gdTestAssert(im != NULL); + gdTestAssert(gdImageGetTrueColorPixel(im, 0, 0) == 0); + gdTestAssert(gdImageGetTrueColorPixel(im, 0, 1) == 0xffffff); + + path = gdTestFilePath2("xbm", "github_bug_109_exp.png"); + gdAssertImageEqualsToFile(path, im); + gdFree(path); + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm new file mode 100644 index 00000000000..f427d86a54b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm @@ -0,0 +1,5 @@ +#define test_width 10 +#define test_height 10 +static unsigned char test_bits[] = { + 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, + 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00}; diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png Binary files differnew file mode 100644 index 00000000000..505b5457c85 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c new file mode 100644 index 00000000000..99b9019c5f7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c @@ -0,0 +1,32 @@ +/** + * Test reading of an X10 style XBM file + * + * X10 style XBMs define a short[] instead of a char[] array. We're testing + * that such files are read correctly, particularly regarding the line padding, + * which is 2 bytes instead of 1, and the endianess. + */ + + +#include "gd.h" +#include "gdtest.h" + + +int main() +{ + gdImagePtr im; + FILE *fp; + char *path; + + fp = gdTestFileOpen2("xbm", "x10_basic_read.xbm"); + im = gdImageCreateFromXbm(fp); + fclose(fp); + gdTestAssert(im != NULL); + + path = gdTestFilePath2("xbm", "x10_basic_read_exp.png"); + gdAssertImageEqualsToFile(path, im); + gdFree(path); + + gdImageDestroy(im); + + return gdNumFailures(); +} diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm new file mode 100644 index 00000000000..d8ca2cd4292 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm @@ -0,0 +1,4 @@ +#define x10_basic_read_width 17 +#define x10_basic_read_height 3 +static unsigned short x10_basic_read_bits[] = { + 0xFFFF, 0x0001, 0x0000, 0x0000, 0xFFFF, 0x0001}; diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png Binary files differnew file mode 100644 index 00000000000..fbcdf0cfe57 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt index 1301bc3f824..0b1a106c6fe 100644 --- a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt @@ -1,5 +1,5 @@ IF(XPM_FOUND) -SET(TESTS_FILES +LIST(APPEND TESTS_FILES bug00166 bug00185 color_name |