/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . android . build . gradle . internal . cxx . caching Ċ Ċ import Ġcom . android . build . gradle . internal . cxx . logging . inf ol n Ċ import Ġcom . android . utils . FileUtils . join Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġjava . io . File Ċ Ċ object ĠEmpty Result Ċ Ċ class ĠC aching Environment Test Ġ{ ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġtemporary Folder Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` exception Ġis Ġlogged `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġtemporary Folder . new Folder () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC aching Environment ( folder ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache < String , ĠEmpty Result >(" key ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin fol n (" About Ġto Ġthrow Ġan Ġexception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Exception Ġthrown Ġby Ġcached Ġfunction ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( e . message ). isEqualTo (" Exception Ġthrown Ġby Ġcached Ġfunction ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Key Hash Ġ= Ġget Expected Key Hash ( folder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexception File Ġ= Ġjoin ( folder , Ġ" empty _ result _${ expected Key Hash }_ exception . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( exception File . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. named (" Did n 't Ġfind Ġ$ exception File Ġamong Ġ${ folder . list Files (). map Ġ{ Ġit . name Ġ}} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( exception File . read Text ()). contains (" Exception Ġthrown Ġby Ġcached Ġfunction ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog File Ġ= Ġjoin ( folder , Ġ" empty _ result _${ expected Key Hash }. log ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( log File . exists ()). isTrue () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( log File . read Text ()). contains (" About Ġto Ġthrow Ġan Ġexception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail (" Expected Ġan Ġexception ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` dont Ġleave Ġexception Ġfile Ġafter Ġsuccess `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġtemporary Folder . new Folder () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCause Ġexception Ġfile Ġto Ġbe Ġwritten ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC aching Environment ( folder ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache < String , ĠEmpty Result >(" key ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin fol n (" About Ġto Ġthrow Ġan Ġexception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Exception Ġthrown Ġby Ġcached Ġfunction ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠSame Ġrun Ġbut Ġnow Ġit Ġdoesn 't Ġthrow Ġan Ġexception ĊĠĠĠĠĠĠĠ ĠC aching Environment ( folder ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache (" key ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmpty Result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexpected Key Hash Ġ= Ġget Expected Key Hash ( folder ) ĊĠĠĠĠĠĠĠ Ġval Ġexception File Ġ= Ġjoin ( folder , Ġ" empty _ result _${ expected Key Hash }_ exception . txt ") ĊĠĠĠĠĠĠĠ ĠassertThat (! exception File . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. named (" Unexpected ly Ġfound Ġ$ exception File Ġamong Ġ${ folder . list Files (). map Ġ{ Ġit . name Ġ}} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Expected Key Hash ( folder : ĠFile ) Ġ= Ġfolder . list () !! ĊĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġit . startsWith (" empty _ result _ ") Ġ&& Ġit . endsWith (". log ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. remove Sur rounding (" empty _ result _", Ġ". log ") Ċ Ċ } Ċ