package Ġcom . github . j nt ak pe . prox ys witch er . file handler Ċ Ċ import Ġcom . github . j nt ak pe . prox ys witch er . utils . clean Up Tmp Dir Ċ import Ġcom . github . j nt ak pe . prox ys witch er . utils . tmp DirPath Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . catch Throwable Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . nio . file . Files Ċ Ċ internal Ġclass ĠBash File Handler Test Ġ{ ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠbeforeEach () Ġ{ ĊĠĠĠĠĠĠĠ Ġclean Up Tmp Dir () ĊĠĠĠĠĠĠĠ Ġcreate Empty B ash File () ĊĠĠĠĠĠĠĠ Ġcreate NotEmpty B ash File () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠafterEach () Ġ{ ĊĠĠĠĠĠĠĠ Ġclean Up Tmp Dir () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` init Ġshould Ġcreate Ġnew Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". bash _ profile ") ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( path ). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` init Ġshould Ġfail Ġif Ġfile Ġdoes Ġnot Ġexist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". unknown _ bash _ profile ") ĊĠĠĠĠĠĠĠ ĠassertThat ( catch Throwable Ġ{ ĠBash File Handler ( path , Ġfalse ) Ġ}). isInstanceOf ( FileNotFoundException :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġadd Ġentry Ġto Ġempty Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" newline " ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ" some Ġvalue " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( lines ). contains (" export Ġ$ key =$ value "). has Size ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġadd Ġproperty Ġto Ġexisting Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" newline " ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ" some Ġvalue " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġ" export Ġ$ key =$ value " ĊĠĠĠĠĠĠĠ ĠassertThat ( lines ). contains ( line ) ĊĠĠĠĠĠĠĠ ĠassertThat ( lines . size ). is GreaterThan ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( lines . last ()). isEqualTo ( line ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġnot Ġadd Ġproperty Ġif Ġkey Ġalready Ġexists `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġinit Size Ġ= ĠFiles . read All Lines ( path ). size ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" JAVA _ HOME " ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"/ some / path " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines ). has Size ( init Size ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines . filter Ġ{ Ġit . startsWith (" export Ġ$ key ") Ġ}). has Size ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġnot Ġadd Ġproperty Ġif Ġkey Ġalready Ġexists Ġignoring Ġcase `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġinit Size Ġ= ĠFiles . read All Lines ( path ). size ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" java _ home " ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"/ some / path " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines ). has Size ( init Size ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines . filter Ġ{ Ġit . startsWith (" export Ġ$ key ") Ġ}). has Size ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġedit Ġproperty Ġif Ġkey Ġalready Ġexists `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" JAVA _ HOME " ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"/ some / path " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines ). contains (" export Ġ$ key =$ value ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġedit Ġproperty Ġif Ġkey Ġalready Ġexists Ġignoring Ġcase `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" java _ home " ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ"/ some / path " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines ). contains (" export Ġ$ key =$ value ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` put Ġshould Ġedit Ġvalue Ġif Ġkey Ġexists `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" MONGO _ HOME " ĊĠĠĠĠĠĠĠ Ġval Ġupdated Value Ġ= Ġ"/ mongo / path " ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). put ( key , Ġupdated Value ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġexport Key Ġ= Ġ" export Ġ$ key " ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines . first Ġ{ Ġit . startsWith ( export Key ) Ġ}). isEqualTo ("$ export Key =$ updated Value ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` remove Ġshould Ġremove Ġproperty Ġfrom Ġan Ġexisting Ġfile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" JAVA _ HOME " ĊĠĠĠĠĠĠĠ Ġval Ġexport Key Ġ= Ġ" export Ġ$ key " ĊĠĠĠĠĠĠĠ ĠassertThat ( lines . filter Ġ{ Ġit . startsWith ( export Key ) Ġ}). isNotEmpty ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). remove ( key ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines ). has Size ( lines . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines . filter Ġ{ Ġit . startsWith ( export Key ) Ġ}). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` remove Ġshould Ġremove Ġproperty Ġignoring Ġcase `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġtmp DirPath (). resolve (". not _ empty _ bash _ profile ") ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" java _ home " ĊĠĠĠĠĠĠĠ Ġval Ġexport Key Ġ= Ġ" export Ġ${ key . toUpperCase () }" ĊĠĠĠĠĠĠĠ ĠassertThat ( lines . filter Ġ{ Ġit . startsWith ( export Key ) Ġ}). isNotEmpty ĊĠĠĠĠĠĠĠ ĠBash File Handler ( path ). remove ( key ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Lines Ġ= ĠFiles . read All Lines ( path ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines ). has Size ( lines . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( updated Lines . filter Ġ{ Ġit . startsWith ( export Key , Ġtrue ) Ġ}). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Empty B ash File () Ġ= ĠFiles . create File ( tmp DirPath (). resolve (". empty _ bash _ profile ")) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate NotEmpty B ash File () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠFiles . create File ( tmp DirPath (). resolve (". not _ empty _ bash _ profile ")) ĊĠĠĠĠĠĠĠ ĠFiles . write ( path , ĠlistOf (" alias Ġll =' ls Ġ- l '", Ġ" export ĠJAVA _ HOME =/ Library / Java ")) ĊĠĠĠ Ġ} Ċ }