From f55b2f84f57a8713a8ca9e43b643bf3f97f66cf6 Mon Sep 17 00:00:00 2001 From: Lukas Forer Date: Wed, 30 Aug 2023 10:51:45 +0200 Subject: [PATCH] Update landing page and documentation (#114) * Improve docs and landing page * Update index and add some icons * Update docs for snapshot testing * Fix typos in documentation --- docs/about.md | 29 ++- docs/assets/example.png | Bin 0 -> 121687 bytes docs/{ => docs}/assertions/assertions.md | 0 docs/{ => docs}/assertions/fasta.md | 0 docs/{ => docs}/assertions/files.md | 0 docs/{ => docs}/assertions/libraries.md | 0 .../assertions/regular-expressions.md | 0 docs/{ => docs}/assertions/snapshots.md | 23 +- docs/{ => docs}/cli/clean.md | 0 docs/{ => docs}/cli/generate.md | 0 docs/{ => docs}/cli/init.md | 2 +- docs/{ => docs}/cli/list.md | 0 docs/{ => docs}/cli/test.md | 0 docs/{ => docs}/configuration.md | 0 docs/{ => docs}/getting-started.md | 2 +- docs/{ => docs}/nftest_pipelines.md | 0 docs/{ => docs}/plugins/developing-plugins.md | 0 docs/{ => docs}/plugins/using-plugins.md | 0 docs/{ => docs}/running-tests.md | 0 docs/{ => docs}/testcases/global_variables.md | 0 docs/docs/testcases/index.md | 1 + .../{ => docs}/testcases/nextflow_function.md | 0 .../{ => docs}/testcases/nextflow_pipeline.md | 0 docs/{ => docs}/testcases/nextflow_process.md | 0 .../{ => docs}/testcases/nextflow_workflow.md | 0 docs/index.md | 199 +++++++++++++----- docs/installation.md | 17 +- docs/logo.svg | 71 +++++++ docs/resources.md | 48 +++++ docs/style.css | 29 +++ mkdocs.yml | 95 +++++---- 31 files changed, 404 insertions(+), 112 deletions(-) create mode 100644 docs/assets/example.png rename docs/{ => docs}/assertions/assertions.md (100%) rename docs/{ => docs}/assertions/fasta.md (100%) rename docs/{ => docs}/assertions/files.md (100%) rename docs/{ => docs}/assertions/libraries.md (100%) rename docs/{ => docs}/assertions/regular-expressions.md (100%) rename docs/{ => docs}/assertions/snapshots.md (94%) rename docs/{ => docs}/cli/clean.md (100%) rename docs/{ => docs}/cli/generate.md (100%) rename docs/{ => docs}/cli/init.md (68%) rename docs/{ => docs}/cli/list.md (100%) rename docs/{ => docs}/cli/test.md (100%) rename docs/{ => docs}/configuration.md (100%) rename docs/{ => docs}/getting-started.md (99%) rename docs/{ => docs}/nftest_pipelines.md (100%) rename docs/{ => docs}/plugins/developing-plugins.md (100%) rename docs/{ => docs}/plugins/using-plugins.md (100%) rename docs/{ => docs}/running-tests.md (100%) rename docs/{ => docs}/testcases/global_variables.md (100%) create mode 100644 docs/docs/testcases/index.md rename docs/{ => docs}/testcases/nextflow_function.md (100%) rename docs/{ => docs}/testcases/nextflow_pipeline.md (100%) rename docs/{ => docs}/testcases/nextflow_process.md (100%) rename docs/{ => docs}/testcases/nextflow_workflow.md (100%) create mode 100644 docs/logo.svg create mode 100644 docs/resources.md create mode 100644 docs/style.css diff --git a/docs/about.md b/docs/about.md index 689e95f0..7bdbb40c 100644 --- a/docs/about.md +++ b/docs/about.md @@ -1 +1,28 @@ -nf-test has been created by [Lukas Forer](https://twitter.com/lukfor) and [Sebastian Schönherr](https://twitter.com/seppinho). +--- +hide: + - navigation + - toc +--- + +# About + +nf-test has been created by [Lukas Forer](https://twitter.com/lukfor) and [Sebastian Schönherr](https://twitter.com/seppinho) and is MIT Licensed. + + +[![@lukfor](https://avatars.githubusercontent.com/u/210220?s=64&v=4)](https://github.com/lukfor) +[![@seppinho](https://avatars.githubusercontent.com/u/1942824?s=64&v=4)](https://github.com/seppinho) + +## Contributors + +[![@aaron-fishman-achillestx](https://avatars.githubusercontent.com/u/114482275?s=64&v=4)](https://github.com/aaron-fishman-achillestx) +[![@ivopieniak](https://avatars.githubusercontent.com/u/44971105?s=64&v=4)](https://github.com/ivopieniak) +[![@byb121](https://avatars.githubusercontent.com/u/3796450?s=64&v=4)](https://github.com/byb121) +[![@AstrobioMike](https://avatars.githubusercontent.com/u/13923308?s=64&v=4)](https://github.com/AstrobioMike) +[![@Emiller88](https://avatars.githubusercontent.com/u/20095261?s=64&v=4)](https://github.com/Emiller88) + + +## Statistics + +**GitHub**:
![release downloads](https://img.shields.io/github/downloads/askimed/nf-test/total) + +**Bioconda**:
![conda downloads](https://anaconda.org/bioconda/nf-test/badges/downloads.svg) \ No newline at end of file diff --git a/docs/assets/example.png b/docs/assets/example.png new file mode 100644 index 0000000000000000000000000000000000000000..11d61f846339ca3bd388191dabca264de153d58c GIT binary patch literal 121687 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

7qEgs-Q@5p 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 %Y)C71a17`)CRnxQNkkI&SWO-)P-`|VHXh`o z`OA8Js&c=RnEg5G|F%PapL_lRGla^Xe9iB+{|wgu`OI(I`cFXB|Ifzf#Uh@-9~R*M zHSd6uHRANlT-!v)h{gR>xt^%Dv0d4^$^>$S)d5FKL>Z@yZ27X4u%kL_a8D~L!t2+s z+aM6at}byp28ISyjZRr$Pk4G<&VUzY!a{%V_D9uW1y%zNtjenI?Q7!qF87H;i-F;B ze8*lN9TeyJzm{Fq7goY%$}iZskXf1N^hog0Nj_01!LhO=w2)zz96~W(INHCVi zp6f>f!G8{t7ZWy}rd=;+*pcRpxwErgw+`^|&he}cNp$=ir$o_L5U8yAE^H=D10)_f z&{+yb(vUDXhvVvFZehKG5*YF=G(V)7&Byz)>^)1cr#StwuJn`XVr#NF^4Fl}b`i^) zdr@EJ#l+0TjIHOSxpTg%ZfL9-+Sa+Guga1@$%bRwDNd;QBReOURo#b z9%|jtTHVoKHxUaz8{9unx8CpO3=+=$m_hTA2o4p94vuwv`0N`qS*h@VV0(yMA%r*0 zJFBlKmKrKbWYRD1A?HIR;Q>A6|Co@D8z0<&Y9Ia?H{%1G`U{!J{_aS@p+p`H@%k}s zIxzbJV`UNVym#8?cy0gbv7+flE~Kb|9Wyu3VoJiZ?jMtw9|=)aeb67Da*9m71tJle z$s*kp>f&%d0c68Z`Ya-fra6CsYC!UJAipQp$hb!Z(tB`k!`X;?XJ!bVJx7yJl6nSs zav$3LPEJq71Y)szqE@z|JLu?sK8CkmK8#d;{fa3%QL-8I>+|!K&G2xS&aNFlQd(+i z<6X1!&VGIU#jTmfimk&vT|DVfL?A>67Kp1g(g5kF*jEVLV_@LJ0_8b29?ts%_lJ3{ zz1e#Cc!F~RhfPDr{ppd85I(=5LcL%GJq%*v52G=lQtj);gNEP&yc_g7)k`lW2Lw9c zLNf2D2;nC-u<$J~m=25}$`= z*A%kP7*4i<0#6bB?kCo0@?y;m%*8zxweRh2>%Ta5X6)$>J;%fZ&PA75<~<%S|| zxB*hPToq;mh-mO{j!jp-ZEvFR7Fal|ub^|+M2F|QvN9(>!Pj>4eE*h6kG%j%MIOsg zD$WOB^NYPy^g)Xi!7Nyrv{c`8he9QRRFZBlbzT4DIej45>Rt8FJ8{Aqgs3N+5ZK1f zGHrs@ZR^E;I`uApr_+ z8(po+k|?aVt%=-%i<2&SwmcUs09<};@;0|v`=#wz#E^o`yt3BCv zEV?#oD79@V`nGUee(3L0{D!?IbOY?V;quN=kdX1l;k>=qr4hQOU-?_tVZw3PjD*RS z>xCuI=Z~Ye>F626g;d=ac7dG5%C$gdx&c;RK?(6dD4tNZ1#V_?cuQ$89W#BPd)B8b z+PUsb#pTY(s^-jr8EgSII= zRdK9jXjDbT6%RKzUMOPXd467bwOf)c#1o;E8tq->fR@kO+@;5ud@F*VcphAgkN*e zdte}B#>dH<8VQPe{p#JIYlAPjL8YOQhuiF^YEM|>iyD=Xb=yMsX?vU3Tl;!CYQsK8 zzE=lD+RI`F$L`H-v3X+h6qBoBe!W%{!k8He~X) z`Z^LF;7fSln@p%;Yl9C~czX024BnbX#8>}XmZg0tpV~OAH_T+h4<#SRqj8fL{FEEC z=)T-Cvt)90QayanDd%G-odrJP{f;&lb%?}gE}x3k;&VX8C|H2s)`_L>agcXZJ-kSm z0WP-o)a9F;^N6UtZ!u}NZ<+FF{MAxt|Mj$CnX_mA=fb9DhMy|#RVU@-T;tFpdum49 z#KN8UjGe|{WD6|Y@tb~?!)7;)c0`|a<3*$ImQbc@d7}n$7dLMDr_UzKt zz+MX`sj6A;^Gyk%UN96i3_lz!nHtqWBAW!~PGJpGjZ+heE+ z3i^{!8~1oo=p_+^8G7eC6^qejjw*aBtZRqK-xM!YUiw?O4ErF$08jhU$J;w(%yi}W zI<$3gGFWSJHN?cdchV-bXKJXfh1VfW_5Gx_eZ0+DpN}87>efWz?u2|ME{Z^LXeb}C zYqiqkJF?E<3=UT})OHGEA{rH~??D#ER9$EfI!ir|&RD)T_Oqm`{u@n&eV;hxiPOuj z`=y};Mx9Ms($M3nRL#}zNGK`PkJifgtw$Qq*6r3w~ z&W1PdAmMQ~Bk4I0>C{u$))(DbTT1&J*mdtp?C^_x`B&l;yCnxsLHzKJH58Wh)OhK58w1H>tGSW4ZJh_MrV!`>8OAc=A)d#ay}P%ocm^JJNxbfMQ5Rl^)dn8t z*7~W<7g4nNLH(>cuf*k`#$+mhtD>M``Za~1VmDa-ezLao7>~I;EdGrbA+932YTSY} z2cA}3U38JJuA?5gzxFiubWtfT<}${Gw!Zehi`op>cFwQ4^Tq?1hyzOn!N$Yj8L31K zkt7d6P2%I`J?EA2Y}Q4>0%h0xST)^U!?}^U;0|sty^9;g!&{?uwJc*OXW%6_pMzYi zZ>>S)k7!d?;MZz%g;9{MW3qw$s~vvi9CbyhMY(t^iQl>@7F|Our%WkL2}ytl44J~O zzmb`dik+AwCOx5Mx$s=rFp3z_8v}dZ?rGeD=bE_?f?FD`Q)X(G>Url+3(6}GKW1*H zgyHx}hvR<2WkJjBDJ5KVz0jYzt$lp>>aY-XIQ;Ms8MTk8|I+S!?{KMcOELb_HR(yY zZM)lTc;8THuI9nR>ZodA81#UipEt$b_ddErv*9VcOFsOt_uAe=PK7n2M>y@l0&_Lr zr5T~+M(7l3!c@!OY)c^;u8ik~w(5J@MswS_x_Ip4+CxYMpU=PCI;b$YC2>QMY~9zJ zS>G5;#Vfx$!E66!>0@A?UjaQpXkAXAaJ!{7v)L`~-g*|8H$^b#8=T%gV((?{roiJr zWBBpq@<%cOdN2E()u=#576VT!4dQ#J|IyxeMm4o{?S_tk6a_*DML~K{L8(DeP$^1P zS^}sb9i;anO%za3h)B^BIwB~&1__ALkq!cagx*_13wOtM65sEh_x`zKd_T_l_MI zs$YKg){5HA+C%$H4l9w!>&l)V*#=I;??%qOte;VHp+PES4)a-|x{L7_dtB%)vgjW=99^ciwOr3)wSCb?2*-=+5mO|HklpqXROnSpb&W2=U{0&kfAEEIe^a@>adQgVg?V{Gl(# zc)%Bm@0J+jXTpAwOY6^)I;Ua}riiVEReJXa>>@INuTr=^KpMnjA|&7VAL>)Nug){G zI_EUpbMuOh-`-ThD4)>2zi~gNBf1WUENN-0o~17hQ(sz0WWR2zdR$v0%0g|+tLNOe zI=s_>sBd{^2&w^;VSD;YZu7m;Cuk*Nlzk#**%y&96 z$!=+s5Erd%SG@DAZY-y#h3`&D^Wn+mt2h2e3!}%$)X?#{!|peXDtD zSu?d|OeSPwp4>;?wgmYs8fmc0gKO7|b(5|Jfr108gFr&9rXazf%eg#xgK7ejb-wt3 z1j*vLtJ0_M&lS`QE*^6G>=Xl^9k~fwN#Rvy{*c#MtYxzmX_w}Jx3k8DzOZB=G zxi{!AI+bbn-P}Gq7L%n1(&H&-2FFL!w;1xe(7Y@=d`wNCKVTm!5n zj#UC_)8kT?$@pZk5oPqcJV$OQ`%pvT z>ikbFE?y7kNU4`dU(0*i430h5f~{H0TmGz}(OV^&+SLcLDjmi$$jP9&Ot^_NqqqT;18m|09cUOQzhz%rlO<(YGb+Tl7ebtf>ae6v?0Od2Bt8!zd}To~AB zZsE_wAMyLPDJA@Zz4X-^I)qQ9b22%?K>Z+7BTP|Q@cx6EfT@rdqTVsPwJ{cJ$*{-O z*g$x>lA@pbHyfKgYO)pM26OASHL2TOPC}z{d5xA;PI9;V?9XI)ty_cQVrTE~mnyxH zSc^GTk-@6uw$n9G_~D{WJ}wp-%H(%<-yZzeD(x%9+E0UlS#}m9t2#-uteJ8RGujv= zN3D4CTJbC&*du04M=?>tKIy8S?eU=deNps6OuVwkcGuoc)wy;hz{D#`Q!6oB0m4*} z;eBPNYKMOR*y_6egN?Tp4zR_ZJvwQ3-L&^n5nxarLrcII+-6|&o4z}g8ZL>t08H8~ z`J-9XJr*vkXTES`KviuAiY+bNw1zXQ#mpPK?N$|DU4o^RJ_Ajv^2^D+Mg{a~-)?Zo zYUaPiGJ@HPn=CxQ%+W#)pymi$Er6h+>bWJ%k#p64n;l~BeD5m=G*BIF?(&a%u)N7$ z%gQerE`M0oU#s5}O;G{IFUu^^yG}|CWT&&#HK7d|D;)~1mnd}2ih1shw$AbGIpEro z;d73MN(1mMN8q1oVuv&u9WwNo$XY(%jm{8gIA!uYX0@cta|xz8*|fILVTCUQ{tTui zv-6e+%BjM^UAi7OtDe6!az7JC*>Eu=;rPoFx$}3YKUnPQnB0=uU;g|;)$c>u$hD+N zR_G~5CO%KeCa^%8di_M-{ro8feHouNrPwdx^IM5pg+gaw8|GyjgXx|^+>xM+Gg!a% zwq0*}^lf2-CGuxdieGF&aocNyj0^J8K{G2$YvJGOf@%1_u zM9nSzHL?-Sq{LCP*P1Wc_U+Qtz_Ij!^&BdC z_E7pZvv(@H2V!-gi+c3MJYnhLx6%5B<>DxxahHSsCEJ@AGjOnaaF5g`9ooyU?HFF z)t9cA8c`smbE6NsNRN5#ZjYr# z@Q?27JsrX&6pJi|boa@ak881e&So3mJWkDW7#esDyDc8wtMG{*7m0P^FZtqLJwF8Z zTUZ)G}&+N(Lc zGFesRq9ng9A|k}Upb0? zBfhjhrt8W0dYYHw`d5mvCMSslOW*9Ii|*6o7X1 zpvQH8ncre|Eq23e^Q?i$;v0SUhkWJQxcYPOrjZ;j%-wnI!|0Kl*ya(Z5~|HdkYn~W zy@msS)fzOuqlUPUjh7{RDCUIxRWdzarzLI&S_@}FiPH0r>lD+s$Lu(9F#4JF?HjfC zY1mjXtNYbI=3gnpP70%CMqxg_lU4rGyZ4b=R$6m%?AyMK%{BLsb}6~Yskdri^Yb2C?RrCXnL^j_ z86}p0wc!-{h7S_y-+Di<+&LaJ;E^hAflL6~#AvWID#t2Za&PJs5i~b6aoDgod#W~9 z$yyo`qj0c+HzFsd46$T11w&M`dFpJ}S^L64d)@nIPra7Qu@n7@MeQs&k5+4BbTxpE zNiy=}bI0BV9afJ|_HIjC#G*VgXV80C?3d)l;Uzg)`?t6ILV8L^?z-Yea{~tb=ict6 z#ReYT3Bd1ejn%ESHw9#@-rNnK2|W;j%GlYlB5TR@7?I)Gm@KuL!p~%I*Gc8$y)&O? z?;KMJQZb;+g=89I!b$X&D=(EvmqSB}%%D=tg8=pANy1%pxg?ovb zDr^BC51R1|vyoEfH8gVRDOiwK2tDKI?dH`WY9=T+KAm*-N~Tx+@|0@?tg{-XX*!Rc zr3qwDN!+`|A?p?2`}DVD50uW+XH4mSnxOe83dHzSV>@mo)9Jvz*B!$WoV{tNEOfH?A<7WEp*`SQM+vG+8KOo8~WXbT|0i11#U3_rUkOijOXRgqoN6rnXH63%)X zu_k18$neIiT#u!SwU}kB0-il35Wj_Bw;EDuM|7@DRh3a~{&n#|U3)Frwx=YEzWjyIE0o-1Kf zVdbvAF-`Id>xFe(cCVi&AI?0t*KPnkKo1sYs9Y>j$C9JArq0lt!`?1dj0p;-^zIp* zF%2~Hy0xlmvG~9&^^9Hb>v)eRv&9`r1ZYYmq(kz5htB4yZ+9ZFOWiU|sM$!Qp4ywU zC+WdlR1o#*RflTjcDBHs^JQE2p_1+}eDmc(`g(`F_G&!x8PeVZ=2U8bChe?oX6a1< z3d9OGAIC`L&31{3wH@!>a&@$KpVYw7;?f02+A7}I`C`1pmq1qe)s^h6 zjvl6aYq@o;fp1{f6r4(za1?bG`LL6=Xu;h50->IMJ` zz4e<&>++$LF#ty?9BW8^($pwfxyU!-+-)KXRiHlaa_d?Rhf5(y2=;Za(H~Op?wk{2 zm~m@ka>*a4Z+7bdadGe5ui~a5IgNwg4KLu2cZ;)GYI=Lz#kI78BMPzQC%Esg&R0Dj zn;2bZ;2dvLS9e--I`T$X&%J(mg2oem0jxpw>n;E%9>4w>_3*>m%{wbO?w+k`S^B&# z-OUEr{S#G?Ko8Zzv(IL6*Zq$T`Df2Y(lhMO+~=;7iOYZExBr;}I=Z~I{aNQl^x(;Q zmUBZW%SOKVm9=)%*m{krtxCHC5U~mxG5Yt(4*1veJ{;Fp!wAOsMC$2{OUg9}h6|k8 zUwynhmCL`_>7hi9v+uz>xeAD|{1GZbFOErhd{hD!3eP&Twnp_Jy` zYRd|?ax3sl+kH?E{}R`$fxI_MIoL-0uJmOEXEU`hK=V+(dbCi_ty&s9aJOww9}UggzR zbxzsD6tCqE5fPq_*pc~N4JUc1;<9FYwrrlC719+}zELtJqh3?vD|&6K3Jmi)vO5cg zGI@T10nx|SZrRzz_Yr)27x86G$_)kb@@ z-CJHWwQ&9DUj|J4eIZ8H6Jm9V=sr4numteimbKSxn6PS6Mfa?<{l|iWksR*Ox48}+ z?2@pj{vK7@VhU2l+njAC#sb=xxe5oe#3Q#F(S>ynftu)zp<4ni^waLLrV{kl ze3hPRkwdzkpMk{tpsb1D>yqBc<@KBGxApSJvl2_7;h_bKWj*Na7jK>qW1&LrT+4Vz z-#A&+`?3>@h_~F~I>_Fp5{DEyS1W|VB4#X;NU-DWUur{g4GcYtd{&46{oP8sbW(g(LlC-6%v5<5j z2w)(E7!Z%I{Y;L;2>l5G0APXqmXOj2BMhP!3aGq{C&ZMF;2$yNzuW!b+y8fF=0wzHyl~*#Iag%{)g~*d>fFkjVDl6#{@K{{nDT^Ibem_<;!C&TqwAYf}+Y0gHMTlP%VFSbi&t zfQoqsEkWkGKV|MiYhU##!y>=BF~Z=wiOfUJLJJOA`x~2hppbR|UO9f!m{`v^P7{>k z4eQTDBb@wuT_(l#9LLF9mu?i8pDX+NCAO1T$7)})5X?UPr`gM}ot^3KLJ!)-wzbJ& zU&n?wJOCdiq%hyr7$CFuB{Si9mkhbHW5G(EVuzhibEaZAf^ARI0XowSMN79Hlyaw1{@U)k7vaxnLq|qmCxn zn%J)bZ+7j_sJCXn)zHE_*Ed@|QgzX1Ow}L$y)zm4z4HVqMgNkL{?|tbA|m#f&Yo46 zx({><@=Z6rElHTn`rYz=F*)N0lat(G1i^TWbT{(TdycwWBV^{DLwq;qA(+RXC=dLN z1p*z9zpp?1Q%Eo>wTB#>jLNsp_uEXFp_|0=zxd;m!i= zpQW;Dy7`iwl(A*O7zVMtqGNtWfP@j!{>He^VCAlVUaCd)!SSr5-`9KmGs;tgb^)A@ z6)W2X&SU5A5+8N?4jIr`#U3yRc7294&F||*W`5aWp>UUPvTbem=@&nQdGZpI!@)q{ z9PAh8<0%laSLKCUk`)pNWyIg`NF7Gd0Pf!!pkf+yMzWrpiR_^z&;a-)dUFUN^7YaC zX=sUbNq)047J0?$)>BD=ZJZuZU8%ocNz1@R;KX&hpPWz)2D}NKaH@wI!Lkt0zyO5X z$n&D#Bmn<_+@S=xW+w7eR!Wp5gSK!jt!2t^uljV{WEMl_4qTtyQ-fD z`@`ypap7Oz^S{os+Mo>yjm&b;B{_veEiE^35L5M zMSvH%?`AI4@;I$S232|EWPyG!hry46HGYH;~&T2?U=2)oDj-p zc;g(Xi_9OxPK3(SJOulO|3JDfvOG!%Z^vcg&4XhIoN@oj8Qu<2CiBVmRDPjkPb-=) zZ%u%D&~HLjb_j)`?MvU0C5iFQ#@j+ET0!-gmc@0~RD3(+=7)90GP^$rWhW3C`(%g|($Y6(zQ+*^mDi!xIe zgEE~T5J4LA9Vx<@18KiwTGx@hUZCOT-0?mlJg;;>l7aJG+LxvBoj1$qCHTORt7Ec6 z+!E+eCWyM`M@2J}!nmOpv*G0D>ebU$8U9K&!pgJCYh}E^{C$Y?5Zvj&_5Ix(MlZTQ zPJD=P;)vfT20BKe6io7`E4w% zfoyM3i=MpBeZ*n|bVh=pGyK1GrW|a_V`%EqFt06DjSE?>n;-bEOT6PG4~V@kIPbO6 z07f@}Q-;Vq=ZTd^pacJ1^ACM@=>R)0WG%lu_n>2qIK*kXC{tFx&Q&|x=K?vb}9#2!Lrir_!DHGgQitiAjE3O^mUL)GP21z+4N z8gwaYt4FrVAvZ2&IN4f4XPl-2|>_5Vk9&|KaTa z-R?(v^8d_}o*5$|Q^^^y{B?H+lstj!;i*DvBy_PgMP z)^R%Ea;(K?&WRZas~;!J1mbs{JE^QAE-UQ*~Lz zy=`r~yVlCUUkyp^Juj9?9DoO@C=jsS=SR^$iQSlYtKv+!(&iThg*D&n0jItM?pI3` z-K8VhrKphL<2--(IGa~JWHfw-7?sxx=38OG=!kc5kFz%eC{6O*%LhS zV?6`UQFzRL7<9zTpFS_?Jc->bh!bAQ`|G8}Ym${=XKH4q=UYT#H5o^7gP8w%$X{K| zHq$a^3qo*g(fQX!i6XZ@Sd&X&jrC8~yzNofmY1j+XPdLKZU+#-xfzb<$r|V= z$`x(mjBl9dY%^t}8#V0^3rg6~@t*u^c!(cv zxnMG@xUS=sYGEPF#|Bomyj!@l;A$F4BGC9$KpR_OKRjBLArffOXe(lnN+b8jnt>W? zC7}*yJ!6AfriH8z$PdtbdwI6IzXQ95H6;9ku_?&Zrv>PO_{Eo1Q_4}d$ zuQ)9<%oms)cvE7_amoq}vF|TWpdX=TCTOm__DRG3V)CZzU!)md6(JZFqate&U@{-U zx81Ch9db-CXp}*1Uo2Y*pZhF&@eh8RA4E)WG1oGzf+l~p62u+}ry#g$?hZ`FJ-Db! z5J%;i=HT-piB->(!kPGEe|InqMy{1CoF2jE`69iNQ41fq(NH{242lT6Vm0|E7 zyR)YK6sC}5EjM^PIszoLHFbehhF(Usw1^_zA2OfNyUJvjrzD>nv(_$$UR1Y%3X|%4 z5XkDetqSN=Bn9Gs>LN7ji*p?&v3fE=^Us6@AITAUC4=%jiet+V%lgQI$wXvD?)a}J zLf1bUJ`q}2rzW!zMl1+boYDZ7n_ zEoQqL6S6Oz79vI^GV*eQtrh=(31iMbRFu*fD4iBf>MLvf?6r`ly8kw^flQ~VlcaO} zN6VAA?)GnI=6_vh=3m+Uu;}0SRpQudUzhcGRKiXj3$?JB{{vxy+YaC0sROQ?S8Nn8 z*X<_kSLx$?{T$AXwbwD9$6M>rzQS3rG>@u>;;=a3eP2$Y!2GpZI#2PSY({g-f_Ij* z7GVjf4=C{d>mp2Ve#PDC0*jmS71&`#Qa><#ulBDn`c$v4BPia(=TFc`c?%o{rWJvi zm_z%LK{NMUD^rcxgfRIH`CFqAHM>|`F-|yKvH_|^fzT@LUwrz^kT2juC9(`k>aIKB z^;AnY$+Gki=;UUa=?}pp=3FW_G{2G1mOjnBH z?QLi(&NmJulp21EQZxJLEMIN?R4fuUehINki%<*_p^+AA010Vd9=x^YaMjcs7m2o8 z(VIL%+#om${xTA_4b#b&A8y*2Bg7`E|chbw4 z^Fdb3-GeHW5QDBq@4jL%P%}Xb*`djMVzC_F9|a)mv?N)$%FBq_D)7|q=HrN^@+!+d zWKNjZn%N`E>7zj+mwH|3bd_h1?+@BjYI?J3^3|}aBJ5AM7$f_Jd^Tj%7Et3?#GI7e zrVHG|88{E+&;8B5@5J&RF96y~KqXfqNp?To8>@_+Z-FYF+ROG8>-GDDPS~}p+0k(# z)8t{%4mQ9how@hL{ca!9$1{R0`)+k_Nb*)(Cb3i6T27K1nghJ?e&?nWW zeys_2ak?o{-F=`8V1f*V8t+rfFNPm47bH>E8!&PVvmldc6MSv?IFrgYFb{$>&rw57 zEMWw#$NQ{?uF;#vUr%4}nv%2w>3ty+8Kn{lXhkP*yb&)3IoZ(Z0#{Svb{S_6W}iKp zY1Drb5%Mlz)-i$T76s5_4N)nyxwKMbiPL2;x4fpyL#4-{v)UM zC{C*WMT8PY#{6N>Ozp`<4PZvj`;cn9BI~Dn2{?ZSSk#aXSpEHkpv7u!x+0Z`Q-YIC z@>QoMXr^fBC*X>>D=kdEfO+^NF$3d~D$?#@>20de)J^oGA|L zHSBjx(IHDz{_XvnIUrGWu znnfJdlVeRq-jH=&0qFrJ>N{~2n!`n=XBt%6&#U&HA!MA?QgC3}bzttr<;ckR34~(g zC-v8?_nrcS!)hkirn(*_YC%tuPr|Qp?Cr6%k|S_Nn8!j}+84IsI{$ex+R8xrE*AHPEzn$%IE$bhyzx>>(0sfc;PW$^OPEez*_zHN%tbF>ll^p_Lk25@;T5e> zj=*UB_;^{vW3dLC3k~k(O|LX+*fneHbiLO#4a&=r@%&d++K*D{7$g*wsz+{>)*sh6{0y2n;;AsG*Rh`oD1~?p} zW^hEa=XClwZQ|;-)Jiolbl@8`r4JZspRu$vBe7o5c3*#KD?PGX%<--s$r17tJl1*- z;U|H}q4H?X$BcseVnwb(jpHS<)_fOnFka0r6I}{~-$8^Ts|Ym&vyj$Irs=Yf08AZL zOVkd{(gIV9E#|YOG5beWLBv3LgOR*C@0qU5p^PeO4Keza_)=tBCKua1#CU~t17NIP zt25dLcD1Y&@oIX}n&*rese0!Hed*0tAxPVU2tZ}V-Cn8Ly=Tqjde-MJ5-#P9(Br$^ zB_8y4!|erI{1CB;s?Z#Gs{Wq!9>R)D)B7MIr@`yNn1(bWn`=)uY2+!55-?$hsUk-( ziWC9gVesbA`@&ekQ^)FgUUVtyX{_HTibTI#z!1f!eHbI0%i-Lx{V-S%CZ9$-EJVz< z_&Ak97U_l!;E{{T5y!j{x~A>vRc#tBgE~E1ttF{#o)%G>z|X5oxwwZxM%ov9rf7!N>QqlVxKr61Y|3+fVN#ZH&15*wy0+Z}gs zS`KrDt-|bT_g{XLnp<|>gE}k5TUiO?n|&A^xz@UbkrBJDH#fFRsJo=FdDIZ^k2)#T z-FKu%a6ZW7$5F2|yoUk!k@geGm(gQ@M`86B)8BWi^RC?+QzLe`9l_+$YVS|K2xmn< zQ9SnPUK~e3eQlazaTZ6_>A{sO+jR}Tnx~lpZ0KiJNYjTwHfYOv2QFRjW14&+6G+{} zJgP4HE4toOX^LK-`r<@jrBd|ElkYXTbt{jPp!J`jXjxe?M264Xj@3Go9EaxTO$t_LA=|LZRpRq{nc@e2cCL`x7MD0alABn{Hh(t&k zAmLFK*BD3a559<*f4Zv0)H@@AnaUY7%BsR&=>f3nQMNHtMyFkajXLm&0s{pIaBelM z+=-}GRgzX|Z4eznJMTr0`!-xlD^t^Onfgo3u1-G>`}xkGPA(F@s*(|T>W*5?1d~Am zC_{AOBl-~zR;U93Ox0Uovj@9n7Y(>7tUlk?=ONk@vOODj7vfVePhSci@i^C{8nauq z`tj-R&Nywn8qy-C?z!JFtt~s3CcQ1b9CGAc=kCYJI__QW4CYN1nmt)h#|=9%I^tU& z6LKC)Hn_gfg60?pm3qN3LG}fkT`#xJtqPFXX&ZTT-NV(n){-K)Xg0JkonDd+XQEg`@_j%GWe_Jn2|)G%d35GY4qRbUt&7M&pFRU( zVpU$YksEZyt~w(-_0z^BFSqu(f6C-$%jA9Lc|$Y+&R~$3xAz2_zyjgbFVE9fZBl&> zxFt0}lKuz)z?$A`tn7?iPo`m1GVWy!ixMLTZP6C%AM`7I(u;`_v{}U(AArwxfO+>RzL61g0YCyw2U3StPbMtOHdF)2a>{`0;W7pjl8u(y z^G}Y_XVl=5=rCa`V!ij=>XpVyiVuCH{Id0s1W7@s_AYx?;s-sp`Xa6mr@4-F%|1nr zsMWCEOT=iNf$+npKtfEHqTtQ>GREMH{CqGPQ6(G(q0sAkbA=cHE9i?3)l8^iHjEOf zME$+}ajn~wn%^j^hRMII7$5C;e6h^QFMy*o{3-4v{8K-&d~3k9R*=oWTfuCNb=! zgwh@16#YK6S`&cvP7AqLUOwBgjr;7vP4bcsGV(l1-d2xG zP5f^MKE{uP0FAy@Aa3>W$~~tJ?|bkGiZnW_=dMk&+fs3n1PnNikw>3@K9a$-u^BL7 zb9{NG+528-6|7P~X0E74^Rg}bOMSDuA=<|{pxf`A%MS4X2RxCW?8Uleo9 zONtBhfwyg3B_|O!^K`BXT&~_*uWJo_H(@cS22teWm^$~R&kH}6mjZU#zPtFc?zIoc``UL@5KWrB*hm@@9dMwEmr*h5-MmK!19ka&NmVMRB)d)Q1tA^`|r(r zDxRGp4iQvdDwEeGux}e@b&x+{wi|eC8cY%y%fnPU-Z7Y+2r{CsIxOlG9miGj%*8h8>lc5>%m5dmR$whyWG010*5_a%7cLWMmJw|45c8X&DND zGHy_?SqcdyzO32&ePS~;BN<_Uk)J}7~ao9;hI1152TfIC +[:material-check-circle:]() Describes expected behavior using 'when' and 'then' blocks
+[:material-check-circle:]() Abundance of functions for writing **elegant and readable assertions**
+[:material-check-circle:]() Utilizes **snapshots** to write tests for complex data structures
+[:material-check-circle:]() Provides commands for **generating boilerplate** code
+[:material-check-circle:]() Includes a **test-runner** that executes these scripts
+[:material-check-circle:]() Easy installation on **CI systems**
+ +--- + +## :material-check-all: Unit testing + +nf-test enables you to test all components of your data science pipeline: from end-to-end testing of the entire pipeline to specific tests of processes or even custom functions. This ensures that all testing is conducted consistently, promoting reliability across your project. + +=== ":fontawesome-solid-diagram-project: Pipeline" + + ```Groovy + nextflow_pipeline { + + name "Test Hello World" + script "nextflow-io/hello" + + test("hello world example should start 4 processes") { + expect { + with(workflow) { + assert success + assert trace.tasks().size() == 4 + assert "Ciao world!" in stdout + assert "Bonjour world!" in stdout + assert "Hello world!" in stdout + assert "Hola world!" in stdout + } + } } + } - } -} -``` -## Test your process -In the nf-test script below we add some basic checks to a process of a [recently published pipeline](https://github.com/GoekeLab/bioinformatics-workflows/tree/master/nextflow). + ``` + +=== ":material-square-circle: Process" -```Groovy -nextflow_process { + ```Groovy + nextflow_process { - name "Test Process SALMON_INDEX" - script "modules/local/salmon_index.nf" - process "SALMON_INDEX" + name "Test Process SALMON_INDEX" + script "modules/local/salmon_index.nf" + process "SALMON_INDEX" - test("Should create channel index files") { + test("Should create channel index files") { - when { - process { - """ - input[0] = file("test_data/transcriptome.fa") - """ + when { + process { + """ + input[0] = file("test_data/transcriptome.fa") + """ + } } - } - then { - //check if test case succeeded - assert process.success - //analyze trace file - assert process.trace.tasks().size() == 1 - with(process.out) { - // check if emitted output has been created - assert index.size() == 1 - // count amount of created files - assert path(index.get(0)).list().size() == 16 - // parse info.json file - def info = path(index.get(0)+'/info.json').json - assert info.num_kmers == 375730 - assert info.seq_length == 443050 - //verify md5 checksum - assert path(index.get(0)+'/info.json').md5 == "80831602e2ac825e3e63ba9df5d23505" + then { + //check if test case succeeded + assert process.success + //analyze trace file + assert process.trace.tasks().size() == 1 + with(process.out) { + // check if emitted output has been created + assert index.size() == 1 + // count amount of created files + assert path(index.get(0)).list().size() == 16 + // parse info.json file + def info = path(index.get(0)+'/info.json').json + assert info.num_kmers == 375730 + assert info.seq_length == 443050 + //verify md5 checksum + assert path(index.get(0)+'/info.json').md5 == "80831602e2ac825e3e63ba9df5d23505" + } } + } + } -} + ``` + +=== ":material-square-root: Functions" + ```Groovy + nextflow_function { + + name "Test functions" + script "functions.nf" + + test("Test function1") { + function "function1" + ... + } + + test("Test function2") { + function "function2" + ... + } + } + ``` + +:material-arrow-right: Learn more about [pipeline tests](docs/testcases/nextflow_pipeline), [workflow tests](docs/testcases/nextflow_workflow), [process tests](docs/testcases/nextflow_process) and [function tests](docs/testcases/nextflow_function) in the documentation. + +--- + +## :material-content-save-check: Snapshot testing + +nf-test supports **snapshot testing** and automatically **generates a baseline set of unit tests** to safeguard against regressions caused by changes.
nf-test captures a snapshot of output channels or any other objects and subsequently compares them to reference snapshot files stored alongside the tests. If the two snapshots do not match, the test will fail + +:material-arrow-right: [Learn more](docs/assertions/snapshots) + +--- + +## :material-power-plug-outline: Highly extendable + +nf-test supports the **inclusion of third-party libraries** (e.g., jar files) or functions from Groovy files. This can be done to either extend its functionality or to prevent code duplication, thus maintaining simplicity in the logic of test cases. Given that many assertions are specific to use cases, nf-test incorporates a **plugin system** that allows for the extension of existing classes with custom methods. For example [FASTA file support](docs/assertions/fasta). + +:material-arrow-right: [Learn more](docs/assertions/libraries) + +--- + +## :material-star: Support us + +We love stars as much as we love rockets! So make sure you [star us on GitHub](https://github.com/askimed/nf-test). + + +Star + +Show the world your Nextflow pipeline is using nf-test and at the following badge to your `REAMDE.md`: + +[![nf-test](https://img.shields.io/badge/tested_with-nf--test-337ab7.svg)](https://code.askimed.com/nf-test) ``` +[![nf-test](https://img.shields.io/badge/tested_with-nf--test-337ab7.svg)](https://code.askimed.com/nf-test) +``` + +---- + +## :material-account-supervisor: About + +nf-test has been created by [Lukas Forer](https://twitter.com/lukfor) and [Sebastian Schönherr](https://twitter.com/seppinho) and is MIT Licensed. + + +[![@lukfor](https://avatars.githubusercontent.com/u/210220?s=64&v=4)](https://github.com/lukfor) +[![@seppinho](https://avatars.githubusercontent.com/u/1942824?s=64&v=4)](https://github.com/seppinho) + +Thanks to all the [contributors](about.md) to help us maintaining and improving nf-test! + +--- diff --git a/docs/installation.md b/docs/installation.md index 15a0ea07..8a736042 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,3 +1,5 @@ + + # Installation nf-test has the same requirements as Nextflow and can be used on POSIX compatible systems like Linux or OS X. You can install nf-test using the following command: @@ -14,6 +16,8 @@ wget -qO- https://code.askimed.com/install/nf-test | bash It will create the `nf-test` executable file in the current directory. Optionally, move the `nf-test` file to a directory accessible by your `$PATH` variable. +### Verify installation + Test the installation with the following command: ```sh @@ -47,7 +51,12 @@ If you want to install a specific version pass it to the install script as so curl -fsSL https://code.askimed.com/install/nf-test | bash -s 0.7.0 ``` -### Nextflow Binary not found +### Manual installation + +All releases are also available on [Github](https://github.com/askimed/nf-test/releases). + + +### Nextflow Binary not found? If you get an error message like this, then nf-test was not able to detect your Nextflow installation. @@ -73,12 +82,10 @@ To update an existing nf-test installtion to the latest version, run the followi nf-test update ``` -## Manual installation - -All releases are also available on [Github](https://github.com/askimed/nf-test/releases). - ## Compiling from source + To compile nf-test from source you shall have maven installed. This will produce a `nf-test/target/nf-test.jar` file. + ``` git clone git@github.com:askimed/nf-test.git cd nf-test diff --git a/docs/logo.svg b/docs/logo.svg new file mode 100644 index 00000000..c28a31b7 --- /dev/null +++ b/docs/logo.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + diff --git a/docs/resources.md b/docs/resources.md new file mode 100644 index 00000000..3270d4a4 --- /dev/null +++ b/docs/resources.md @@ -0,0 +1,48 @@ +--- +hide: + - navigation +--- + +# Resources + +This page collects videos and blog posts about nf-test created by the community.
Have you authored a blog post or given a talk about nf-test? Feel free to contact us, and we will be delighted to feature it here. + +--- + +### :fontawesome-brands-youtube:{ style="color: #EE0F0F" } nf-test, a simple test framework specifically tailored for Nextflow pipelines + +**Sateesh Peri** does a hands-on exploration of nf-test, a simple test framework specifically tailored for Nextflow pipelines. + + + +The presentation was recorded as part of the Workflows Community Meetup - All Things Groovy at the Wellcome Genome Campus. + +--- + +### :fontawesome-brands-youtube:{ style="color: #EE0F0F" } nf-core/bytesize: nf-test + +**Edmund Miller** shares with us his impressions about nf-test from a user perspective. nf-test is a simple test framework for Nextflow pipelines. + + + +The presentation was recored as part of the nf-core/bytesize + +--- + +### :fontawesome-brands-youtube:{ style="color: #EE0F0F" } Episode 8: nf-test, mentorships and debugging resume + +**Phil Ewels**, **Chris Hakkaart** and **Marcel Ribeiro-Dantas** chat about the nf-test framework for testing Nextflow pipelines. + + + +The presentation was part of the "News & Views" episode of Channels (Nextflow Podcast). + +--- + +### :material-tooltip-text:{ style="color: #337ab7" } Blog post: A simple test framework for Nextflow pipelines + +Discover how nf-test originated from the need to efficiently and automatically test production-ready Nextflow pipelines. + +[Read blog post](https://www.askimed.com/articles/announcing-nf-test) + +--- \ No newline at end of file diff --git a/docs/style.css b/docs/style.css new file mode 100644 index 00000000..c83b8bf7 --- /dev/null +++ b/docs/style.css @@ -0,0 +1,29 @@ +.md-typeset h1, .md-typeset h2, .md-typeset h3 { + color: #000; + font-weight: 600; +} + +.left{ + float: left; +} + +.right{ + float: right; + width: 40%; +} + +.md-footer { + margin-top: 40px; + background-color: #009485; +} + +.md-footer__inner { + display: none !important; +} + + +@media (max-width: 600px) { + .image { + display:none; + } +} \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 9e82ab11..326b3cf4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,65 +1,78 @@ site_name: nf-test +copyright: "© 2021 - 2023 Lukas Forer and Sebastian Schönherr" theme: name: material features: - - navigation.instant - - navigation.expand - - tabs + - content.tooltips + #- navigation.expand + - navigation.footer + - navigation.tabs + #- navigation.tabs.sticky + - search.highlight + - search.share + - search.suggest + - toc.integrate + - content.tabs.link + font: + text: Segoe UI + palette: primary: teal accent: teal icon: - logo: material/rocket-launch-outline + logo: material/rocket-launch favicon: images/favicon.svg - font: - text: Roboto - code: Roboto Mono extra_css: - - extra.css + - "style.css" + +extra_javascript: + - https://buttons.github.io/buttons.js + repo_url: https://github.com/askimed/nf-test nav: - Home: index.md - Installation: installation.md - - Getting Started: getting-started.md - - Writing Tests: - - Pipeline Testing: testcases/nextflow_pipeline.md - - Workflow Testing: testcases/nextflow_workflow.md - - Process Testing: testcases/nextflow_process.md - - Function Testing: testcases/nextflow_function.md - - Params and Global Variables: testcases/global_variables.md - - Running Tests: running-tests.md - - Writing Assertions: - - Power Assertions: assertions/assertions.md - - Files: assertions/files.md - - Snapshots: assertions/snapshots.md - - Regular Expressions: assertions/regular-expressions.md - - FASTA Files: assertions/fasta.md - - Using Third-Party Libraries: assertions/libraries.md - - Command line Interface (CLI): - - init: cli/init.md - - generate: cli/generate.md - - test: cli/test.md - - clean: cli/clean.md - - Configuration: configuration.md - - Plugins: - - Available Plugins: https://code.askimed.com/nf-test-plugins - - Using Plugins: plugins/using-plugins.md - - Developing Plugins: plugins/developing-plugins.md - - Available Pipelines: nftest_pipelines.md + - Documentation: + - Getting Started: docs/getting-started.md + - Writing Tests: + - Pipeline Testing: docs/testcases/nextflow_pipeline.md + - Workflow Testing: docs/testcases/nextflow_workflow.md + - Process Testing: docs/testcases/nextflow_process.md + - Function Testing: docs/testcases/nextflow_function.md + - Params and Global Variables: docs/testcases/global_variables.md + - Running Tests: docs/running-tests.md + - Writing Assertions: + - Power Assertions: docs/assertions/assertions.md + - Files: docs/assertions/files.md + - Snapshots: docs/assertions/snapshots.md + - Regular Expressions: docs/assertions/regular-expressions.md + - FASTA Files: docs/assertions/fasta.md + - Using Third-Party Libraries: docs/assertions/libraries.md + - Command line Interface (CLI): + - init: docs/cli/init.md + - generate: docs/cli/generate.md + - test: docs/cli/test.md + - list: docs/cli/list.md + - clean: docs/cli/clean.md + - Configuration: docs/configuration.md + - Plugins: + - Available Plugins: https://code.askimed.com/nf-test-plugins + - Using Plugins: docs/plugins/using-plugins.md + - Developing Plugins: docs/plugins/developing-plugins.md + - Resources: resources.md - About: about.md markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences + - pymdownx.tabbed: + alternate_style: true - attr_list - pymdownx.emoji: emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg - - admonition - - footnotes - - pymdownx.highlight - - pymdownx.inlinehilite - - pymdownx.superfences - - pymdownx.snippets + emoji_generator: !!python/name:materialx.emoji.to_svg \ No newline at end of file