From 0037e2e21ad525b06a8b20afee005885cea4cb19 Mon Sep 17 00:00:00 2001 From: JanHab <Jan.Habscheid@web.de> Date: Tue, 26 Nov 2024 18:02:50 +0100 Subject: [PATCH 1/7] Add Coverage? --- .gitlab-ci.yml | 9 ++++++++- Dockerfile | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f5d26fc..15763ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,7 +49,14 @@ test: tags: - docker script: - - python -m pytest # Run the tests + # - python -m pytest # Run the tests + - pytest --cov=fxdgm --cov-report=xml --cov-report=term-missing tests/ # Run the tests and store coverage + artifacts: + paths: + - coverage.xml # Save the coverage report + expire_in: 12 month # Optional: Set how long to keep the artifacts (default: 30 days) + coverage: '/^TOTAL.*\s+(\d+\%)$/' + # Job to deploy documentation to GitLab Pages pages: diff --git a/Dockerfile b/Dockerfile index 23fafbd..6dcdddf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ ENV HOME /root # Create the environment and install packages # FEniCSx backend + documentation and testing dependencies RUN conda create --name ${CONDA_DEFAULT_ENV} python=3.12.3 -y && \ - conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest==8.3.3 -y + conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest==8.3.3 pytest-cov==6.0.0 -y # fxdgm package from git RUN pip install git+https://git.rwth-aachen.de/JanHab/bsc-electrolytemodels@Package -- GitLab From bb05b7966c110719275919e595bf1d7683ec9fec Mon Sep 17 00:00:00 2001 From: JanHab <jan.habscheid@rwth-aachen.de> Date: Tue, 11 Feb 2025 12:02:22 +0100 Subject: [PATCH 2/7] add coverage + skip main functions for coverage --- .coverage | Bin 0 -> 53248 bytes coverage.xml | 640 +++++++++++++++++++++++++++++++++++++ fxdgm/ElectrolyticDiode.py | 2 +- fxdgm/Eq02.py | 80 ++--- fxdgm/Eq04.py | 2 +- fxdgm/EqN.py | 2 +- 6 files changed, 683 insertions(+), 43 deletions(-) create mode 100644 .coverage create mode 100644 coverage.xml diff --git a/.coverage b/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..a9320ef354670acb84953dfaf7fc2b2f67903333 GIT binary patch literal 53248 zcmeI4Uu+yl9mn_2-EGeQ#!(cVj8%D1OKq$EcLk9cQc@>2Pza<=QzSs*vUfLUZ@JyQ z?C!;Ofuz?|im1d3LP$le!&~2}R30c&)k=sLpm{(lLQyM_XeHWIK>1VZ%KT<_*LRoL zQLlYy8or~u+1=Us&HR3!`OVDD?(N=x-!Uf=yyge49q~_U!<w#ZcXO_3TAsdx^i6|B zJDK!=wtC0@Zo7GH=Ap(Q`<gb8`+>&3HF%s&4?Hn=d;g^YH~(1whGpj~bOHecKmY_l z;QyOI>%IZ2FfyV)^1a9|*F_ZA6%oYo;L#IH3n!QO$%P}wmUx`TC;B*r>1n>e1Amn_ zM8IoKU2w;%Iu$!|yk#D(h%|RI6jeFVQ5sEkGUJSrmwP3rN>Y(nrXm`F<J!SG|F&44 zQW=ukBC!_52~>!1mOYt+PbA`#JP<Vz2(Kc-Sc?g#I@vdQ{#>6`*tbu=Ae2pZP@zwM zmo=2oHszig6;$zqs?@$5*j{Btgj3w!wy@%po@-HTZQ#4Jk<aUnr_A(1Cvtp`i#1Vc zMxwf-fm0G%8VFveHB{CqY0#-yGO4SBPFr{f$s~IsTqET?KgHS>lvR_k(%EaeWkUX7 z({0GcA&I!+$lpzJH`&NfjD62-vqM|9?d@vL6uE5CSgPqcr<-EC@uzrOa!Q%u`BPjP zK_2jl{#;>xpRSQtinZ``oqlhX>}KSv;}SJ~sYublqkH#Qg|RXH!fE9w5>Kh@MB(;M zzRPL0lXr0)d46}lk-enbNn|go*STL)T}DdtxN*pvJNwLR3d0U$N8^5yku?2Ky-g}h zI`DGcFL(Qz@|aLi2cfYb%~orA71>onX+y<7BLaI_%p_;yVd2AeByyc%K37;8+s$>h zU7%Fl-tB9R<gCKzsQyS^xlz(u$;Rq(p|mA;7)H}muCT*qkPal*8zfVS_9&V5k>m`S zGi~Jx3!}T4ljJKElbt;+D`OS*@7G&#kC5Y%{ARn1kSXmhaMeWc-qml|(F(s-cbQCz zk7sj*&+gw%aj8P7DC6AuZyHMF3nPlYOM|}rnq4Z(l(x!W7VFbz>^hAm4ciH*%hDJe z&j4IztlE^>F8j?$`L8@w?kVS<w!U!z?c<a^<(gF4se9k+hoM8$s+_jM&!nk*e8mps zC=`zKvhUZ0?ZtBgN!$}soleM=4%f~~hudX@>#~gHGvi99baIiy{7LF`Y5$@f*R{QB zGGEDQI4+gOe%U!?J@Ftyf_$7hWk_B0sxs3;le2QfO3R;V5EEIdYggm$E*qtz#MKpX zO>yyTv}i{na$Lb>7Nv}GtW`VYl|ax*noB3g&Fi^=Y^_pJ#&VUsNB)#+jp<h5jyv>L zGwF=+I8zE~Qg`iC?c~tta+0e~w*BQe4Y>4cr_)a)yAB-kFs?xkZgC5iV+v`m<hM@W zq+H<Z>>Z6h2p|9gAOHd&00JNY0w4eaAOHd&00K830aG`0ORoP7_KL=?P=o*iAOHd& z00JNY0w4eaAOHd&00JQJkt8r+n76R>A0BhVx;Z+M{0HE`%%^9H#XhpiV6SQHHTKVs zq=8Tx1V8`;KmY_l00ck)1V8`;KmY_lV4J{zd5fN21~B@}(R^|hK;Hkih7M}%dG-*y zduVg$`JwOAAp!`100@8p2!H?xfB*=900@8p2q*%_t&G;Xb@qXfp3$Fu(DqjBvV7#+ zsm?C?m8L7aD4bn(qS@M7b=ghgFN!+7qNlXzH|Z?|$Lw_x9JL#E#fjGG!Tkd{Q)~8C z-qPu>lHkFtsjc=ZIQJ=%Jdz<B^1X?kpjS|MqWTpPt`rw#?dJQb{Z5knyg{|^?XC8u zx~N2fUtf=$%A(^}1(kD1H??!U6;moXo)eWyBrWg%TSN02`wm+edSU3Xq4}YA*$Z%T z5C8!X009sH0T2KI5C8!X009t42;7@#-KzJt?7Z&!-#TbEdn_+r|L5k-)t&{_`agR# z)5`ZKdiDB0^S)}A>wohLnbzJOYu{=8ZyYku^>`7ZWBrf!|Di{N00@8p2!H?xfB*=9 z00@8p2!Oy%O~9l-4h+is|2o^$=z{<PAOHd&00JNY0w4eaAOHd&00JOz6B01Z!Mu9@ zpII9F5BnASDf=N?VMpi?0R%t*1V8`;KmY_l00ck)1V8`;Zbkz0Rz}Z9)|~OMq4jAK z+ACR2Yv^QYNm~2jlb3&gyE6N825la`@{PYf^S~aJ@RE63jzqtdGqy-Xg&+N4YW>RN z7cU-o`>EfBzxef`w@+=HGbXZ>>qOSr$|t$B+SAqF{^Ri0pWS^w8Tt8LwP*hL_l@t) z9Y6c=fehvRSjHIBwZofZx0$kZvqO$Q{q;MS&z^nu(#vDNdHu&Evhha$oI$zDhOs%D zl>XMKpZ)UR8;{Pvx%KYhH}BH5VM>3l{+zqHb^h6>F23px=k!cIKm1=^J^#-xY3v>L z7JGyJg}uyPqC*4_009sH0T2KI5C8!X009sH0T2Lz8<~K-8lhX3+T?O-lg+A4CZjf{ zsWyg@p(_CD{=d39a3k9U-9P{YKmY_l00ck)1V8`;KmY_l00ce|0eSx)>;Dgg5W*k; z0w4eaAOHd&00JNY0w4eaAaKJIh@bzzEdT%iFZMU~I(wD<iCw<o)rNu~00JNY0w4ea mAOHd&00JNY0w4eaDFM@>H~gD98D(XZk&!7QLq_ub|NjHv%g*%x literal 0 HcmV?d00001 diff --git a/coverage.xml b/coverage.xml new file mode 100644 index 0000000..4394685 --- /dev/null +++ b/coverage.xml @@ -0,0 +1,640 @@ +<?xml version="1.0" ?> +<coverage version="7.6.11" timestamp="1739271601600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0"> + <!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.11 --> + <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> + <sources> + <source>/Users/janhabscheid/Documents/git/fxdgm/fxdgm</source> + </sources> + <packages> + <package name="." line-rate="0.9475" branch-rate="0" complexity="0"> + <classes> + <class name="ElectrolyticDiode.py" filename="ElectrolyticDiode.py" complexity="0" line-rate="0.9384" branch-rate="0"> + <methods/> + <lines> + <line number="10" hits="1"/> + <line number="11" hits="1"/> + <line number="12" hits="1"/> + <line number="13" hits="1"/> + <line number="14" hits="1"/> + <line number="15" hits="1"/> + <line number="16" hits="1"/> + <line number="17" hits="1"/> + <line number="18" hits="1"/> + <line number="19" hits="1"/> + <line number="21" hits="1"/> + <line number="82" hits="1"/> + <line number="83" hits="0"/> + <line number="84" hits="1"/> + <line number="85" hits="1"/> + <line number="86" hits="1"/> + <line number="87" hits="1"/> + <line number="88" hits="0"/> + <line number="89" hits="0"/> + <line number="90" hits="0"/> + <line number="93" hits="1"/> + <line number="94" hits="1"/> + <line number="95" hits="0"/> + <line number="97" hits="1"/> + <line number="98" hits="0"/> + <line number="100" hits="1"/> + <line number="101" hits="1"/> + <line number="103" hits="1"/> + <line number="104" hits="1"/> + <line number="106" hits="1"/> + <line number="107" hits="1"/> + <line number="108" hits="1"/> + <line number="109" hits="1"/> + <line number="111" hits="1"/> + <line number="112" hits="1"/> + <line number="113" hits="1"/> + <line number="114" hits="1"/> + <line number="116" hits="1"/> + <line number="117" hits="1"/> + <line number="118" hits="1"/> + <line number="119" hits="1"/> + <line number="121" hits="1"/> + <line number="122" hits="1"/> + <line number="123" hits="1"/> + <line number="124" hits="1"/> + <line number="127" hits="1"/> + <line number="130" hits="1"/> + <line number="135" hits="1"/> + <line number="136" hits="1"/> + <line number="139" hits="1"/> + <line number="140" hits="1"/> + <line number="141" hits="1"/> + <line number="144" hits="1"/> + <line number="145" hits="1"/> + <line number="146" hits="1"/> + <line number="147" hits="1"/> + <line number="149" hits="1"/> + <line number="150" hits="1"/> + <line number="151" hits="1"/> + <line number="152" hits="1"/> + <line number="153" hits="1"/> + <line number="154" hits="1"/> + <line number="155" hits="1"/> + <line number="156" hits="1"/> + <line number="157" hits="1"/> + <line number="158" hits="1"/> + <line number="159" hits="1"/> + <line number="160" hits="1"/> + <line number="162" hits="1"/> + <line number="163" hits="1"/> + <line number="164" hits="1"/> + <line number="165" hits="1"/> + <line number="166" hits="1"/> + <line number="167" hits="1"/> + <line number="168" hits="1"/> + <line number="169" hits="1"/> + <line number="170" hits="1"/> + <line number="171" hits="1"/> + <line number="172" hits="1"/> + <line number="173" hits="1"/> + <line number="176" hits="1"/> + <line number="177" hits="1"/> + <line number="178" hits="1"/> + <line number="179" hits="1"/> + <line number="181" hits="1"/> + <line number="182" hits="1"/> + <line number="183" hits="1"/> + <line number="184" hits="1"/> + <line number="186" hits="1"/> + <line number="187" hits="1"/> + <line number="188" hits="1"/> + <line number="189" hits="1"/> + <line number="192" hits="1"/> + <line number="212" hits="1"/> + <line number="246" hits="1"/> + <line number="247" hits="1"/> + <line number="250" hits="1"/> + <line number="251" hits="1"/> + <line number="253" hits="1"/> + <line number="254" hits="1"/> + <line number="262" hits="1"/> + <line number="274" hits="1"/> + <line number="275" hits="1"/> + <line number="276" hits="1"/> + <line number="277" hits="1"/> + <line number="278" hits="1"/> + <line number="279" hits="1"/> + <line number="280" hits="1"/> + <line number="281" hits="1"/> + <line number="282" hits="1"/> + <line number="283" hits="1"/> + <line number="284" hits="1"/> + <line number="285" hits="1"/> + <line number="286" hits="1"/> + <line number="287" hits="1"/> + <line number="295" hits="1"/> + <line number="298" hits="1"/> + <line number="299" hits="1"/> + <line number="300" hits="1"/> + <line number="301" hits="1"/> + <line number="303" hits="1"/> + <line number="304" hits="1"/> + <line number="305" hits="1"/> + <line number="306" hits="1"/> + <line number="309" hits="1"/> + <line number="311" hits="1"/> + <line number="312" hits="1"/> + <line number="313" hits="1"/> + <line number="314" hits="1"/> + <line number="315" hits="1"/> + <line number="316" hits="1"/> + <line number="319" hits="1"/> + <line number="320" hits="1"/> + <line number="321" hits="1"/> + <line number="322" hits="1"/> + <line number="325" hits="1"/> + <line number="326" hits="1"/> + <line number="327" hits="1"/> + <line number="328" hits="1"/> + <line number="330" hits="1"/> + <line number="331" hits="1"/> + <line number="333" hits="1"/> + <line number="334" hits="1"/> + <line number="335" hits="0"/> + <line number="336" hits="0"/> + <line number="338" hits="0"/> + </lines> + </class> + <class name="Eq02.py" filename="Eq02.py" complexity="0" line-rate="0.9604" branch-rate="0"> + <methods/> + <lines> + <line number="8" hits="1"/> + <line number="9" hits="1"/> + <line number="10" hits="1"/> + <line number="11" hits="1"/> + <line number="12" hits="1"/> + <line number="13" hits="1"/> + <line number="14" hits="1"/> + <line number="15" hits="1"/> + <line number="16" hits="1"/> + <line number="19" hits="1"/> + <line number="93" hits="1"/> + <line number="94" hits="0"/> + <line number="96" hits="1"/> + <line number="97" hits="1"/> + <line number="100" hits="1"/> + <line number="101" hits="1"/> + <line number="103" hits="1"/> + <line number="104" hits="1"/> + <line number="107" hits="1"/> + <line number="108" hits="1"/> + <line number="110" hits="1"/> + <line number="113" hits="1"/> + <line number="116" hits="1"/> + <line number="117" hits="1"/> + <line number="120" hits="1"/> + <line number="121" hits="1"/> + <line number="122" hits="1"/> + <line number="125" hits="1"/> + <line number="126" hits="1"/> + <line number="129" hits="1"/> + <line number="130" hits="1"/> + <line number="131" hits="1"/> + <line number="132" hits="1"/> + <line number="133" hits="1"/> + <line number="134" hits="1"/> + <line number="137" hits="1"/> + <line number="138" hits="1"/> + <line number="139" hits="1"/> + <line number="140" hits="1"/> + <line number="141" hits="1"/> + <line number="142" hits="1"/> + <line number="146" hits="1"/> + <line number="147" hits="1"/> + <line number="148" hits="1"/> + <line number="149" hits="1"/> + <line number="151" hits="1"/> + <line number="152" hits="1"/> + <line number="156" hits="1"/> + <line number="158" hits="1"/> + <line number="159" hits="1"/> + <line number="160" hits="1"/> + <line number="161" hits="1"/> + <line number="162" hits="1"/> + <line number="163" hits="1"/> + <line number="164" hits="1"/> + <line number="166" hits="1"/> + <line number="167" hits="1"/> + <line number="168" hits="1"/> + <line number="169" hits="1"/> + <line number="170" hits="1"/> + <line number="171" hits="1"/> + <line number="172" hits="1"/> + <line number="176" hits="1"/> + <line number="178" hits="1"/> + <line number="179" hits="1"/> + <line number="182" hits="1"/> + <line number="183" hits="1"/> + <line number="186" hits="1"/> + <line number="187" hits="1"/> + <line number="189" hits="1"/> + <line number="196" hits="1"/> + <line number="199" hits="1"/> + <line number="202" hits="1"/> + <line number="203" hits="1"/> + <line number="204" hits="1"/> + <line number="205" hits="1"/> + <line number="206" hits="1"/> + <line number="208" hits="0"/> + <line number="209" hits="0"/> + <line number="211" hits="0"/> + <line number="212" hits="1"/> + <line number="213" hits="1"/> + <line number="216" hits="1"/> + <line number="217" hits="1"/> + <line number="218" hits="1"/> + <line number="219" hits="1"/> + <line number="222" hits="1"/> + <line number="225" hits="1"/> + <line number="226" hits="1"/> + <line number="227" hits="1"/> + <line number="228" hits="1"/> + <line number="231" hits="1"/> + <line number="232" hits="1"/> + <line number="234" hits="1"/> + <line number="235" hits="1"/> + <line number="237" hits="1"/> + <line number="238" hits="1"/> + <line number="239" hits="1"/> + <line number="240" hits="1"/> + <line number="241" hits="1"/> + <line number="243" hits="1"/> + </lines> + </class> + <class name="Eq04.py" filename="Eq04.py" complexity="0" line-rate="0.9558" branch-rate="0"> + <methods/> + <lines> + <line number="8" hits="1"/> + <line number="9" hits="1"/> + <line number="10" hits="1"/> + <line number="11" hits="1"/> + <line number="12" hits="1"/> + <line number="13" hits="1"/> + <line number="14" hits="1"/> + <line number="15" hits="1"/> + <line number="16" hits="1"/> + <line number="19" hits="1"/> + <line number="89" hits="1"/> + <line number="90" hits="1"/> + <line number="93" hits="1"/> + <line number="94" hits="1"/> + <line number="96" hits="1"/> + <line number="97" hits="1"/> + <line number="100" hits="1"/> + <line number="101" hits="1"/> + <line number="103" hits="1"/> + <line number="106" hits="1"/> + <line number="109" hits="1"/> + <line number="110" hits="1"/> + <line number="113" hits="1"/> + <line number="114" hits="1"/> + <line number="115" hits="1"/> + <line number="118" hits="1"/> + <line number="119" hits="1"/> + <line number="120" hits="1"/> + <line number="121" hits="1"/> + <line number="124" hits="1"/> + <line number="125" hits="1"/> + <line number="126" hits="1"/> + <line number="127" hits="1"/> + <line number="128" hits="1"/> + <line number="129" hits="1"/> + <line number="130" hits="1"/> + <line number="131" hits="1"/> + <line number="132" hits="1"/> + <line number="133" hits="1"/> + <line number="136" hits="1"/> + <line number="137" hits="1"/> + <line number="138" hits="1"/> + <line number="139" hits="1"/> + <line number="140" hits="1"/> + <line number="141" hits="1"/> + <line number="142" hits="1"/> + <line number="143" hits="1"/> + <line number="144" hits="1"/> + <line number="145" hits="1"/> + <line number="149" hits="1"/> + <line number="150" hits="1"/> + <line number="151" hits="1"/> + <line number="152" hits="1"/> + <line number="154" hits="1"/> + <line number="155" hits="1"/> + <line number="157" hits="1"/> + <line number="158" hits="1"/> + <line number="160" hits="1"/> + <line number="161" hits="1"/> + <line number="164" hits="1"/> + <line number="169" hits="1"/> + <line number="171" hits="1"/> + <line number="172" hits="1"/> + <line number="175" hits="1"/> + <line number="176" hits="1"/> + <line number="179" hits="1"/> + <line number="180" hits="1"/> + <line number="184" hits="1"/> + <line number="194" hits="1"/> + <line number="195" hits="1"/> + <line number="201" hits="1"/> + <line number="202" hits="1"/> + <line number="205" hits="1"/> + <line number="206" hits="1"/> + <line number="209" hits="1"/> + <line number="210" hits="1"/> + <line number="212" hits="1"/> + <line number="213" hits="1"/> + <line number="215" hits="1"/> + <line number="225" hits="1"/> + <line number="228" hits="1"/> + <line number="229" hits="1"/> + <line number="230" hits="1"/> + <line number="231" hits="1"/> + <line number="233" hits="1"/> + <line number="234" hits="1"/> + <line number="235" hits="1"/> + <line number="236" hits="1"/> + <line number="239" hits="1"/> + <line number="242" hits="1"/> + <line number="243" hits="1"/> + <line number="244" hits="1"/> + <line number="245" hits="1"/> + <line number="246" hits="1"/> + <line number="248" hits="0"/> + <line number="249" hits="0"/> + <line number="251" hits="0"/> + <line number="252" hits="1"/> + <line number="253" hits="1"/> + <line number="256" hits="1"/> + <line number="257" hits="1"/> + <line number="258" hits="1"/> + <line number="259" hits="1"/> + <line number="262" hits="1"/> + <line number="265" hits="1"/> + <line number="266" hits="1"/> + <line number="267" hits="1"/> + <line number="268" hits="1"/> + <line number="269" hits="1"/> + <line number="270" hits="1"/> + <line number="272" hits="1"/> + <line number="273" hits="0"/> + <line number="274" hits="0"/> + </lines> + </class> + <class name="EqN.py" filename="EqN.py" complexity="0" line-rate="0.9364" branch-rate="0"> + <methods/> + <lines> + <line number="8" hits="1"/> + <line number="9" hits="1"/> + <line number="10" hits="1"/> + <line number="11" hits="1"/> + <line number="12" hits="1"/> + <line number="13" hits="1"/> + <line number="14" hits="1"/> + <line number="15" hits="1"/> + <line number="16" hits="1"/> + <line number="18" hits="1"/> + <line number="82" hits="1"/> + <line number="83" hits="0"/> + <line number="84" hits="1"/> + <line number="85" hits="0"/> + <line number="87" hits="1"/> + <line number="88" hits="1"/> + <line number="91" hits="1"/> + <line number="92" hits="1"/> + <line number="94" hits="1"/> + <line number="95" hits="1"/> + <line number="98" hits="1"/> + <line number="99" hits="1"/> + <line number="101" hits="1"/> + <line number="104" hits="1"/> + <line number="107" hits="1"/> + <line number="108" hits="1"/> + <line number="109" hits="1"/> + <line number="110" hits="1"/> + <line number="113" hits="1"/> + <line number="114" hits="1"/> + <line number="115" hits="1"/> + <line number="117" hits="1"/> + <line number="118" hits="1"/> + <line number="119" hits="1"/> + <line number="120" hits="1"/> + <line number="123" hits="1"/> + <line number="124" hits="1"/> + <line number="127" hits="1"/> + <line number="128" hits="1"/> + <line number="129" hits="1"/> + <line number="130" hits="1"/> + <line number="131" hits="1"/> + <line number="132" hits="1"/> + <line number="135" hits="1"/> + <line number="136" hits="1"/> + <line number="137" hits="1"/> + <line number="138" hits="1"/> + <line number="139" hits="1"/> + <line number="140" hits="1"/> + <line number="143" hits="1"/> + <line number="144" hits="1"/> + <line number="145" hits="1"/> + <line number="146" hits="1"/> + <line number="148" hits="1"/> + <line number="149" hits="1"/> + <line number="152" hits="1"/> + <line number="155" hits="1"/> + <line number="156" hits="1"/> + <line number="157" hits="1"/> + <line number="158" hits="1"/> + <line number="159" hits="1"/> + <line number="160" hits="1"/> + <line number="161" hits="1"/> + <line number="162" hits="1"/> + <line number="165" hits="1"/> + <line number="167" hits="1"/> + <line number="168" hits="1"/> + <line number="169" hits="1"/> + <line number="170" hits="1"/> + <line number="171" hits="1"/> + <line number="174" hits="1"/> + <line number="175" hits="1"/> + <line number="176" hits="1"/> + <line number="177" hits="1"/> + <line number="180" hits="1"/> + <line number="187" hits="1"/> + <line number="188" hits="1"/> + <line number="191" hits="1"/> + <line number="192" hits="0"/> + <line number="194" hits="0"/> + <line number="195" hits="1"/> + <line number="198" hits="1"/> + <line number="199" hits="1"/> + <line number="202" hits="1"/> + <line number="203" hits="1"/> + <line number="204" hits="1"/> + <line number="205" hits="1"/> + <line number="208" hits="1"/> + <line number="211" hits="1"/> + <line number="212" hits="1"/> + <line number="213" hits="1"/> + <line number="214" hits="1"/> + <line number="215" hits="1"/> + <line number="217" hits="0"/> + <line number="218" hits="0"/> + <line number="220" hits="0"/> + <line number="221" hits="1"/> + <line number="222" hits="1"/> + <line number="225" hits="1"/> + <line number="226" hits="1"/> + <line number="227" hits="1"/> + <line number="228" hits="1"/> + <line number="231" hits="1"/> + <line number="232" hits="1"/> + <line number="233" hits="1"/> + <line number="234" hits="1"/> + <line number="235" hits="1"/> + <line number="236" hits="1"/> + <line number="237" hits="1"/> + <line number="238" hits="1"/> + </lines> + </class> + <class name="Helper_DoubleLayerCapacity.py" filename="Helper_DoubleLayerCapacity.py" complexity="0" line-rate="0.977" branch-rate="0"> + <methods/> + <lines> + <line number="4" hits="1"/> + <line number="5" hits="1"/> + <line number="9" hits="1"/> + <line number="23" hits="1"/> + <line number="25" hits="1"/> + <line number="41" hits="1"/> + <line number="43" hits="1"/> + <line number="59" hits="1"/> + <line number="61" hits="1"/> + <line number="77" hits="1"/> + <line number="78" hits="1"/> + <line number="79" hits="1"/> + <line number="80" hits="1"/> + <line number="82" hits="1"/> + <line number="108" hits="1"/> + <line number="109" hits="1"/> + <line number="110" hits="1"/> + <line number="112" hits="1"/> + <line number="144" hits="1"/> + <line number="145" hits="1"/> + <line number="146" hits="1"/> + <line number="147" hits="1"/> + <line number="148" hits="1"/> + <line number="150" hits="1"/> + <line number="188" hits="1"/> + <line number="189" hits="0"/> + <line number="190" hits="1"/> + <line number="191" hits="1"/> + <line number="192" hits="1"/> + <line number="194" hits="1"/> + <line number="195" hits="1"/> + <line number="196" hits="1"/> + <line number="199" hits="1"/> + <line number="200" hits="1"/> + <line number="202" hits="1"/> + <line number="203" hits="1"/> + <line number="204" hits="1"/> + <line number="206" hits="1"/> + <line number="207" hits="1"/> + <line number="208" hits="1"/> + <line number="210" hits="1"/> + <line number="212" hits="1"/> + <line number="214" hits="1"/> + <line number="215" hits="1"/> + <line number="217" hits="1"/> + <line number="218" hits="1"/> + <line number="221" hits="1"/> + <line number="265" hits="1"/> + <line number="266" hits="1"/> + <line number="267" hits="1"/> + <line number="268" hits="1"/> + <line number="269" hits="1"/> + <line number="273" hits="1"/> + <line number="311" hits="1"/> + <line number="312" hits="0"/> + <line number="313" hits="1"/> + <line number="314" hits="1"/> + <line number="315" hits="1"/> + <line number="317" hits="1"/> + <line number="318" hits="1"/> + <line number="319" hits="1"/> + <line number="321" hits="1"/> + <line number="323" hits="1"/> + <line number="324" hits="1"/> + <line number="326" hits="1"/> + <line number="328" hits="1"/> + <line number="329" hits="1"/> + <line number="331" hits="1"/> + <line number="333" hits="1"/> + <line number="334" hits="1"/> + <line number="335" hits="1"/> + <line number="337" hits="1"/> + <line number="338" hits="1"/> + <line number="340" hits="1"/> + <line number="341" hits="1"/> + <line number="343" hits="1"/> + <line number="344" hits="1"/> + <line number="346" hits="1"/> + <line number="348" hits="1"/> + <line number="350" hits="1"/> + <line number="355" hits="1"/> + <line number="403" hits="1"/> + <line number="404" hits="1"/> + <line number="406" hits="1"/> + <line number="407" hits="1"/> + <line number="408" hits="1"/> + <line number="409" hits="1"/> + </lines> + </class> + <class name="RefinedMesh1D.py" filename="RefinedMesh1D.py" complexity="0" line-rate="0.8519" branch-rate="0"> + <methods/> + <lines> + <line number="8" hits="1"/> + <line number="9" hits="1"/> + <line number="10" hits="1"/> + <line number="11" hits="1"/> + <line number="12" hits="1"/> + <line number="16" hits="1"/> + <line number="32" hits="1"/> + <line number="33" hits="1"/> + <line number="34" hits="1"/> + <line number="35" hits="1"/> + <line number="36" hits="1"/> + <line number="37" hits="1"/> + <line number="38" hits="0"/> + <line number="39" hits="0"/> + <line number="40" hits="0"/> + <line number="41" hits="0"/> + <line number="42" hits="1"/> + <line number="43" hits="1"/> + <line number="44" hits="1"/> + <line number="45" hits="1"/> + <line number="46" hits="1"/> + <line number="47" hits="1"/> + <line number="48" hits="1"/> + <line number="49" hits="1"/> + <line number="50" hits="1"/> + <line number="51" hits="1"/> + <line number="52" hits="1"/> + </lines> + </class> + <class name="__init__.py" filename="__init__.py" complexity="0" line-rate="1" branch-rate="0"> + <methods/> + <lines> + <line number="1" hits="1"/> + <line number="3" hits="1"/> + <line number="4" hits="1"/> + <line number="5" hits="1"/> + <line number="6" hits="1"/> + <line number="7" hits="1"/> + <line number="8" hits="1"/> + </lines> + </class> + </classes> + </package> + </packages> +</coverage> diff --git a/fxdgm/ElectrolyticDiode.py b/fxdgm/ElectrolyticDiode.py index 836b48c..5016d42 100644 --- a/fxdgm/ElectrolyticDiode.py +++ b/fxdgm/ElectrolyticDiode.py @@ -337,7 +337,7 @@ def ElectrolyticDiode(Bias_type:str, phi_bias:float, g_phi:float, z_A:float, z_C else: raise ValueError('Invalid return_type') -if __name__ == '__main__': +if __name__ == '__main__': # pragma: no cover # dont cover main in coverage phi_bias = 10#10 Bias_type = 'ForwardBias' # 'ForwardBias', 'NoBias', 'BackwardBias' g_phi = 350#5 diff --git a/fxdgm/Eq02.py b/fxdgm/Eq02.py index bf40e41..15f96f4 100644 --- a/fxdgm/Eq02.py +++ b/fxdgm/Eq02.py @@ -242,47 +242,47 @@ def solve_System_2eq(phi_left:float, phi_right:float, p_right:float, z_A:float, return y_A_vals, y_C_vals, phi_vals, p_vals, x_vals -if __name__ == '__main__': - # Define the parameters - phi_left = 5.0 - phi_right = 0.0 - p_right = 0.0 - y_A_R = 1/3 - y_C_R = 1/3 - z_A = -1.0 - z_C = 1.0 - K = 'incompressible' - Lambda2 = 8.553e-6 - a2 = 7.5412e-4 - number_cells = 1024 - relax_param = .1 - rtol = 1e-4 - max_iter = 500 +# if __name__ == '__main__': +# # Define the parameters +# phi_left = 5.0 +# phi_right = 0.0 +# p_right = 0.0 +# y_A_R = 1/3 +# y_C_R = 1/3 +# z_A = -1.0 +# z_C = 1.0 +# K = 'incompressible' +# Lambda2 = 8.553e-6 +# a2 = 7.5412e-4 +# number_cells = 1024 +# relax_param = .1 +# rtol = 1e-4 +# max_iter = 500 - # Solve the system - y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol) +# # Solve the system +# y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol) - # Plot the solution - plt.plot(x, phi) - plt.xlim(0,0.05) - plt.grid() - plt.xlabel('x [-]') - plt.ylabel('$\\varphi$ [-]') - plt.show() +# # Plot the solution +# plt.plot(x, phi) +# plt.xlim(0,0.05) +# plt.grid() +# plt.xlabel('x [-]') +# plt.ylabel('$\\varphi$ [-]') +# plt.show() - plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$') - plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$') - plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$') - plt.xlim(0,0.05) - plt.legend() - plt.grid() - plt.xlabel('x [-]') - plt.ylabel('$y_\\alpha$ [-]') - plt.show() +# plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$') +# plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$') +# plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$') +# plt.xlim(0,0.05) +# plt.legend() +# plt.grid() +# plt.xlabel('x [-]') +# plt.ylabel('$y_\\alpha$ [-]') +# plt.show() - plt.plot(x, p) - plt.xlim(0,0.05) - plt.grid() - plt.xlabel('x [-]') - plt.ylabel('$p$ [-]') - plt.show() +# plt.plot(x, p) +# plt.xlim(0,0.05) +# plt.grid() +# plt.xlabel('x [-]') +# plt.ylabel('$p$ [-]') +# plt.show() diff --git a/fxdgm/Eq04.py b/fxdgm/Eq04.py index a370fff..95cbdf9 100644 --- a/fxdgm/Eq04.py +++ b/fxdgm/Eq04.py @@ -274,7 +274,7 @@ def solve_System_4eq(phi_left:float, phi_right:float, p_right:float, z_A:float, return y_A, y_C, phi, p, msh -if __name__ == '__main__': +if __name__ == '__main__': # pragma: no cover # dont cover main in coverage # Define the parameters phi_left = 10.0 phi_right = 0.0 diff --git a/fxdgm/EqN.py b/fxdgm/EqN.py index b24a077..5c847d9 100644 --- a/fxdgm/EqN.py +++ b/fxdgm/EqN.py @@ -238,7 +238,7 @@ def solve_System_Neq(phi_left:float, phi_right:float, p_right:float, z_alpha:lis return y, phi, p, x -if __name__ == '__main__': +if __name__ == '__main__': # pragma: no cover # dont cover main in coverage # Define the parameters phi_left = 8.0 phi_right = 0.0 -- GitLab From cca2aa83478d7ff48a72d8536bd4c148a444ad8c Mon Sep 17 00:00:00 2001 From: JanHab <jan.habscheid@rwth-aachen.de> Date: Tue, 11 Feb 2025 12:07:37 +0100 Subject: [PATCH 3/7] Try out coverage --- .coverage | Bin 53248 -> 53248 bytes coverage.xml | 4 +-- fxdgm/Eq02.py | 80 +++++++++++++++++++++++++------------------------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.coverage b/.coverage index a9320ef354670acb84953dfaf7fc2b2f67903333..f50d7eead9a1e192f1d3388d0616e50d9d8c294c 100644 GIT binary patch delta 522 zcmZozz}&Eac>}A1AnzXr{+;}p{Azr+_@?uP^8VQ@DDaGzEu5W&q0xA9gTFe5Zb@o! zNoHR9<WxTuHU~DKI4ek88YZrvR*{mPtM6Lqr&mzv$O@Ea2g%D|$Qzgd6?m}#6-a^< zsG=zdN=?hmOHJ`jEzU4>0U5=N$0#G90zW380!5HfnrKG3=A<T<6y@hsmSiToWag)& z0#&;*0#);aR3m)!&R<-R_b&r~7QZ^*48AblzkIj(cL4+7IWJ2D3()(F@frxlsd1_- zjx0dW14X6KEd+a>&4~r*cc3(8*ns`c>dgZ5I#6B(O*^{RS@0MH@;S3V3((_0gEY_# d!sc-%R~DeZ8T}Dn+59g4x;~@!=41U<4gjPeswe;e delta 313 zcmZozz}&Eac>}A1AfE*T{~`V=eh0oke24ft`7AaI3Mlch`LnYyG%8Pi;HN&>&`*Wc zoQ;{G6vPwKPpe2t&((J=^wTS-v|wdsC<h6Pz=aJ=fZ|RpK;4{R-TeOItQO3e%8Y=@ z+?asM1i{MY`Af6fFfudLgL&`##Rd5+8ThOD9r+IPb@5s9{pCLlbeJ+9O8^VdS&VTS zlMUlknJt)0L2N;|?I1_7Su&S{M1|p^U^lTkvjCk0(#an$!HlT}<RE5u7NC1TYUahu Xu-GuygZ;4iUHo-@M()kW`mG!Q@0VLz diff --git a/coverage.xml b/coverage.xml index 4394685..3d7d1a1 100644 --- a/coverage.xml +++ b/coverage.xml @@ -1,9 +1,9 @@ <?xml version="1.0" ?> -<coverage version="7.6.11" timestamp="1739271601600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0"> +<coverage version="7.6.11" timestamp="1739272050600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0"> <!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.11 --> <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> <sources> - <source>/Users/janhabscheid/Documents/git/fxdgm/fxdgm</source> + <source>/Users/janhabscheid/Documents/git/fxdgm-testing/fxdgm</source> </sources> <packages> <package name="." line-rate="0.9475" branch-rate="0" complexity="0"> diff --git a/fxdgm/Eq02.py b/fxdgm/Eq02.py index 15f96f4..b006ed3 100644 --- a/fxdgm/Eq02.py +++ b/fxdgm/Eq02.py @@ -242,47 +242,47 @@ def solve_System_2eq(phi_left:float, phi_right:float, p_right:float, z_A:float, return y_A_vals, y_C_vals, phi_vals, p_vals, x_vals -# if __name__ == '__main__': -# # Define the parameters -# phi_left = 5.0 -# phi_right = 0.0 -# p_right = 0.0 -# y_A_R = 1/3 -# y_C_R = 1/3 -# z_A = -1.0 -# z_C = 1.0 -# K = 'incompressible' -# Lambda2 = 8.553e-6 -# a2 = 7.5412e-4 -# number_cells = 1024 -# relax_param = .1 -# rtol = 1e-4 -# max_iter = 500 +if __name__ == '__main__': # pragma: no cover # dont cover main in coverage + # Define the parameters + phi_left = 5.0 + phi_right = 0.0 + p_right = 0.0 + y_A_R = 1/3 + y_C_R = 1/3 + z_A = -1.0 + z_C = 1.0 + K = 'incompressible' + Lambda2 = 8.553e-6 + a2 = 7.5412e-4 + number_cells = 1024 + relax_param = .1 + rtol = 1e-4 + max_iter = 500 -# # Solve the system -# y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol) + # Solve the system + y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol) -# # Plot the solution -# plt.plot(x, phi) -# plt.xlim(0,0.05) -# plt.grid() -# plt.xlabel('x [-]') -# plt.ylabel('$\\varphi$ [-]') -# plt.show() + # Plot the solution + plt.plot(x, phi) + plt.xlim(0,0.05) + plt.grid() + plt.xlabel('x [-]') + plt.ylabel('$\\varphi$ [-]') + plt.show() -# plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$') -# plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$') -# plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$') -# plt.xlim(0,0.05) -# plt.legend() -# plt.grid() -# plt.xlabel('x [-]') -# plt.ylabel('$y_\\alpha$ [-]') -# plt.show() + plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$') + plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$') + plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$') + plt.xlim(0,0.05) + plt.legend() + plt.grid() + plt.xlabel('x [-]') + plt.ylabel('$y_\\alpha$ [-]') + plt.show() -# plt.plot(x, p) -# plt.xlim(0,0.05) -# plt.grid() -# plt.xlabel('x [-]') -# plt.ylabel('$p$ [-]') -# plt.show() + plt.plot(x, p) + plt.xlim(0,0.05) + plt.grid() + plt.xlabel('x [-]') + plt.ylabel('$p$ [-]') + plt.show() -- GitLab From 87aceceb8bcd348db6bc9f36c1de33e44378aba7 Mon Sep 17 00:00:00 2001 From: JanHab <jan.habscheid@rwth-aachen.de> Date: Tue, 11 Feb 2025 12:10:54 +0100 Subject: [PATCH 4/7] Update coverage to generate html --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 15763ec..90cd721 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,7 +50,7 @@ test: - docker script: # - python -m pytest # Run the tests - - pytest --cov=fxdgm --cov-report=xml --cov-report=term-missing tests/ # Run the tests and store coverage + - pytest --cov=fxdgm --cov-report=term --cov-report=html tests/ # Run the tests and store coverage artifacts: paths: - coverage.xml # Save the coverage report -- GitLab From a14885b92ef9381ee3d0773e72ca468b0cec8491 Mon Sep 17 00:00:00 2001 From: JanHab <jan.habscheid@rwth-aachen.de> Date: Tue, 11 Feb 2025 12:12:19 +0100 Subject: [PATCH 5/7] Update artifacts for storage --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 90cd721..4df2e31 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,7 +53,7 @@ test: - pytest --cov=fxdgm --cov-report=term --cov-report=html tests/ # Run the tests and store coverage artifacts: paths: - - coverage.xml # Save the coverage report + - htmlcov # Save the coverage report expire_in: 12 month # Optional: Set how long to keep the artifacts (default: 30 days) coverage: '/^TOTAL.*\s+(\d+\%)$/' -- GitLab From 8c7f4a86940117a6c00bb5de903a7c887d7f342f Mon Sep 17 00:00:00 2001 From: JanHab <jan.habscheid@rwth-aachen.de> Date: Wed, 12 Feb 2025 12:24:54 +0100 Subject: [PATCH 6/7] Update base docker image to (hopefully) get the testing problem to run --- .gitignore | 3 +++ Dockerfile | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4554ccf..f353371 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ *.pytest_cache* # ignore Sphinx documentation output *docs/build +# Ignore coverage files +.coverage +htmlcov # Ignore pip folder *egg-info/* # Ignore venv files diff --git a/Dockerfile b/Dockerfile index b58959d..dd58c7c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start with a base image that includes conda -FROM continuumio/miniconda3 +FROM continuumio/miniconda3:latest # Set environment variables ENV CONDA_DEFAULT_ENV=base @@ -7,15 +7,14 @@ ENV PATH /opt/conda/envs/${CONDA_DEFAULT_ENV}/bin:$PATH ENV HOME /root # Create the environment and install packages +# RUN conda install -n ${CONDA_DEFAULT_ENV} python=3.11.8 -y # FEniCSx backend + documentation and testing dependencies -RUN conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest==8.3.3 pytest-cov==6.0.0 -y -# fxdgm package from git +RUN conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest=8.3.3 pytest-cov=6.0.0 sqlite=3.41.2 -y # Activate environment # SHELL ["conda", "run", "-n", "fenicsx-env", "/bin/bash", "-c"] WORKDIR /root -# WORKDIR /solver ADD . /fxdgm RUN pip install --editable /fxdgm/. -- GitLab From 14e10267ca05142d808be1ccf988d423501166be Mon Sep 17 00:00:00 2001 From: JanHab <jan.habscheid@rwth-aachen.de> Date: Wed, 12 Feb 2025 14:48:31 +0100 Subject: [PATCH 7/7] Update comments and rm coverage from repo, just keep as artefact --- .coverage | Bin 53248 -> 0 bytes .gitlab-ci.yml | 1 - Dockerfile | 5 +- coverage.xml | 640 ------------------------------------------------- 4 files changed, 1 insertion(+), 645 deletions(-) delete mode 100644 .coverage delete mode 100644 coverage.xml diff --git a/.coverage b/.coverage deleted file mode 100644 index f50d7eead9a1e192f1d3388d0616e50d9d8c294c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4df2e31..cf48a98 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,7 +49,6 @@ test: tags: - docker script: - # - python -m pytest # Run the tests - pytest --cov=fxdgm --cov-report=term --cov-report=html tests/ # Run the tests and store coverage artifacts: paths: diff --git a/Dockerfile b/Dockerfile index dd58c7c..ae690b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,13 +7,10 @@ ENV PATH /opt/conda/envs/${CONDA_DEFAULT_ENV}/bin:$PATH ENV HOME /root # Create the environment and install packages -# RUN conda install -n ${CONDA_DEFAULT_ENV} python=3.11.8 -y # FEniCSx backend + documentation and testing dependencies +# sqlite for coverage, it necessary RUN conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest=8.3.3 pytest-cov=6.0.0 sqlite=3.41.2 -y -# Activate environment -# SHELL ["conda", "run", "-n", "fenicsx-env", "/bin/bash", "-c"] - WORKDIR /root ADD . /fxdgm diff --git a/coverage.xml b/coverage.xml deleted file mode 100644 index 3d7d1a1..0000000 --- a/coverage.xml +++ /dev/null @@ -1,640 +0,0 @@ -<?xml version="1.0" ?> -<coverage version="7.6.11" timestamp="1739272050600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0"> - <!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.11 --> - <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> - <sources> - <source>/Users/janhabscheid/Documents/git/fxdgm-testing/fxdgm</source> - </sources> - <packages> - <package name="." line-rate="0.9475" branch-rate="0" complexity="0"> - <classes> - <class name="ElectrolyticDiode.py" filename="ElectrolyticDiode.py" complexity="0" line-rate="0.9384" branch-rate="0"> - <methods/> - <lines> - <line number="10" hits="1"/> - <line number="11" hits="1"/> - <line number="12" hits="1"/> - <line number="13" hits="1"/> - <line number="14" hits="1"/> - <line number="15" hits="1"/> - <line number="16" hits="1"/> - <line number="17" hits="1"/> - <line number="18" hits="1"/> - <line number="19" hits="1"/> - <line number="21" hits="1"/> - <line number="82" hits="1"/> - <line number="83" hits="0"/> - <line number="84" hits="1"/> - <line number="85" hits="1"/> - <line number="86" hits="1"/> - <line number="87" hits="1"/> - <line number="88" hits="0"/> - <line number="89" hits="0"/> - <line number="90" hits="0"/> - <line number="93" hits="1"/> - <line number="94" hits="1"/> - <line number="95" hits="0"/> - <line number="97" hits="1"/> - <line number="98" hits="0"/> - <line number="100" hits="1"/> - <line number="101" hits="1"/> - <line number="103" hits="1"/> - <line number="104" hits="1"/> - <line number="106" hits="1"/> - <line number="107" hits="1"/> - <line number="108" hits="1"/> - <line number="109" hits="1"/> - <line number="111" hits="1"/> - <line number="112" hits="1"/> - <line number="113" hits="1"/> - <line number="114" hits="1"/> - <line number="116" hits="1"/> - <line number="117" hits="1"/> - <line number="118" hits="1"/> - <line number="119" hits="1"/> - <line number="121" hits="1"/> - <line number="122" hits="1"/> - <line number="123" hits="1"/> - <line number="124" hits="1"/> - <line number="127" hits="1"/> - <line number="130" hits="1"/> - <line number="135" hits="1"/> - <line number="136" hits="1"/> - <line number="139" hits="1"/> - <line number="140" hits="1"/> - <line number="141" hits="1"/> - <line number="144" hits="1"/> - <line number="145" hits="1"/> - <line number="146" hits="1"/> - <line number="147" hits="1"/> - <line number="149" hits="1"/> - <line number="150" hits="1"/> - <line number="151" hits="1"/> - <line number="152" hits="1"/> - <line number="153" hits="1"/> - <line number="154" hits="1"/> - <line number="155" hits="1"/> - <line number="156" hits="1"/> - <line number="157" hits="1"/> - <line number="158" hits="1"/> - <line number="159" hits="1"/> - <line number="160" hits="1"/> - <line number="162" hits="1"/> - <line number="163" hits="1"/> - <line number="164" hits="1"/> - <line number="165" hits="1"/> - <line number="166" hits="1"/> - <line number="167" hits="1"/> - <line number="168" hits="1"/> - <line number="169" hits="1"/> - <line number="170" hits="1"/> - <line number="171" hits="1"/> - <line number="172" hits="1"/> - <line number="173" hits="1"/> - <line number="176" hits="1"/> - <line number="177" hits="1"/> - <line number="178" hits="1"/> - <line number="179" hits="1"/> - <line number="181" hits="1"/> - <line number="182" hits="1"/> - <line number="183" hits="1"/> - <line number="184" hits="1"/> - <line number="186" hits="1"/> - <line number="187" hits="1"/> - <line number="188" hits="1"/> - <line number="189" hits="1"/> - <line number="192" hits="1"/> - <line number="212" hits="1"/> - <line number="246" hits="1"/> - <line number="247" hits="1"/> - <line number="250" hits="1"/> - <line number="251" hits="1"/> - <line number="253" hits="1"/> - <line number="254" hits="1"/> - <line number="262" hits="1"/> - <line number="274" hits="1"/> - <line number="275" hits="1"/> - <line number="276" hits="1"/> - <line number="277" hits="1"/> - <line number="278" hits="1"/> - <line number="279" hits="1"/> - <line number="280" hits="1"/> - <line number="281" hits="1"/> - <line number="282" hits="1"/> - <line number="283" hits="1"/> - <line number="284" hits="1"/> - <line number="285" hits="1"/> - <line number="286" hits="1"/> - <line number="287" hits="1"/> - <line number="295" hits="1"/> - <line number="298" hits="1"/> - <line number="299" hits="1"/> - <line number="300" hits="1"/> - <line number="301" hits="1"/> - <line number="303" hits="1"/> - <line number="304" hits="1"/> - <line number="305" hits="1"/> - <line number="306" hits="1"/> - <line number="309" hits="1"/> - <line number="311" hits="1"/> - <line number="312" hits="1"/> - <line number="313" hits="1"/> - <line number="314" hits="1"/> - <line number="315" hits="1"/> - <line number="316" hits="1"/> - <line number="319" hits="1"/> - <line number="320" hits="1"/> - <line number="321" hits="1"/> - <line number="322" hits="1"/> - <line number="325" hits="1"/> - <line number="326" hits="1"/> - <line number="327" hits="1"/> - <line number="328" hits="1"/> - <line number="330" hits="1"/> - <line number="331" hits="1"/> - <line number="333" hits="1"/> - <line number="334" hits="1"/> - <line number="335" hits="0"/> - <line number="336" hits="0"/> - <line number="338" hits="0"/> - </lines> - </class> - <class name="Eq02.py" filename="Eq02.py" complexity="0" line-rate="0.9604" branch-rate="0"> - <methods/> - <lines> - <line number="8" hits="1"/> - <line number="9" hits="1"/> - <line number="10" hits="1"/> - <line number="11" hits="1"/> - <line number="12" hits="1"/> - <line number="13" hits="1"/> - <line number="14" hits="1"/> - <line number="15" hits="1"/> - <line number="16" hits="1"/> - <line number="19" hits="1"/> - <line number="93" hits="1"/> - <line number="94" hits="0"/> - <line number="96" hits="1"/> - <line number="97" hits="1"/> - <line number="100" hits="1"/> - <line number="101" hits="1"/> - <line number="103" hits="1"/> - <line number="104" hits="1"/> - <line number="107" hits="1"/> - <line number="108" hits="1"/> - <line number="110" hits="1"/> - <line number="113" hits="1"/> - <line number="116" hits="1"/> - <line number="117" hits="1"/> - <line number="120" hits="1"/> - <line number="121" hits="1"/> - <line number="122" hits="1"/> - <line number="125" hits="1"/> - <line number="126" hits="1"/> - <line number="129" hits="1"/> - <line number="130" hits="1"/> - <line number="131" hits="1"/> - <line number="132" hits="1"/> - <line number="133" hits="1"/> - <line number="134" hits="1"/> - <line number="137" hits="1"/> - <line number="138" hits="1"/> - <line number="139" hits="1"/> - <line number="140" hits="1"/> - <line number="141" hits="1"/> - <line number="142" hits="1"/> - <line number="146" hits="1"/> - <line number="147" hits="1"/> - <line number="148" hits="1"/> - <line number="149" hits="1"/> - <line number="151" hits="1"/> - <line number="152" hits="1"/> - <line number="156" hits="1"/> - <line number="158" hits="1"/> - <line number="159" hits="1"/> - <line number="160" hits="1"/> - <line number="161" hits="1"/> - <line number="162" hits="1"/> - <line number="163" hits="1"/> - <line number="164" hits="1"/> - <line number="166" hits="1"/> - <line number="167" hits="1"/> - <line number="168" hits="1"/> - <line number="169" hits="1"/> - <line number="170" hits="1"/> - <line number="171" hits="1"/> - <line number="172" hits="1"/> - <line number="176" hits="1"/> - <line number="178" hits="1"/> - <line number="179" hits="1"/> - <line number="182" hits="1"/> - <line number="183" hits="1"/> - <line number="186" hits="1"/> - <line number="187" hits="1"/> - <line number="189" hits="1"/> - <line number="196" hits="1"/> - <line number="199" hits="1"/> - <line number="202" hits="1"/> - <line number="203" hits="1"/> - <line number="204" hits="1"/> - <line number="205" hits="1"/> - <line number="206" hits="1"/> - <line number="208" hits="0"/> - <line number="209" hits="0"/> - <line number="211" hits="0"/> - <line number="212" hits="1"/> - <line number="213" hits="1"/> - <line number="216" hits="1"/> - <line number="217" hits="1"/> - <line number="218" hits="1"/> - <line number="219" hits="1"/> - <line number="222" hits="1"/> - <line number="225" hits="1"/> - <line number="226" hits="1"/> - <line number="227" hits="1"/> - <line number="228" hits="1"/> - <line number="231" hits="1"/> - <line number="232" hits="1"/> - <line number="234" hits="1"/> - <line number="235" hits="1"/> - <line number="237" hits="1"/> - <line number="238" hits="1"/> - <line number="239" hits="1"/> - <line number="240" hits="1"/> - <line number="241" hits="1"/> - <line number="243" hits="1"/> - </lines> - </class> - <class name="Eq04.py" filename="Eq04.py" complexity="0" line-rate="0.9558" branch-rate="0"> - <methods/> - <lines> - <line number="8" hits="1"/> - <line number="9" hits="1"/> - <line number="10" hits="1"/> - <line number="11" hits="1"/> - <line number="12" hits="1"/> - <line number="13" hits="1"/> - <line number="14" hits="1"/> - <line number="15" hits="1"/> - <line number="16" hits="1"/> - <line number="19" hits="1"/> - <line number="89" hits="1"/> - <line number="90" hits="1"/> - <line number="93" hits="1"/> - <line number="94" hits="1"/> - <line number="96" hits="1"/> - <line number="97" hits="1"/> - <line number="100" hits="1"/> - <line number="101" hits="1"/> - <line number="103" hits="1"/> - <line number="106" hits="1"/> - <line number="109" hits="1"/> - <line number="110" hits="1"/> - <line number="113" hits="1"/> - <line number="114" hits="1"/> - <line number="115" hits="1"/> - <line number="118" hits="1"/> - <line number="119" hits="1"/> - <line number="120" hits="1"/> - <line number="121" hits="1"/> - <line number="124" hits="1"/> - <line number="125" hits="1"/> - <line number="126" hits="1"/> - <line number="127" hits="1"/> - <line number="128" hits="1"/> - <line number="129" hits="1"/> - <line number="130" hits="1"/> - <line number="131" hits="1"/> - <line number="132" hits="1"/> - <line number="133" hits="1"/> - <line number="136" hits="1"/> - <line number="137" hits="1"/> - <line number="138" hits="1"/> - <line number="139" hits="1"/> - <line number="140" hits="1"/> - <line number="141" hits="1"/> - <line number="142" hits="1"/> - <line number="143" hits="1"/> - <line number="144" hits="1"/> - <line number="145" hits="1"/> - <line number="149" hits="1"/> - <line number="150" hits="1"/> - <line number="151" hits="1"/> - <line number="152" hits="1"/> - <line number="154" hits="1"/> - <line number="155" hits="1"/> - <line number="157" hits="1"/> - <line number="158" hits="1"/> - <line number="160" hits="1"/> - <line number="161" hits="1"/> - <line number="164" hits="1"/> - <line number="169" hits="1"/> - <line number="171" hits="1"/> - <line number="172" hits="1"/> - <line number="175" hits="1"/> - <line number="176" hits="1"/> - <line number="179" hits="1"/> - <line number="180" hits="1"/> - <line number="184" hits="1"/> - <line number="194" hits="1"/> - <line number="195" hits="1"/> - <line number="201" hits="1"/> - <line number="202" hits="1"/> - <line number="205" hits="1"/> - <line number="206" hits="1"/> - <line number="209" hits="1"/> - <line number="210" hits="1"/> - <line number="212" hits="1"/> - <line number="213" hits="1"/> - <line number="215" hits="1"/> - <line number="225" hits="1"/> - <line number="228" hits="1"/> - <line number="229" hits="1"/> - <line number="230" hits="1"/> - <line number="231" hits="1"/> - <line number="233" hits="1"/> - <line number="234" hits="1"/> - <line number="235" hits="1"/> - <line number="236" hits="1"/> - <line number="239" hits="1"/> - <line number="242" hits="1"/> - <line number="243" hits="1"/> - <line number="244" hits="1"/> - <line number="245" hits="1"/> - <line number="246" hits="1"/> - <line number="248" hits="0"/> - <line number="249" hits="0"/> - <line number="251" hits="0"/> - <line number="252" hits="1"/> - <line number="253" hits="1"/> - <line number="256" hits="1"/> - <line number="257" hits="1"/> - <line number="258" hits="1"/> - <line number="259" hits="1"/> - <line number="262" hits="1"/> - <line number="265" hits="1"/> - <line number="266" hits="1"/> - <line number="267" hits="1"/> - <line number="268" hits="1"/> - <line number="269" hits="1"/> - <line number="270" hits="1"/> - <line number="272" hits="1"/> - <line number="273" hits="0"/> - <line number="274" hits="0"/> - </lines> - </class> - <class name="EqN.py" filename="EqN.py" complexity="0" line-rate="0.9364" branch-rate="0"> - <methods/> - <lines> - <line number="8" hits="1"/> - <line number="9" hits="1"/> - <line number="10" hits="1"/> - <line number="11" hits="1"/> - <line number="12" hits="1"/> - <line number="13" hits="1"/> - <line number="14" hits="1"/> - <line number="15" hits="1"/> - <line number="16" hits="1"/> - <line number="18" hits="1"/> - <line number="82" hits="1"/> - <line number="83" hits="0"/> - <line number="84" hits="1"/> - <line number="85" hits="0"/> - <line number="87" hits="1"/> - <line number="88" hits="1"/> - <line number="91" hits="1"/> - <line number="92" hits="1"/> - <line number="94" hits="1"/> - <line number="95" hits="1"/> - <line number="98" hits="1"/> - <line number="99" hits="1"/> - <line number="101" hits="1"/> - <line number="104" hits="1"/> - <line number="107" hits="1"/> - <line number="108" hits="1"/> - <line number="109" hits="1"/> - <line number="110" hits="1"/> - <line number="113" hits="1"/> - <line number="114" hits="1"/> - <line number="115" hits="1"/> - <line number="117" hits="1"/> - <line number="118" hits="1"/> - <line number="119" hits="1"/> - <line number="120" hits="1"/> - <line number="123" hits="1"/> - <line number="124" hits="1"/> - <line number="127" hits="1"/> - <line number="128" hits="1"/> - <line number="129" hits="1"/> - <line number="130" hits="1"/> - <line number="131" hits="1"/> - <line number="132" hits="1"/> - <line number="135" hits="1"/> - <line number="136" hits="1"/> - <line number="137" hits="1"/> - <line number="138" hits="1"/> - <line number="139" hits="1"/> - <line number="140" hits="1"/> - <line number="143" hits="1"/> - <line number="144" hits="1"/> - <line number="145" hits="1"/> - <line number="146" hits="1"/> - <line number="148" hits="1"/> - <line number="149" hits="1"/> - <line number="152" hits="1"/> - <line number="155" hits="1"/> - <line number="156" hits="1"/> - <line number="157" hits="1"/> - <line number="158" hits="1"/> - <line number="159" hits="1"/> - <line number="160" hits="1"/> - <line number="161" hits="1"/> - <line number="162" hits="1"/> - <line number="165" hits="1"/> - <line number="167" hits="1"/> - <line number="168" hits="1"/> - <line number="169" hits="1"/> - <line number="170" hits="1"/> - <line number="171" hits="1"/> - <line number="174" hits="1"/> - <line number="175" hits="1"/> - <line number="176" hits="1"/> - <line number="177" hits="1"/> - <line number="180" hits="1"/> - <line number="187" hits="1"/> - <line number="188" hits="1"/> - <line number="191" hits="1"/> - <line number="192" hits="0"/> - <line number="194" hits="0"/> - <line number="195" hits="1"/> - <line number="198" hits="1"/> - <line number="199" hits="1"/> - <line number="202" hits="1"/> - <line number="203" hits="1"/> - <line number="204" hits="1"/> - <line number="205" hits="1"/> - <line number="208" hits="1"/> - <line number="211" hits="1"/> - <line number="212" hits="1"/> - <line number="213" hits="1"/> - <line number="214" hits="1"/> - <line number="215" hits="1"/> - <line number="217" hits="0"/> - <line number="218" hits="0"/> - <line number="220" hits="0"/> - <line number="221" hits="1"/> - <line number="222" hits="1"/> - <line number="225" hits="1"/> - <line number="226" hits="1"/> - <line number="227" hits="1"/> - <line number="228" hits="1"/> - <line number="231" hits="1"/> - <line number="232" hits="1"/> - <line number="233" hits="1"/> - <line number="234" hits="1"/> - <line number="235" hits="1"/> - <line number="236" hits="1"/> - <line number="237" hits="1"/> - <line number="238" hits="1"/> - </lines> - </class> - <class name="Helper_DoubleLayerCapacity.py" filename="Helper_DoubleLayerCapacity.py" complexity="0" line-rate="0.977" branch-rate="0"> - <methods/> - <lines> - <line number="4" hits="1"/> - <line number="5" hits="1"/> - <line number="9" hits="1"/> - <line number="23" hits="1"/> - <line number="25" hits="1"/> - <line number="41" hits="1"/> - <line number="43" hits="1"/> - <line number="59" hits="1"/> - <line number="61" hits="1"/> - <line number="77" hits="1"/> - <line number="78" hits="1"/> - <line number="79" hits="1"/> - <line number="80" hits="1"/> - <line number="82" hits="1"/> - <line number="108" hits="1"/> - <line number="109" hits="1"/> - <line number="110" hits="1"/> - <line number="112" hits="1"/> - <line number="144" hits="1"/> - <line number="145" hits="1"/> - <line number="146" hits="1"/> - <line number="147" hits="1"/> - <line number="148" hits="1"/> - <line number="150" hits="1"/> - <line number="188" hits="1"/> - <line number="189" hits="0"/> - <line number="190" hits="1"/> - <line number="191" hits="1"/> - <line number="192" hits="1"/> - <line number="194" hits="1"/> - <line number="195" hits="1"/> - <line number="196" hits="1"/> - <line number="199" hits="1"/> - <line number="200" hits="1"/> - <line number="202" hits="1"/> - <line number="203" hits="1"/> - <line number="204" hits="1"/> - <line number="206" hits="1"/> - <line number="207" hits="1"/> - <line number="208" hits="1"/> - <line number="210" hits="1"/> - <line number="212" hits="1"/> - <line number="214" hits="1"/> - <line number="215" hits="1"/> - <line number="217" hits="1"/> - <line number="218" hits="1"/> - <line number="221" hits="1"/> - <line number="265" hits="1"/> - <line number="266" hits="1"/> - <line number="267" hits="1"/> - <line number="268" hits="1"/> - <line number="269" hits="1"/> - <line number="273" hits="1"/> - <line number="311" hits="1"/> - <line number="312" hits="0"/> - <line number="313" hits="1"/> - <line number="314" hits="1"/> - <line number="315" hits="1"/> - <line number="317" hits="1"/> - <line number="318" hits="1"/> - <line number="319" hits="1"/> - <line number="321" hits="1"/> - <line number="323" hits="1"/> - <line number="324" hits="1"/> - <line number="326" hits="1"/> - <line number="328" hits="1"/> - <line number="329" hits="1"/> - <line number="331" hits="1"/> - <line number="333" hits="1"/> - <line number="334" hits="1"/> - <line number="335" hits="1"/> - <line number="337" hits="1"/> - <line number="338" hits="1"/> - <line number="340" hits="1"/> - <line number="341" hits="1"/> - <line number="343" hits="1"/> - <line number="344" hits="1"/> - <line number="346" hits="1"/> - <line number="348" hits="1"/> - <line number="350" hits="1"/> - <line number="355" hits="1"/> - <line number="403" hits="1"/> - <line number="404" hits="1"/> - <line number="406" hits="1"/> - <line number="407" hits="1"/> - <line number="408" hits="1"/> - <line number="409" hits="1"/> - </lines> - </class> - <class name="RefinedMesh1D.py" filename="RefinedMesh1D.py" complexity="0" line-rate="0.8519" branch-rate="0"> - <methods/> - <lines> - <line number="8" hits="1"/> - <line number="9" hits="1"/> - <line number="10" hits="1"/> - <line number="11" hits="1"/> - <line number="12" hits="1"/> - <line number="16" hits="1"/> - <line number="32" hits="1"/> - <line number="33" hits="1"/> - <line number="34" hits="1"/> - <line number="35" hits="1"/> - <line number="36" hits="1"/> - <line number="37" hits="1"/> - <line number="38" hits="0"/> - <line number="39" hits="0"/> - <line number="40" hits="0"/> - <line number="41" hits="0"/> - <line number="42" hits="1"/> - <line number="43" hits="1"/> - <line number="44" hits="1"/> - <line number="45" hits="1"/> - <line number="46" hits="1"/> - <line number="47" hits="1"/> - <line number="48" hits="1"/> - <line number="49" hits="1"/> - <line number="50" hits="1"/> - <line number="51" hits="1"/> - <line number="52" hits="1"/> - </lines> - </class> - <class name="__init__.py" filename="__init__.py" complexity="0" line-rate="1" branch-rate="0"> - <methods/> - <lines> - <line number="1" hits="1"/> - <line number="3" hits="1"/> - <line number="4" hits="1"/> - <line number="5" hits="1"/> - <line number="6" hits="1"/> - <line number="7" hits="1"/> - <line number="8" hits="1"/> - </lines> - </class> - </classes> - </package> - </packages> -</coverage> -- GitLab