/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 Ġ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 . js . test . handlers Ċ Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġorg . jetbrains . kotlin . test . backend . handlers . Js Binary Artifact Handler Ċ import Ġorg . jetbrains . kotlin . test . model . Binary Artifacts . Js Ċ import Ġorg . jetbrains . kotlin . test . model . Test Module Ċ import Ġorg . jetbrains . kotlin . test . services . Test Services Ċ import Ġorg . jetbrains . kotlin . test . services . assertions Ċ Ċ class ĠJs Ir Re compiled Artifacts Identity Handler ( test Services : ĠTest Services ) Ġ: ĠJs Binary Artifact Handler ( test Services ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġprocess Module ( module : ĠTest Module , Ġinfo : ĠJs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( info Ġ! is ĠJs . Incremental Js Artifact ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġ( original Artifact , Ġincremental Artifact ) Ġ= Ġinfo ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Artifact Ġis ĠJs . Js Ir Artifact Ġ&& Ġincremental Artifact Ġis ĠJs . Js Ir Artifact Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompare Ir Artifacts ( original Artifact , Ġincremental Artifact ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġassertions . fail Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn compatible Ġtypes Ġof Ġoriginal Ġand Ġincremental Ġartifacts : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal : Ġ${ original Artifact :: class } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincremental : Ġ${ incremental Artifact :: class } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġprivate Ġfun Ġcompare Ir Artifacts ( original Artifact : ĠJs . Js Ir Artifact , Ġincremental Artifact : ĠJs . Js Ir Artifact ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġenable Ġassert s Ġwhen Ġbinary Ġstability Ġis Ġachieved Ċ // ĠĠĠĠĠĠĠ Ġval Ġold Binary Ast s Ġ= Ġoriginal Artifact . ic Cache !! Ċ // ĠĠĠĠĠĠĠ Ġval Ġnew Binary Ast s Ġ= Ġincremental Artifact . ic Cache !! Ċ // Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġnew Binary Ast s . keys ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Binary Ast Ġ= Ġold Binary Ast s [ file ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Binary Ast Ġ= Ġnew Binary Ast s [ file ] Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtest Services . assertions . assertTrue ( old Binary Ast . content Equals ( new Binary Ast )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Binary ĠAST Ġchanged Ġafter Ġre compilation Ġfor Ġfile Ġ$ file " Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Output Ġ= ĠFile Util . load File ( original Artifact . outputFile ) ĊĠĠĠĠĠĠĠ Ġval Ġre compiled Output Ġ= ĠFile Util . load File ( incremental Artifact . outputFile ) ĊĠĠĠĠĠĠĠ Ġtest Services . assertions . assertEquals ( original Output , Ġre compiled Output ) Ġ{ Ġ" Output Ġfile Ġchanged Ġafter Ġre compilation " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess After All Modules ( some Assertion Was Failed : ĠBoolean ) Ġ{} Ċ } Ċ