package Ġcom . project . starter . quality . tasks Ċ Ċ import Ġcom . project . starter . With Gradle Project Test Ċ import Ġcom . project . starter . java Class Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Soft Assertions . assert Soft ly Ċ import Ġorg . gradle . test kit . runner . Task Outcome Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Disabled Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . io . File Ċ Ċ internal Ġclass ĠIssue Links Checker Task Test Ġ: ĠWith Gradle Project Test () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġandroid Module Root : ĠFile ĊĠĠĠ Ġlateinit Ġvar Ġkotlin Module Root : ĠFile ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Directory . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" settings . gradle "). write Text (""" include Ġ': module 1 ', Ġ': module 2 ' Ġ"" ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" build . gradle "). write Text ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Module Root Ġ= Ġresolve (" module 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Language (" groovy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscript Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ' com . starter . library . android ' ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" build . gradle ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( script ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" src / main / Android Manifest . xml ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< manifest Ġpackage =" com . example . module 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" src / main / java / Valid Java 2 . java ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( java Class (" Valid Java 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" src / test / java / Valid Java Test 2 . java ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( java Class (" Valid Java Test 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Module Root Ġ= Ġresolve (" module 2 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Language (" groovy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscript Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ' com . starter . library . kotlin ' ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" build . gradle ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( script ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" src / main / java / Valid Java 2 . java ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( java Class (" Valid Java 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve (" src / test / java / Valid Java Test 2 . java ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( java Class (" Valid Java Test 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` does Ġnot Ġwarn Ġon Ġregular Ġproject `() Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Module Root . resolve (" src / main / kotlin / Valid Kotlin . kt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Links Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// issue tracker . google . com / issues / 1 4 5 4 3 9 8 0 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠValid Kotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// www . example . com ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( random Links ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Task (" issue Links Report ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . task (": module 1 : issue Links Report ") ?. outcome ). isEqualTo ( Task Outcome . SUCCESS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Disabled (" Google ĠIssue Ġtracker Ġis Ġnot Ġsupported Ġyet ") ĊĠĠĠ Ġfun Ġ` reports Ġissue tracker Ġissues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Module Root . resolve (" src / main / kotlin / Valid Kotlin . kt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Links Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// news . y combinator . com / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠValid Kotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// issue tracker . google . com / issues / 1 2 1 0 9 2 2 8 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimations Ġ= Ġ 0 Ġ// ĠSet Ġanimation : Ġhttps :// issue tracker . google . com / issues / 1 5 4 6 4 3 0 5 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( random Links ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Task (" issue Links Report ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( result . task (": module 1 : issue Links Report ") ?. outcome ). isEqualTo ( Task Outcome . SUCCESS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reports Ġy out rack Ġissues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠ Ġval Ġrandom Links Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// news . y combinator . com / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 1 6 6 6 ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠValid Kotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 4 2 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġassert Soft ly Ġ{ Ġsoft ly Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" module 1 " Ġto Ġandroid Module Root , Ġ" module 2 " Ġto Ġkotlin Module Root ). forEach Ġ{ Ġ( name , Ġfolder ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . resolve (" src / main / kotlin / Valid Kotlin . kt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( random Links ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Task (" :$ name : issue Links Report ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( android Module Root . resolve (" build / reports / issue _ comments . txt ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠðŁĳ ī Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 1 6 6 6 Ġ( Closed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġâľħ Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 4 2 3 0 Ġ( Opened ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( result . output ). contains ("\ uD 8 3 D \ u DC 4 9 Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 1 6 6 6 Ġ( Closed )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( result . output ). contains (" âľ ħ Ġhttps :// yout rack . jetbrains . com / issue / KT - 3 4 2 3 0 Ġ( Opened )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsoft ly . assertThat ( result . task (" :$ name : issue Links Report ") ?. outcome ). isEqualTo ( Task Outcome . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reports Ġgithub Ġissues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Module Root . resolve (" src / main / kotlin / Valid Kotlin . kt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Links Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġhttps :// github . com / isa acs / github / issues / 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠValid Kotlin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// www . example . com ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// github . com / ap ol log raph ql / apollo - android / issues / 2 2 0 7 Ġ<- Ġclosed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Text ( random Links ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Task (" issue Links Report ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( android Module Root . resolve (" build / reports / issue _ comments . txt ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. has Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġâľħ Ġhttps :// github . com / isa acs / github / issues / 5 Ġ( Opened ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠðŁĳ ī Ġhttps :// github . com / ap ol log raph ql / apollo - android / issues / 2 2 0 7 Ġ( Closed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains (" âľ ħ Ġhttps :// github . com / isa acs / github / issues / 5 Ġ( Opened )") ĊĠĠĠĠĠĠĠ ĠassertThat ( result . output ). contains ("\ uD 8 3 D \ u DC 4 9 Ġhttps :// github . com / ap ol log raph ql / apollo - android / issues / 2 2 0 7 Ġ( Closed )") ĊĠĠĠĠĠĠĠ ĠassertThat ( result . task (": module 1 : issue Links Report ") ?. outcome ). isEqualTo ( Task Outcome . SUCCESS ) ĊĠĠĠ Ġ} Ċ } Ċ