package Ġbutter knife . plugin Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runners . model . Statement Ċ import Ġjava . io . File Ċ Ċ class ĠBuild Files Rule ( private Ġval Ġroot : ĠFile ) Ġ: ĠTest Rule Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( base : ĠStatement , Ġdescription : ĠDescription ): ĠStatement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠStatement () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild File Ġ= ĠFile ( root , Ġ" build . gradle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Build File Ġ= Ġbuild File . exists () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Build File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( build File . read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild File Template Ġ= ĠFile ( root , Ġ"../../ build . gradle "). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild File . write Text ( build File Template ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanifest File Ġ= ĠFile ( root , Ġ" src / main / Android Manifest . xml ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Manifest File Ġ= Ġmanifest File . exists () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Manifest File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanifest File Template Ġ= ĠFile ( root , Ġ"../../ Android Manifest . xml "). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanifest File . write Text ( manifest File Template ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase . evaluate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Build File ) Ġbuild File . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Manifest File ) Ġmanifest File . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }