/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . gradle Ċ Ċ import Ġorg . jetbrains . kotlin . gradle . targets . js . du kat . External s Output Format Ċ import Ġorg . jetbrains . kotlin . gradle . util . modify Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠD uk at Integration IT Ġ: ĠBase Gradle IT () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Separ ate D uk at Kotlin Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Separ ate D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Separ ate D uk at Kotlin Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Separ ate D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Separ ate D uk at Gro ovy Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Separ ate D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Separ ate D uk at Gro ovy Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Separ ate D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Separ ate D uk at ( ĊĠĠĠĠĠĠĠ Ġd sl Type : ĠD sl Type , ĊĠĠĠĠĠĠĠ Ġdependencies Location : ĠDependencies Location ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName ( dsl Type , Ġdependencies Location ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĊĠĠĠĠĠĠĠ Ġproject . build (" generate External s ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at Kotlin Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at Kotlin Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at Gro ovy Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at Gro ovy Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Integr ated D uk at ( ĊĠĠĠĠĠĠĠ Ġd sl Type : ĠD sl Type , ĊĠĠĠĠĠĠĠ Ġdependencies Location : ĠDependencies Location ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= ĠprojectName ( dsl Type , Ġdependencies Location ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĠĠĠĠĠĠĠ Ġproject . gradle Properties (). modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ External s Output Format . external s Output Format Property } =${ External s Output Format . SOURCE }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexternal Src s Ġ= Ġ" build / external s /$ projectName / src " ĊĠĠĠĠĠĠĠ Ġproject . build (" compile Kotlin Js ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ dec ame lize . kt ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With Change Kotlin Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With Change ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With Change Kotlin Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With Change ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With Change Gro ovy Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With Change ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With Change Gro ovy Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With Change ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Integr ated D uk at With Change ( ĊĠĠĠĠĠĠĠ Ġd sl Type : ĠD sl Type , ĊĠĠĠĠĠĠĠ Ġdependencies Location : ĠDependencies Location ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= ĠprojectName ( dsl Type , Ġdependencies Location ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĠĠĠĠĠĠĠ Ġproject . gradle Properties (). modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ External s Output Format . external s Output Format Property } =${ External s Output Format . SOURCE }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexternal Src s Ġ= Ġ" build / external s /$ projectName / src " ĊĠĠĠĠĠĠĠ Ġproject . build (" compile Kotlin Js ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ dec ame lize . kt ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify Ġ{ Ġbuild Script Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Script ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" implementation ( npm (" left - pad ", Ġ" 1 . 3 . 0 ")) """, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" implementation ( npm (" left - pad ", Ġ" 1 . 3 . 0 ", Ġtrue )) """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" implementation ( npm (" dec ame lize ", Ġ" 4 . 0 . 0 ", Ġtrue )) """, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" implementation ( npm (" dec ame lize ", Ġ" 4 . 0 . 0 ")) """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . build (" generate External s Integr ated ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ left - pad . kt ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With False Default Kotlin Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With False Default ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With False Default Kotlin Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With False Default ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With False Default Gro ovy Dsl Root Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With False Default ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . ROOT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Integr ated D uk at With False Default Gro ovy Dsl Ext Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Integr ated D uk at With False Default ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDependencies Location . EXTENSION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Integr ated D uk at With False Default ( ĊĠĠĠĠĠĠĠ Ġd sl Type : ĠD sl Type , ĊĠĠĠĠĠĠĠ Ġdependencies Location : ĠDependencies Location ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= ĠprojectName ( dsl Type , Ġdependencies Location ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĠĠĠĠĠĠĠ Ġproject . gradle Properties (). modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . js . generate . external s = true ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ External s Output Format . external s Output Format Property } =${ External s Output Format . SOURCE } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify Ġ{ Ġbuild Script Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Script ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" implementation ( npm (" dec ame lize ", Ġ" 4 . 0 . 0 ", Ġtrue )) """, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" implementation ( npm (" dec ame lize ", Ġ" 4 . 0 . 0 ", Ġfalse )) """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexternal Src s Ġ= Ġ" build / external s /$ projectName / src " ĊĠĠĠĠĠĠĠ Ġproject . build (" generate External s Integr ated ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ left - pad . kt ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Both Only Once Generate Dependencies () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= Ġ" both ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĠĠĠĠĠĠĠ Ġproject . gradle Properties (). modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ External s Output Format . external s Output Format Property } =${ External s Output Format . SOURCE }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexternal Src s Ġ= Ġ" build / external s / both - js Ir / src " ĊĠĠĠĠĠĠĠ Ġproject . build (" compile Kotlin Js Legacy ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Tasks Executed (": ir Generate External s Integr ated ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ dec ame lize . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlegacy External s Ġ= Ġ" build / external s / both - js Legacy / src " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory File Ġ= Ġfile In Working Dir ( legacy External s ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! directory File . exists (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" [$ legacy External s ] Ġshould Ġnot Ġcontain Ġfiles " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . build ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" compile Kotlin Js Legacy ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- rer un - tasks " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Tasks Executed (": ir Generate External s Integr ated ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ dec ame lize . kt ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compilation Legacy Bin aries Gro ovy Dsl () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Compilation Legacy Bin aries ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . GRO OV Y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compilation Legacy Bin aries Kotlin Dsl () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Compilation Legacy Bin aries ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD sl Type . K OT LIN ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Compilation Legacy Bin aries ( ĊĠĠĠĠĠĠĠ Ġd sl Type : ĠD sl Type ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= ĠprojectName ( dsl Type , ĠDependencies Location . EXTENSION ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĊĠĠĠĠĠĠĠ Ġproject . build (" compile Kotlin Js ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest As semble Both Bin aries () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= Ġ" both " ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĊĠĠĠĠĠĠĠ Ġproject . build (" assemble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compile Legacy Both Bin aries () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= Ġ" both " ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĠĠĠĠĠĠĠ Ġproject . gradle Properties (). modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ External s Output Format . external s Output Format Property } =${ External s Output Format . BINARY } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexternal Src s Ġ= Ġ" build / external s / both - js Legacy / src " ĊĠĠĠĠĠĠĠ Ġproject . build (" compile Kotlin Js Legacy ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . d . jar ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġir External s Ġ= Ġ" build / external s / both - js Ir / src " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory File Ġ= Ġfile In Working Dir ( ir External s ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! directory File . exists (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" [$ ir External s ] Ġshould Ġnot Ġcontain Ġfiles " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest As semble Both Source () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= Ġ" both " ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectName Ġ= ĠprojectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Prefix Ġ= Ġ" du kat - integration " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġproject . setup Working Dir () ĊĠĠĠĠĠĠĠ Ġproject . gradle Build Script (). modify (:: transform Build Script With Plugins Dsl ) ĊĠĠĠĠĠĠĠ Ġproject . gradle Properties (). modify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ${ External s Output Format . external s Output Format Property } =${ External s Output Format . SOURCE } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexternal Src s Ġ= Ġ" build / external s / both - js Ir / src " ĊĠĠĠĠĠĠĠ Ġproject . build (" assemble ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Successful () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Tasks Executed (": ir Generate External s Integr ated ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Single File Exists ( external Src s , Ġ" index . module _ dec ame lize . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlegacy External s Ġ= Ġ" build / external s / both - js Legacy / src " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory File Ġ= Ġfile In Working Dir ( legacy External s ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! directory File . exists (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" [$ legacy External s ] Ġshould Ġnot Ġcontain Ġfiles " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠprojectName ( ĊĠĠĠĠĠĠĠ Ġd sl Type : ĠD sl Type , ĊĠĠĠĠĠĠĠ Ġdependencies Location : ĠDependencies Location ĊĠĠĠ Ġ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ"${ dsl Type . value }-${ dependencies Location . value }" ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠD sl Type ( ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠK OT LIN (" kotlin - dsl "), ĊĠĠĠĠĠĠĠ ĠGRO OV Y (" groovy - dsl ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠDependencies Location ( ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠROOT (" root "), ĊĠĠĠĠĠĠĠ ĠEXT ENSION (" ext ") ĊĠĠĠ Ġ} Ċ } Ċ