From 745aac93fa8e480e216c9fb7be049453f10fbe0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Fri, 12 Jan 2024 15:39:08 +0100 Subject: [PATCH] f --- .../print/test/util/ImageSimilarity.java | 10 +++++++++- docker-compose.yaml | 1 + .../expected_output/mask-requestData.png | Bin 6374 -> 5373 bytes .../requestData-fontawesome.png | Bin 16951 -> 18393 bytes 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/mapfish/print/test/util/ImageSimilarity.java b/core/src/main/java/org/mapfish/print/test/util/ImageSimilarity.java index 3fd46adde1..6c564cc884 100644 --- a/core/src/main/java/org/mapfish/print/test/util/ImageSimilarity.java +++ b/core/src/main/java/org/mapfish/print/test/util/ImageSimilarity.java @@ -263,7 +263,15 @@ private File getRelatedFile(final String name) { squareDist += colorDist * colorDist; } } else if (maskPixel[0] != 0) { - throw new RuntimeException("Mask image must be only black and white (0 and 255)"); + throw new RuntimeException( + "Mask image must be only black and white (0 and 255), got " + + maskPixel[0] + + " at " + + x + + "," + + y + + " in " + + this.maskImage); } double pxDiff = Math.sqrt(squareDist / this.expectedImage.getSampleModel().getNumBands()); dist += pxDiff / 255; diff --git a/docker-compose.yaml b/docker-compose.yaml index 11482361d1..85431071bc 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -25,6 +25,7 @@ services: user: ${USER_ID} command: tail --follow /dev/null volumes: + - ./examples/src:/src/examples/src:ro - ./examples/src/test/resources/examples:/src/examples/src/test/resources/examples - ./examples/build/reports:/src/examples/build/reports - ./examples/build/resources:/src/examples/build/resources diff --git a/examples/src/test/resources/examples/datasource_multiple_maps/expected_output/mask-requestData.png b/examples/src/test/resources/examples/datasource_multiple_maps/expected_output/mask-requestData.png index 358b3722a5b84e373d5807e2bd243932550e5156..bfd6a4d8ea8ce217c0054b128dcf6c28ae0addef 100644 GIT binary patch delta 1835 zcmb`Hdpy$%8^C{a8FGn26vte0M62D6v>G<^Qm&bWS7w&mieXV{a$2Ozq3umabIGMf zjMzkSrxFpCj^2ZVx#Zf3&Q1)+`~LU-+vok~`97cLdA^^|^LhSwrr{e0G7U6AiU0uc zOeyXFp!gwcKc4;T8Ia?^k1-xO?2Y;XlRCj&OZ3m)Ze4Yv$f@f@>3rl2w>qzH1<`fc zEm-OraIdCQdvWONy`n($QK{^j%Lz^BdZE?YNbC!iZ)4;gTY}878v3#Jc7Ru-o?5VR zyiIs^K)vL1wwJenoTPYT7D`2;Z}9^ z%aIAPok?~XZ>+F+SxhV+Je$}rf=H%VbK`G@+v*hE7D~+V!CiO$UC`F&?WI5&!84?J zJ9&2)E$kLCDZ;aeuu^^`;l99O_mRClxl_8=vE-#6T}L?j4Zem2T>~Bq)^ZW2H!N!D zQy{eJ3q&I<6=BgPb6Z=wCjQe8^5(+lEd8pRNh8!ABqQ0Ic?T~nSx*L=TP9!sv;{${nQfO z!|R^WhlE{kZ#JZn&zn9B@oF(CZN_4*ZtrZS*@! zaH{H%4+oe1Beo#@RJn;aPc3n>Lk5QMrGWG21HCV-En?Hh6x$qqBx!!YyY$$ zHogEOY{e$;X_D3779*(AU;h<8F5*&t9!bq6o}HP&(Z<@m=18i+=57zzcZ3~29||p_ zs56zv>AeNx)sL0!Lam#6!xk?T7{FK_%TMqan7T_lsFEvOz%T?nuOS-0cW~|?>D`j# zV)tKf+mGaC*HAf)4n}5tUhTch5uA761NwAN74}Cxxs+#%s$#v8)*H_^e&*Ww#wr>Wj~bCNm>(iOaa- zg6v=D3AYq;&OIn~4(y?kJB4H=ZAXJ-)$Sg|w8a6nv9;%q&y_V8^nF=guetc1-b)xjfymT*E@9lc&8@fCg9vdB>C%v&Pm%|;dDFcjE-9-#1XHzpBG|IY&e<0(an98 zEO!zHn`Ju+cNy5}dtL<(fBk8zb$R&ow=T8A2Xs~JgN(od#liKu9afZtj@b;&A`BCsIZ-Nzk$H{8pFJ!K?g`~uV=2xkZX?)!eZ1{%ah`w z@+Mb7q`~sLwk@ruu+s$#3HcW;JnLH=%bS*80W?I+D=WMDY5_oVqXw&-p9 zEdmOM(U4FS3W0`F(KHwo2E$+wbPSvt5{BeXtCZ}tg`r`#b{H%cgFqlL$eJA0KoEDg zTA&4Wd&Z86z(VQ&kx?`>5{jkUVxgE&DjkIhp`mFZC@xoxup0%1!J%-3FC1$RN77i?+uYjPDjCin+0H;zHy39hUD=q#4d3+xdlsajqXm<8 z$C_=o09R+cZ{o*A$wLqT(dcLyD_%d}X_4~M_Y~xiBHz8&-{zqH%}%O#(Lrw;->kR8 qQ~&>#z8CE875`73#s93oK@U1Jm1*KoeNDc7DZrI*(pl(uCiQRpr%tH= literal 6374 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 Zf7%eGs_L?b^9+1<@tn}mIh{{@dD5`+K%