From 10af78dd698d559f860d8fa2f5fc74cbe48e33fa Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Thu, 8 Aug 2024 14:05:20 +0200 Subject: [PATCH 01/10] Visual regression test --- Project.toml | 4 +++- src/utils.jl | 7 +++++-- test/runtests.jl | 4 +++- test/visualreferences/simpleequation.png | Bin 0 -> 6450 bytes test/visualregression_tests.jl | 9 +++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 test/visualreferences/simpleequation.png create mode 100644 test/visualregression_tests.jl diff --git a/Project.toml b/Project.toml index 3578f4b6..f95faaa7 100644 --- a/Project.toml +++ b/Project.toml @@ -40,6 +40,8 @@ OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" +Gtk = "4c0ca9eb-093a-5379-98c5-f87ac0bbbf44" [targets] -test = ["DataFrames", "OffsetArrays", "SymEngine", "SparseArrays", "Test"] +test = ["DataFrames", "OffsetArrays", "SymEngine", "SparseArrays", "VisualRegressionTests", "Gtk", "Test"] diff --git a/src/utils.jl b/src/utils.jl index a5d558fd..e37dc799 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -145,6 +145,7 @@ function render(s::LaTeXString, mime::MIME"image/png"; callshow=true, open=true, dpi=DEFAULT_DPI[], + transparent=true, kw... ) ext = "png" @@ -154,11 +155,13 @@ function render(s::LaTeXString, mime::MIME"image/png"; # prefer tex -> pdf -> png instead if convert === :gs aux_mime = MIME("application/pdf") - cmd = `gs -sDEVICE=pngalpha -dTextAlphaBits=4 -r$dpi -o $name.$ext $aux_name.pdf` + device = transparent ? "pngalpha" : "png16m" + cmd = `gs -sDEVICE=$device -dTextAlphaBits=4 -r$dpi -o $name.$ext $aux_name.pdf` elseif convert === :dvipng aux_mime = MIME("application/x-dvi") + background = transparent ? "Transparent" : "white" deb = debug ? [] : ["-q"] - cmd = `dvipng $(deb...) -bg Transparent -D $dpi -T tight $aux_name.dvi -o $name.$ext` + cmd = `dvipng $(deb...) -bg $background -D $dpi -T tight $aux_name.dvi -o $name.$ext` else error("$convert program not understood") end diff --git a/test/runtests.jl b/test/runtests.jl index 26a58c64..7729998f 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -6,7 +6,9 @@ using LaTeXStrings using Test # Run tests - +if Sys.MACHINE == "x86_64-linux-gnu" + @testset "visual regression tests" begin include("visualregression_tests.jl") end +end @testset "macro test" begin include("macros.jl") end @testset "recipe test" begin include("recipe_test.jl") end @testset "latexify tests" begin include("latexify_test.jl") end diff --git a/test/visualreferences/simpleequation.png b/test/visualreferences/simpleequation.png new file mode 100644 index 0000000000000000000000000000000000000000..47accb3cb2d8d697e9b35549d6f9efc81f2967b6 GIT binary patch literal 6450 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""), transparent=false) + @visualtest testfun joinpath("visualreferences", filename) +end + +latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) + From 93e2c2b971d7c4b1b89ccdba4ffbc7606170b58e Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Thu, 8 Aug 2024 17:03:31 +0200 Subject: [PATCH 02/10] Try to fix CI --- test/runtests.jl | 2 +- test/visualregression_tests.jl | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 7729998f..1006c820 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -6,7 +6,7 @@ using LaTeXStrings using Test # Run tests -if Sys.MACHINE == "x86_64-linux-gnu" +if Sys.islinux() @testset "visual regression tests" begin include("visualregression_tests.jl") end end @testset "macro test" begin include("macros.jl") end diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index f099d9cd..6665a309 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -1,8 +1,11 @@ -using Latexify, VisualRegressionTests, Gtk +using Latexify, VisualRegressionTests +if isinteractive() + using Gtk +end function latexify_VRT(filename, args...; kwargs...) testfun(fname) = render(latexify(args...; kwargs...), MIME"image/png"(); name=replace(fname, r".png$"=>""), transparent=false) - @visualtest testfun joinpath("visualreferences", filename) + @visualtest testfun joinpath("visualreferences", filename) $(isinteractive()) end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) From d9ead6dce329f857709342eca1dd89721d01ed81 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Thu, 8 Aug 2024 17:19:37 +0200 Subject: [PATCH 03/10] Oops --- test/visualregression_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index 6665a309..6a3fb5ab 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -5,7 +5,7 @@ end function latexify_VRT(filename, args...; kwargs...) testfun(fname) = render(latexify(args...; kwargs...), MIME"image/png"(); name=replace(fname, r".png$"=>""), transparent=false) - @visualtest testfun joinpath("visualreferences", filename) $(isinteractive()) + @visualtest testfun joinpath("visualreferences", filename) isinteractive() end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) From 2fedfcc7a69576c7dd40c7a549bf1739cbc863cb Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Thu, 8 Aug 2024 17:32:05 +0200 Subject: [PATCH 04/10] Created a test (should fail now) --- test/visualregression_tests.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index 6a3fb5ab..c0889cd2 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -9,4 +9,5 @@ function latexify_VRT(filename, args...; kwargs...) end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) +latexify_VRT("table.png", [1;2;3;;4;5;6;;7;8;9]; env=:table, booktabs=true, head=["a" "b" "c"]) From 46a3be08543f638857cd6d3a2ff54bac445f0f21 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Fri, 9 Aug 2024 09:24:34 +0200 Subject: [PATCH 05/10] interactive->non-ci --- test/visualregression_tests.jl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index c0889cd2..bab00304 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -1,13 +1,14 @@ using Latexify, VisualRegressionTests -if isinteractive() +is_ci() = parse(Bool, get(ENV, "CI", "false")) +if ~is_ci() using Gtk end function latexify_VRT(filename, args...; kwargs...) testfun(fname) = render(latexify(args...; kwargs...), MIME"image/png"(); name=replace(fname, r".png$"=>""), transparent=false) - @visualtest testfun joinpath("visualreferences", filename) isinteractive() + @visualtest testfun joinpath("visualreferences", filename) ~is_ci() end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) -latexify_VRT("table.png", [1;2;3;;4;5;6;;7;8;9]; env=:table, booktabs=true, head=["a" "b" "c"]) +latexify_VRT("table.png", [1;2;3;;4;5;6;;7;8;9]; env=:table, head=["a" "b" "c"]) From 696155b575c33c12f70e49529561befe982b2de8 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Fri, 9 Aug 2024 09:29:57 +0200 Subject: [PATCH 06/10] Backwards compatibility --- test/visualregression_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index bab00304..1268c17a 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -10,5 +10,5 @@ function latexify_VRT(filename, args...; kwargs...) end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) -latexify_VRT("table.png", [1;2;3;;4;5;6;;7;8;9]; env=:table, head=["a" "b" "c"]) +latexify_VRT("table.png", hcat([1,2,3], [4,5,6], [7;8;9]); env=:table, head=["a" "b" "c"]) From 4b7990bfb471d6419c53e9abfedb4d50c8fdf463 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Fri, 9 Aug 2024 09:34:17 +0200 Subject: [PATCH 07/10] And when we add the image it works --- test/visualreferences/table.png | Bin 0 -> 6595 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/visualreferences/table.png diff --git a/test/visualreferences/table.png b/test/visualreferences/table.png new file mode 100644 index 0000000000000000000000000000000000000000..c5200e4d604d95a4454df94a1db59f1322d1ee48 GIT binary patch literal 6595 zcmcJUcTf}Ezs7?ULx)#DdJ_eyL4qLCqzOVOA}9g^(h{18Kmh3_C{i>iNTeeHK|m=% z0um+C3`hyph!H6PA|QkoL%Dh1KYnxX%>B)sxpVK%?4GmVIWs$F&hGPk&a)5gZ7=h3 ziE{w}0A4Fgv#ZQ@0{~!A0Ul%a67O$TFdLS8S1+5eO!uoMFmE_REnV&b0P3gyK3SqF zjUt&v*>Lk4;f{Cw!r@+FzJSa2HnNwYckYGX^A3ZBhRbS#)InP6nq5VmodAHCzLnXf zYf*)(MI#ZldT$W@?yZ1mc;XDpJJ!(SQE}u8@hux4r&l9;=QhIH z!jG;y2w{SAJYIUR2gF3>5fNJ1gfz6hRuG3eKY+?O6MK`gAUW*uZU#7GX?vLY!L7}IwP zIjuKqjUlW^UonQ5X;eiLii53a*~&OUTp%2+$g&C+TC%ZY4-n@HM^_!w=4IC-Iwl?d zQ|tz}p(ETUBZ_>d16mq`U2$dfJS|9*-7C)4U`D=A;(WAiQ}FfL@vt_whV2NqpSl=T zYo(MqT_>lv{u$*zjA|@J5w9b?L~k`rqG7RQ#nj)zimAg#wWse&($2cY*2R(Upg5Mu zQg%d_JWXvz=g>9l1Uq0E&dXVi&^Yq>ylyORuu;|OFOvr_)LqFYOlJ85Lr)hGH�n z$zC+95wrNBv8D#Z!zq{gxLis0aQg{(@N161sBj<=jE3oDP zm+y9jq(8Ep&z1-tPT5E_a|OcS;$vCD)enBy93gHxQl5{OlVRXP?oUvjciEzBEToH4Y#(Q|04rEOqlU@A zcgaceW@s5bdZI_nwFgQWojBa`Q1)C zAAKO%Q(Mi^&XCX?I7ZVi$zfTd$T@7v#hUcRLx$<~gqbmIVEAb-R1<=W3A*vA62 zbd~apdYMr$j^TwP*Fs-}?NcgyPfbK523;gNQbR!= zwMO`C8Pqj5e*fQM0y**dAx^1No$TeJ6U_$&60xJJIqTiv!FGCYQ}XHT9VjZ~n)mwU z<)R1s&{HM*gJF(In4Lr@ip&*SJ6K(+M)*m2vd=p9{8dZE!^+HEAKII`u^Mhv*PRJu zbn)7{eCmhQ!4&an7Ysf}M1^opc?k{M>r~%QE0~WqVAC2m!ibSjuhL5!j--MZQV(lt zpxgI%zVjV>il)EkkEM>*{YH32759oiGwAQp_>);q3W5CFz{?gMEG?6_Y$O-uJ0fqLmAT+A>-mTt1_qqY?Mvu&acO{RHO^Y9oNoB9qb!?(U zuY~CRN-FL%rCLfn=^B#UYl0ZF7-=-rQ^AlI=(7Z-P;SS>1@fLAqNx&=yw}&)l@YB` zUojA3bB*%Nit&I2Z2ii!m8xKp{?McHYAQC^Rs5H0!(=@*yG=gD-&h`-n7{33S5N` z;WeG%x{~EeST}V{Fc~{*?wu_A91CRqeQ*#g+T+)x3AxwiW*Fy6`_L1=AM(^!tleN_ zcL*4b^|N|Mv8ol!>db5a@~Nm z*WcGG+9L~?#F8}#NIqBGV_BejK4Gj<6c7`=^XNvN_MYkqXX3!eo2nv&g|MdSclCjy z90%(f^P#%HA~*M2t;E#Fa~ryrUQwRf2EE2Z;r0!uc~$eEDcg99mq9F%Nvk=GW5_VDnqLN3il*rU*LsruI{^oNWL z4P}$z$DmbSFw%M8u^}4R^~gw)kH33!={_K$LaZ8gV~eI&dH!l5z- z28L(j$m{upg)!d(Bp6~>l?y}7MM(*bZT$u{cn=^7<$_70I-thgG?a9)QpQ(|dBdp; zd6df0;i2Io?h#5_bW2a^^>x=g?Z5q=pEE{^2Rl6m%ETocW$)X0$HrJLL0?elW9$Xe zi!oUxn6$_k(C5bey*(iQcm91TgqLK_WsFg9YMLp_*p?^TC6GyS_Ftdw+9dqYNyy~* zBaJt1QaY|LZS2l8ABk#3vBqIregI9cN5}`=#jg*;qp(c;~gy>Tg7o|=dA{M z&KA0DBdLYhcPHf*z;nNS@-~tdV^8e+@YHu2Q@3v*nv(Lj2F?8&r2K!;oc~I#|9XVQ z`#T+~1O+SR61N7a(m=t$uC6lw35-L1;e> zg9&D$szV@LDow%4hWP6&;%{claTK+`k)=xD!h;BnXjm!}3oVffJf=Ig8RgGkHnaX^ zE?ApQ;R*J=|1ZbS%iuhTAYff0{XXuj>_blU1?v~)udq4CDt_=Mm6K(%wlflz<6v zxu&2BChmtTt>vkO#VD4qGY)b_cDq``kGN4;e{ea^`!> z8ZA}CFhhQbmI{08>k@9E86lQlR-^pYNal~TkohoL{0ec*(&(l2$7>RZvhvdvr%SLx z-p1q0x?fDmK(q;G+jXh})Qqi%WNF_Fh>WfEOBM4^|VeFDR0;)O&o z6z?hgu}YZpPr?H8GdU|3cJf zIEZT{^~XN4IA%j+8vwAN?u(dzly}**PBF2I3b!>lZcJWzz4S$J9ep08!459vWb8Dl zGBh7jM7jdx-QFF~CRZ#6_Hw*+X1wj54$$2CjL-ZYuk*R=wqb7RvTnA)&>W)%hB8|G zQ{7h=dJ8_C0KVkmU%3q8N!vXa@vt}vhC)w{27S`aUVbdxtJxHsJy$&iV~pdrPgTk8{}(fm$;ffB=wy(7t!3=^gzLktM*F{$BUg=&5OU?z-k>Qh5gfo`VISE z=2tE2Hph1p}85+`AlBQP+3g^)tWKx;XWd=={B!nm^SN_ z$hc#jYZ<73iDWcvlQqae$iPpcxlC~aOd6nZv&XHzcF6>(^K(DabIseH6H>~M_mawT z3Do7kcLmbahFdY*A_Bd)bZ1FrP!wXN#ptzz)3Z=L0K0m#b^)3$y1Fj3)lva#!PLIJ zWYJ?}i+maQCTY=@2t^HYvn&2;m4n_atJc@D+B|pz6aP4g{FZQ_bOQRP{sdadL1+Y@ zKCj5J5`Y>Ek9u(_SQp zl*mnu>#ZH=XY|n6uTbiRhVUM_xc40E~!+oy!vNM^9NEg zr+0T3PH1$Se9r(;w<6q2hWv@(alIzL_L;@#VoKY5)CzWOIlSB`-3utiE1IW2r1K)n zOEk~dAfT?5w91^roUUs8Igo%<+NgokAGvFs6X&2y?qPBd$&_-ag|w?dG}Njj+m>G{ zilLN9x!)lVH62V5fTp-)P>5FW4R~4ad zW0f*6!9;Lntybz|{Hy@m$FVdifU^f41eB|%j;b8v#aGwV)Km3`V0C!VxAom0vr@y- zv=Fd6%M9lnYOHjJxj$+r3uK7&43}LRJY4# zcuXS;xC3uT9-!uQE1XXJZD_-RmCNql$pLBY<3KsR8M333FtMHzJ!6qI_Z;)*gpTA; zIx{h-ijchgPFbCB4*l!yT1V{t`i-@x&epgFPFOS6gLv_ewJ{m+!p-D0oOQcW#)$YyduGle zhVXK67Dd2&ojbo=+~U1IB%)b&PP) z^*W3fcm)#PY81Ybju=eix8`U3w$YW&sUki+{Kber>i)_&D8}{gF&P{anj)`ji=6d8 z)RY5(WD`+q7-+)a^ldiZHa9+xGoE{SowXwiVgEor7}PM)G6+L$%AD37v^Lq}Ha+HZ z)Nr(|%KLEEN@+^>?EuRxFTb46%1?m2&C-IC!jxY@;?xO1eHIA=If*A>We@IVDFT1y{hA7D6u4M~I7GEI)t#2aybkNmSang*Z;!{@ zz^=RArjuauVRJuDOKt~;elepMyx`4|XO8O`8!kJP0p#{g`N zvR@geobs6s`}iPllwGWfTepZHgviDPOWG_%w{u9F5G(!=)A4066egI84I$-maM=*Q zg|spbZn>Xqx;S~3usJt(iqPmf@?vh|#^m;LxL(OnJ#`|Y&Uu^Z(pAR6q|Z-fl!oO% z0pFOz8dYB%o2r?m$Ep)Hqx89`54c8xYi2^=a5Ule#e9N!o0MDE3JcDq_PCrLTlbH= zBe^{T_i#pD#^Gt4Q@UJk1)j2{l%L*r@>b8C{Siy*qMgbEa5So{h8Mnf%WM0i8b&NQTuf0?1 zH*LEssgl39As^vh`ES;ZBw7T8p+&77*^W%v7NJcG>YR%PzHo?f3#w4WVc80C3`ka$NqD? zcCKYo8cnTbhvhf$^mRByNa(QTIhu3qn=FdC05n?e(O^hxF1;LkRRH18-||y^WhX#v z&*7xH6u^u)1MFD{d$J+Fw`wQkbnbq!ghd+sHVUo09hZ!)XHp^q2;ad+U9hpUp>WF8 zOsSDD(fNNaT�G<4D5PQ#;?kR}xh z%e>gaCYHn>L@}O+-Kpt(llR#LAlwA+?72Q466a-x@nmc$Gl=CE&Zl$X!fS@HXU(Cn z4~0&C_qw!a75`;^lj`DmT>v)FRrWun0{dY`izDfUQ1m}hCd zkt26N`@}b4bNJU=ZN<@(YnxKW-FyS2(!-sfIyG6tue}S^B3nPQJ*srRTAVoV@;-Jk zG$E8Qf?+d&Sc}Z6VKyc)>CDH z&~fPd!+m Date: Fri, 9 Aug 2024 09:46:49 +0200 Subject: [PATCH 08/10] Add another test --- test/visualreferences/ket.png | Bin 0 -> 2135 bytes test/visualregression_tests.jl | 7 +++++++ 2 files changed, 7 insertions(+) create mode 100644 test/visualreferences/ket.png diff --git a/test/visualreferences/ket.png b/test/visualreferences/ket.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd61b7dbd1b96fc9034a7ff74070a27094c418d GIT binary patch literal 2135 zcmV-d2&ngoP)$61q=hX^MjqhVzKLiq~po#cE)$)yijmU*7H-|u_(-UlYM zVMe(B>zZ;$()%r?ln}CBuctL^5z$D)r7&;ep-hm`vU_=XfquE&ZXey2pM$!tVaVC<_b^-meBYP7lrlj^%Z?BdMG+z7 z{x(->$18rumi{vG!NO4ul}^#?dE8_8wg#79fuS_vymNyC5fqy z#q6NVu;Y*-Xg0F5EGrB{vN#r+pwX}cND=hCva9R5EXyQG@;sj&b%RcMI-M5fO~ft3 z4oacYG)>b~q5MLEpx(L^*fpi_Da$elUW@QN?|3}&WA^*K_z?rJTa79?p8l@x-;DKo z%}Ie%nx+ZEuu~94DV2RLBtiORR}=*oTo{I2Snxfi6u#k|tSAcn#rgYcnns~*-+?*G zP8<=6qS$V?lv3Navn=B;_U-Kr4saX?|F)3?X_g&tE2Z>WPfgR0|>+LS}2?*&-0MYKoX==c3@G0=5E!gihes_yWL9N#k7*+ z*~v}}t&J}H;nQxGWyqFb2-4nK4}Wycs3v;* z-?O510r|gShq0>FGT@^G{i|?M5qx?jggA~fYN%CJ#fL`6ain^ih&YbpI6fQ>bzQ5i zJ?U+m@~jQWz0MdyMz49I@-5X&Sx1`XL7H z?*>Y#uDCbmm3AU__{#$D(YwnSL6augj;jKTb%!Ai@@j@1fDaOjSAmCYja|o>lL~bW z6Eta(6%9t@n)2y}9U#whn5;3@BnD}ks@4C%Sz#DrdR+&r)#{#;tgKW0`$ky12qn%U_A0DSz7G|pH z%w|%7{ZWFnMd!8reKSzNiNL_Y3-Al$&1yxmbJetm= z%or1YR&oH~B6*&tD-Zirz;x`kZ8=$v`zsWZ8LYulL}hC@7_{^hh)p zI#)n0jDWQolv2#WcLV-ina~Vg@zA@3g|CK@S}oQ&9YfGm*)>hWhcWRjWBVGsoT z0r-)8Q5hVAS;eEhTkuyU+v8s3K-$MHN5hCo<%**Ow+ zQA$0}>EJ5@5#V0<1FHvGMAxqFaWCuaWCHHSE zWC@yq?0B83nc+J4p(Hcgb{{AZGy~c3)Uui7yLq0sZTrlQjsiiZ%Wf$oHXLdMnJ&A< znJ^q`1eq>7$Q}kku;l*Dgc?Cc%Z}HnKC{7YGL#82T6RkzvEfiA$XwYig~Wzq3PI+| zZYd--98(A~S9UOfFNMU$VhTb1vV+2y#~Sjk>rzUWp$>`rQ#OU5{{Zw&r%QXT1Ka=r N002ovPDHLkV1k4M0oDKj literal 0 HcmV?d00001 diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index 1268c17a..c222b3a9 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -12,3 +12,10 @@ end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) latexify_VRT("table.png", hcat([1,2,3], [4,5,6], [7;8;9]); env=:table, head=["a" "b" "c"]) +struct Ket{T} + x::T +end +@latexrecipe function f(x::Ket) + return Expr(:latexifymerge, "\\left|", x.x, "\\right>") +end +latexify_VRT("ket.png", :($(Ket(:a)) + $(Ket(:b)))) From 098f13f15579bbf9915a15cec728af390e3d7002 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Fri, 9 Aug 2024 16:29:14 +0200 Subject: [PATCH 09/10] If the test is too hard, lower the required score to pass --- test/visualregression_tests.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index c222b3a9..d87915b3 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -6,7 +6,7 @@ end function latexify_VRT(filename, args...; kwargs...) testfun(fname) = render(latexify(args...; kwargs...), MIME"image/png"(); name=replace(fname, r".png$"=>""), transparent=false) - @visualtest testfun joinpath("visualreferences", filename) ~is_ci() + @visualtest testfun joinpath("visualreferences", filename) ~is_ci() 0.01 end latexify_VRT("simpleequation.png", :(x^2-2y_a*exp(3)∈[1,2,3]); cdot=false) From 3d2d8ca13c18fb13d2aae8a03e0d51af2afab438 Mon Sep 17 00:00:00 2001 From: David Gustavsson Date: Fri, 9 Aug 2024 16:43:17 +0200 Subject: [PATCH 10/10] Allow Windows and Mac users to run visual regression tests in the safety of their own homes --- test/runtests.jl | 6 +++++- test/visualregression_tests.jl | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 1006c820..f9eefc72 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -5,8 +5,12 @@ using Latexify using LaTeXStrings using Test +is_ci() = parse(Bool, get(ENV, "CI", "false")) + # Run tests -if Sys.islinux() + +if ~is_ci() || Sys.islinux() + # Tests that for some reason don't run on Mac or Windows CI go here @testset "visual regression tests" begin include("visualregression_tests.jl") end end @testset "macro test" begin include("macros.jl") end diff --git a/test/visualregression_tests.jl b/test/visualregression_tests.jl index d87915b3..52303ef1 100644 --- a/test/visualregression_tests.jl +++ b/test/visualregression_tests.jl @@ -1,5 +1,4 @@ using Latexify, VisualRegressionTests -is_ci() = parse(Bool, get(ENV, "CI", "false")) if ~is_ci() using Gtk end