From 71870a47b5e7c32e2aa99e2296fdaaf6ec6d6db1 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 16 May 2013 13:17:48 -0700 Subject: [PATCH] renable lines-shield test and always generate missing reference images - closes #1696 --- ...nes-shield-200-200-1.0-grid-reference.json | 66 ++++++ ...nes-shield-400-400-1.0-grid-reference.json | 118 ++++++++++ ...nes-shield-600-600-1.0-grid-reference.json | 168 ++++++++++++++ ...nes-shield-800-800-1.0-grid-reference.json | 218 ++++++++++++++++++ ...lines-shield-200-200-1.0-agg-reference.png | Bin 0 -> 2382 bytes ...lines-shield-200-200-2.0-agg-reference.png | Bin 0 -> 2992 bytes ...lines-shield-400-400-1.0-agg-reference.png | Bin 0 -> 5741 bytes ...lines-shield-400-400-2.0-agg-reference.png | Bin 0 -> 5463 bytes ...lines-shield-600-600-1.0-agg-reference.png | Bin 0 -> 7036 bytes ...lines-shield-600-600-2.0-agg-reference.png | Bin 0 -> 7853 bytes ...lines-shield-800-800-1.0-agg-reference.png | Bin 0 -> 11368 bytes ...lines-shield-800-800-2.0-agg-reference.png | Bin 0 -> 12371 bytes tests/visual_tests/test.py | 23 +- 13 files changed, 579 insertions(+), 14 deletions(-) create mode 100644 tests/visual_tests/grids/lines-shield-200-200-1.0-grid-reference.json create mode 100644 tests/visual_tests/grids/lines-shield-400-400-1.0-grid-reference.json create mode 100644 tests/visual_tests/grids/lines-shield-600-600-1.0-grid-reference.json create mode 100644 tests/visual_tests/grids/lines-shield-800-800-1.0-grid-reference.json create mode 100644 tests/visual_tests/images/lines-shield-200-200-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-200-200-2.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-400-400-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-400-400-2.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-600-600-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-600-600-2.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-800-800-1.0-agg-reference.png create mode 100644 tests/visual_tests/images/lines-shield-800-800-2.0-agg-reference.png diff --git a/tests/visual_tests/grids/lines-shield-200-200-1.0-grid-reference.json b/tests/visual_tests/grids/lines-shield-200-200-1.0-grid-reference.json new file mode 100644 index 000000000..cd78fedba --- /dev/null +++ b/tests/visual_tests/grids/lines-shield-200-200-1.0-grid-reference.json @@ -0,0 +1,66 @@ +{ + "keys": [ + "", + "212", + "210", + "208", + "132", + "206", + "200", + "202", + "204" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " !! !!! !! !!! !! !!! ", + " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", + " !! !! !! !! !! !! ", + " ! ! ! ", + " ", + " ### ", + " ############################################# ", + " ## ", + " # $ $ ", + " %% $$ $$ $$ $$ $$ ", + " %%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", + " %% $ $$ $ $$ $ ", + " ", + " ", + " ", + " && ", + " ''' &&&&&&&&&& ( (( ", + " '' ' && (( ( ( ", + " ' '' (((( ( ", + " ' ''''' (( (( ", + " ''' ''' ( ( ( ", + " ' '' )) ((( ", + " ' )))))))))) ", + " )) ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/lines-shield-400-400-1.0-grid-reference.json b/tests/visual_tests/grids/lines-shield-400-400-1.0-grid-reference.json new file mode 100644 index 000000000..56dc7a8e9 --- /dev/null +++ b/tests/visual_tests/grids/lines-shield-400-400-1.0-grid-reference.json @@ -0,0 +1,118 @@ +{ + "keys": [ + "", + "216", + "212", + "210", + "132", + "208", + "240", + "206", + "202", + "200", + "204" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ! ! ! ! ! ! ", + " !! !! !! !! !! !! !! !! !! !! !! !! ", + " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", + " !!! !! !!! !! !!! !! !!! !! !!! !! !!! !! ", + " ", + " ", + " ", + " ", + " # # # # # # ", + " # ## # ## # ## # ## # ## # ## ", + " # ## # ## # ## # ## # ## # ## ", + " ### # ### # ### # ### # ### # ### # ", + " ", + " ", + " ", + " ", + " ", + " ", + " $ $ $ $ $ ", + " $$ $$ $$ $ $ $$ $$ $$ $ $ $ ", + " $$ $$ $$ $ $ $ $$ $$ $ $ $ ", + " $$$ $ $ $ $ $$$ $$$ $ $ $ $$$ $$$ ", + " ", + " ", + " ", + " % & & & & & & ", + " %% && && && && && && && && && && && ", + " %%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", + " %%% && & && & && & && & && & && ", + " ", + " ' ' ' ' ' ' ", + " ' '' ' '' ' '' ' '' ' '' ' '' ", + " '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ", + " ' '' ' '' ' '' ' '' ' '' ' '' ", + " ' ' ' ' ' ' ", + " ", + " ", + " ", + " (( ( ( )) )))) ) ", + " *** *** ((((((((((((((((((( )))) ))) ", + " ***** *** (( ( )) ) ", + " ** ** ) ))) ", + " ** *** ) ) ", + " ) ", + " * * ", + " * * ) ) ", + " * )) ", + " * * ) )) ", + " ** ** )))) )))) ", + " **** **** + )))) )))) ", + " * * * ** ++ + ) ", + " * * +++++++++++++++++++ ", + " ++ + ", + " + ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/lines-shield-600-600-1.0-grid-reference.json b/tests/visual_tests/grids/lines-shield-600-600-1.0-grid-reference.json new file mode 100644 index 000000000..db3b627ed --- /dev/null +++ b/tests/visual_tests/grids/lines-shield-600-600-1.0-grid-reference.json @@ -0,0 +1,168 @@ +{ + "keys": [ + "", + "216", + "212", + "210", + "208", + "132", + "240", + "202", + "200", + "206", + "204" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ! !!! ! !!! ! !!! ! !!! ! !!! ! !!! ! !!! ! !!! ! !!! ", + " ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ", + " !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! ", + " ! ! ! ! ! ! ! ! ! ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " # # # # # # # # # ", + " # ## # ## # ## # ## # ## # ## # ## # ## # ## ", + " ######################################################################################################################################## ", + " # ## # ## # ## # ## # ## # ## # ## # ## # ## ", + " # # # # # # # # # ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " $ $ $ $ $ $ $ $ $ ", + " $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ ", + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", + " $$ $$$ $$ $$$ $$ $$$ $$ $$$ $$ $$$ $$ $$$ $$ $$$ $$ $$$ $$ $$$ ", + " $ $ $ $ $ $ $ $ $ ", + " ", + " ", + " ", + " ", + " ", + " ", + " % % % % % % % % ", + " && %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% %% ", + " &&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", + " && % %% % %% % %% % %% % %% % %% % %% % %% % ", + " ", + " ", + " ", + " ", + " '' ' ' '' ' ' '' ' ' '' ' ' '' ' ' '' ' ' '' ' ' '' ' ' '' ' ' ", + " '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' ", + " '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ", + " ''' ' ' ''' ' ' ''' ' ' ''' ' ' ''' ' ' ''' ' ' ''' ' ' ''' ' ' ''' ' ' ", + " ", + " ", + " ", + " ", + " ", + " ", + " ( ( (( ( ", + " ) ** * *** (( ((( ", + " )) ) )) )) **************************** (((( (( ", + " )))) )))) ** ** ** ((( ( ", + " ) ))) ))) * * ( ( ", + " ) ) ", + " ) (( ( ", + " ))) ) (((( (( ", + " ) ) ( ( (( ", + " ) )))) ( (( ", + " ))) )) ( ", + " ) ) ( ", + " ) ( ( ", + " ) ((( ", + " ) ) ( (( ", + " )) ) ) ( (((( ", + " ))))) ) ( ( ( ", + " ))) ) ( ( ( (( ", + " ) ) ))) ) + + ((( ", + " )) ) ++ ++ ++ (( ", + " )))) ++++++++++++++++++++++++++++ ", + " ) ) ++ ++ +++ ", + " + + ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/grids/lines-shield-800-800-1.0-grid-reference.json b/tests/visual_tests/grids/lines-shield-800-800-1.0-grid-reference.json new file mode 100644 index 000000000..134943ab2 --- /dev/null +++ b/tests/visual_tests/grids/lines-shield-800-800-1.0-grid-reference.json @@ -0,0 +1,218 @@ +{ + "keys": [ + "", + "216", + "212", + "210", + "132", + "208", + "240", + "202", + "200", + "206", + "204" + ], + "data": {}, + "grid": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ! ! ! ! ! ! ! ! ! ! ! ! ", + " !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !! ", + " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", + " !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! !! ! ! ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " # ### # ### # ### # ### # ### # ### # ### # ### # ### # ### # ### # ### ", + " ## # ## # ## # ## # ## # ## # ## # ## # ## # ## # ## # ## # ", + " ## # ## # ## # ## # ## # ## # ## # ## # ## # ## # ## # ## # ", + " # # # # # # # # # # # # ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " $$ $$$ $$$ $ $ $ $$ $$ $$$ $$$ $ $ $ $$ $$ $$$ $$$ $ $ $ $$ $$ $$$ $$$ $ $$ ", + " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", + " $$ $$ $ $$ $$ $$ $$ $$ $ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ ", + " $ $ $ $ $ $ $ $ $ $ $ $ ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " % & & & & & & & & & & & & ", + " %% && && && && && && && && && && && && && && && && && && && && && && && ", + " %%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", + " %%% && & && & && & && & && & && & && & && & && & && & && & && ", + " ", + " ", + " ", + " ", + " ", + " ", + " ' ' ' ' ' ' ' ' ' ' ' ' ", + " ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ' '' ", + " '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ", + " '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ", + " ' ' ' ' ' ' ' ' ' ' ' ' ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ( ", + " (((( ( (( ", + " ) *** * * ** * * * ((( ((((( ", + " ) ) ) ) * * * * ** ( ( ((( ", + " )))) )))) ** ** ** ** ** ( ( ( ", + " )) ))) )))) * * (( ( ", + " ) )) ( ((( ", + " ))) (( ((((( ", + " ) )) ( ( ", + " )) )) ( ( ", + " ) )) ( ", + " ) ( ( ", + " ) ", + " (( (( ", + " ) ) (((( (( ", + " ) (( (((( ", + " )))) )) ( (( ", + " )) )))) (( ", + " )) ( ( ", + " ) ( ( ", + " ) ) ( ( ( ( ", + " ) (((( (( ", + " ))) ) ((( ((((( ", + " )) ))) (( ( ( (( ", + " ))) )))) (((((( ( ", + " ) ) )) )) + + + (((( ", + " ))) ) ++ ++ ++ ++ ++ (( ", + " )))) ++++++++++++++++++++++++++++++++++++++ ", + " ) +++ ++ ++ + ++ ", + " + + + ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] +} \ No newline at end of file diff --git a/tests/visual_tests/images/lines-shield-200-200-1.0-agg-reference.png b/tests/visual_tests/images/lines-shield-200-200-1.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..b1201330ac04cd80eb517cdb4454da6498ae4904 GIT binary patch literal 2382 zcmbtWi#ybL7dHtRm(6A5ZvAMO#-%1yj4;hi?)Tg_m%M5bVT?=B4!c;)jxo6uO~O0U zL=$7EC`|53$tcAX8HqKqRF+)6uYLc8JqjTtY%Z z!O0Qty~F+g_#VlfSe_G7FChUVd%F4(U=k9$VK6uhCM6{Whr{(@Fa-q#B_$gwv6@72R-Xh0BzL?Tfrl&Ps{n4&fYgK;x5O5eAy5eBox z+Tw6HXJ=<0AD_#1cH6KW1Ku#sJ($Qs)z#Hx zGGMdW6bb+oN>&!&a5#f3R(?KcYH9+-#iga7wY3$Ll>rv3ySux-9)SA#{{DV07Yq#z zf&2Fb0>OuNA$annyBkbQOn||`XU_l_9u|p2;x`LIApk<*^fVBQ#b9=JVFB!90D#X% zE^`tRG9^xU2j5iY=j&Ucf}`r4J~mUgNX7@>_at80^+d5REMqD`s468B)0wLBwpaQD zx&J|w#?~iuH=TwSrwNDqKVMripXn;PwLZeTSgvX~sqEQo6YmqR6#4HVBr;-ntBzWE z%=C-Aj50 zl5SHs)4$Ig=&Y6_LN%_k9cgnEja0Al{;D_YUVC1SORCr8rDFNQ2dTa`UitmSskyZk zrK{t4npEw4pF!<%<=JRtveq01Eb{=yh*ey6S>dif z*XH91L?B=xX=^{b#iO_n*|bC4(90jAPXGnK2dN%Y z)r%_#y4-lypX1Imo?f0hX%SoNDAz_xs_rQZ#&#!}m~HQLLfy$Xz8*9vj*EJg75p&B z>)eQ=Ow35+IF4YwGeE3RZ(#Jt9BAqM-V==R9IE|qRQs-rjHP7c_)0>^%mhnR>lq&~ zbCiH*jk23QC7d?g{|p7ug#}CQM{Rk;9(oZXa3p0@H)`3n^zndq?h9-nw$X1afl)jh zINLdB^3^;7Zqv2YG@BGlWp+y&jnu=lUABGZPef*`aJOCbMjK)9i5LnSj5Q>!A7VY&4~~sE4mWJ#c(1NtpZVA0|~g zHp|MO0HwEGrfZfdr;l65u>ECK%XyDNa_&veS*Z<3_xke~jpFy11xGYAkjt!iy`?sp z`Q_6so%4V4RjO(9nskmRY|-sz>h1Nd7V|r~+F4OQ*!wV=3n5ISMNO=JyK%=s1b@r> zT=GJw#+ffuSM|?0Z)~Wpge&E3yXCR>xMQv`Tq{G`5>hl5&5a?ntl#}7vX*1;rs$GF z`x{Me(!c-%wf|I_rgi(+_4Q#*gdP6exK`3t-aDN>NYv_3*>hoap-m7odTTV5a`F0d z)F0VttdAeK`{wPmjw-i>GWF(UGE18-fAQJdZY0~5GG>Wo@T;S9WTM9B zJ->U71)@chx#AU5+*-VhEi(IE_|(GBIGH=Z5uTHR^ogL*hcksv-ow0M-y`AH4Prs? zr@JuH!3+qxTKYQRg&n`tNo{Qo~WfY%2|DXd_IQxO2I4%7m@y- z@B>_$-xWq@>o2LgX!>MfyeBbb-m%tsM17*r!XF=C}b@k?6D>f8KIzw%d4-Oxq@xw67lpklbeTcuK3}fznEFm z`kdywNsH0nu)Vv~1=Y3|3yRTkRqG0ru!Y~>!qg`B%Dv>jdDQ}6zPjeNP`93mj!X(! zd|At!ow`390J|9(ZhY=6p?}3@gZ^eJJi#`@WHbQF>9g$!FC+!&>*+A(LwTu?R-JM7 z-Ky-E0UQnC9;~w}^STEmDD{Yl3r25~#zVQD|224=$hRqR_XXvuW(GDb?$HWuXj)X! zvL-$FuSG zkKDEWU2g^b?o?w`?Uia1{ijbIK2HCIVElrlS=#YtFx<(NDLwgr4$8lQh*JKC;Z^o2 SD0=5ll5irp<2ksnU;hUP{Cgw- literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/lines-shield-200-200-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-200-200-2.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..79245d9bc66203552bdeb6fa0aa599661a018113 GIT binary patch literal 2992 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⪚XV2rUH(6AK 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 Di&m^@ literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/lines-shield-600-600-1.0-agg-reference.png b/tests/visual_tests/images/lines-shield-600-600-1.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..a8d2ba95eb7d027cb5a7e837345f5029e5601069 GIT binary patch literal 7036 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 D#w9B> literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/lines-shield-600-600-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-600-600-2.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..d1317ba1b716698977b5f3d190f898efe6c92a5c GIT binary patch literal 7853 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 BZ@>Tm literal 0 HcmV?d00001 diff --git a/tests/visual_tests/images/lines-shield-800-800-2.0-agg-reference.png b/tests/visual_tests/images/lines-shield-800-800-2.0-agg-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..489f43df6007eeb8932beda5ed77216cd51fbae7 GIT binary patch literal 12371 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 literal 0 HcmV?d00001 diff --git a/tests/visual_tests/test.py b/tests/visual_tests/test.py index d149b8cfc..7ed969245 100755 --- a/tests/visual_tests/test.py +++ b/tests/visual_tests/test.py @@ -43,7 +43,7 @@ files = [ # https://github.com/mapnik/mapnik/issues/1696 # https://github.com/mapnik/mapnik/issues/1521 # fails with clang++ on os x - #{'name': "lines-shield", 'sizes': sizes_few_square,'bbox':default_text_box}, + {'name': "lines-shield", 'sizes': sizes_few_square,'bbox':default_text_box}, {'name': "collision", 'sizes':[(600,400)]}, {'name': "marker-svg-opacity"}, {'name': "marker-multi-policy", 'sizes':[(600,400)]}, @@ -103,11 +103,10 @@ class Reporting: NOT_FOUND = 2 OTHER = 3 REPLACE = 4 - def __init__(self, quiet, generate = False, overwrite_failures = False): + def __init__(self, quiet, overwrite_failures = False): self.quiet = quiet self.passed = 0 self.failed = 0 - self.generate = generate self.overwrite_failures = overwrite_failures self.errors = [ #(type, actual, expected, diff, message) ] @@ -119,7 +118,7 @@ class Reporting: else: print '\x1b[31m✘\x1b[0m (\x1b[34m%u different pixels\x1b[0m)' % diff - if self.generate: + if self.overwrite_failures: self.errors.append((self.REPLACE, actual, expected, diff, None)) contents = open(actual, 'r').read() open(expected, 'wb').write(contents) @@ -139,10 +138,9 @@ class Reporting: if self.quiet: sys.stderr.write('\x1b[33m.\x1b[0m') else: - print '\x1b[33m?\x1b[0m (\x1b[34mReference file not found\x1b[0m)' - if self.generate: - contents = open(actual, 'r').read() - open(expected, 'wb').write(contents) + print '\x1b[33m?\x1b[0m (\x1b[34mReference file not found, creating\x1b[0m)' + contents = open(actual, 'r').read() + open(expected, 'wb').write(contents) def other_error(self, expected, message): self.failed += 1 @@ -152,7 +150,7 @@ class Reporting: else: print '\x1b[31m✘\x1b[0m (\x1b[34m%s\x1b[0m)' % message - def summary(self, generate=False): + def summary(self): if len(self.errors) == 0: print '\nAll %s visual tests passed: \x1b[1;32m✓ \x1b[0m' % self.passed return 0 @@ -161,10 +159,7 @@ class Reporting: if error[0] == self.OTHER: print str(idx+1) + ") \x1b[31mfailure to run test:\x1b[0m %s" % error[2] elif error[0] == self.NOT_FOUND: - if self.generate: - print str(idx+1) + ") Generating reference image: '%s'" % error[2] - else: - print str(idx+1) + ")Could not verify %s: No reference image found!" % error[1] + print str(idx+1) + ") Generating reference image: '%s'" % error[2] continue elif error[0] == self.DIFF: print str(idx+1) + ") \x1b[34m%s different pixels\x1b[0m:\n\t%s (\x1b[31mactual\x1b[0m)\n\t%s (\x1b[32mexpected\x1b[0m)" % (error[3], error[1], error[2]) @@ -289,6 +284,6 @@ if __name__ == "__main__": reporting) mapnik.save_map(m, os.path.join(dirname, 'xml_output', "%s-out.xml" % config['name'])) - sys.exit(reporting.summary(generate=True)) + sys.exit(reporting.summary()) else: print "OSM plugin required"