package Ġru . t ink off . all ure . android Ċ Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . uia utom ator . Ui Device Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runners . model . Statement Ċ import Ġru . t ink off . all ure . io . TEXT _ PLAIN Ċ import Ġru . t ink off . all ure . io . TXT _ EXTENSION Ċ import Ġru . t ink off . all ure . utils . create Attachment File Ċ Ċ class ĠLog cat Rule Ġ: ĠTest Rule Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( base : ĠStatement , Ġdescription : ĠDescription ): ĠStatement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠStatement () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Log cat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase . evaluate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdump Log cat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Log cat () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( Ui Device . getInstance ( Instrumentation Registry . get Instrumentation ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Shell Command (" log cat Ġ- c ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdump Log cat () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġcreate Attachment File () ĊĠĠĠĠĠĠĠ Ġwith ( Ui Device . getInstance ( Instrumentation Registry . get Instrumentation ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog cat Result Ġ= Ġexecute Shell Command (" log cat Ġ- d ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( log cat Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAll ure Android Lifecycle . add Attachment ( name Ġ= Ġ" log cat ", Ġtype Ġ= ĠTEXT _ PLAIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Extension Ġ= ĠTX T _ EXTENSION , Ġfile Ġ= Ġfile ) ĊĠĠĠ Ġ} Ċ }