/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠHERE ĠEurope ĠB . V . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* ĠLicense - Filename : ĠLICENSE Ċ Ġ*/ Ċ Ċ package Ġcom . here . ort . analyzer . managers Ċ Ċ import Ġcom . here . ort . analyzer . PackageManager Ċ Ċ import Ġio . kot lint est . shouldBe Ċ import Ġio . kot lint est . should Throw Ċ import Ġio . kot lint est . specs . Word Spec Ċ Ċ import Ġjava . io . File Ċ Ċ class ĠPackage Manager Test Ġ: ĠWord Spec ({ ĊĠĠĠ Ġval Ġproject Dir Ġ= ĠFile (" src / fun Test / assets / projects / synt hetic / all - managers "). absolute File ĊĊĠĠĠ Ġ" find Managed Files " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" find Ġall Ġmanaged Ġfiles " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanaged Files Ġ= ĠPackage Manager . find Managed Files ( project Dir ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġtest Ġproject Ġcontains Ġat Ġleast Ġone Ġfile Ġper Ġpackage Ġmanager , Ġso Ġthe Ġresult Ġshould Ġalso Ġcontain Ġan ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġentry Ġfor Ġeach Ġpackage Ġmanager . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files . keys ĠshouldBe ĠPackage Manager . ALL . toSet () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġkeys Ġin Ġexpected Ġand Ġactual Ġmaps Ġof Ġdefinition Ġfiles Ġare Ġdifferent Ġinstances Ġof Ġpackage Ġmanager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfactories . ĠSo Ġto Ġcompare Ġvalues Ġuse Ġthe Ġpackage Ġmanager Ġnames Ġas Ġkeys Ġinstead . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanaged Files ByName Ġ= Ġmanaged Files . map Keys Ġ{ Ġ( manager , Ġ_) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . manager Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" B ower "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" bower . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Bund ler "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" Gem file ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Cargo "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" Cargo . toml ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Con an "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" conan file . py ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" DotNet "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" test . csproj ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Go Dep "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" G op kg . toml ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Go Mod "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" go . mod ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Gradle "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" build . gradle ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Maven "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" pom . xml ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" NPM "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" package . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" NuGet "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" packages . config ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Php Composer "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" composer . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" PIP "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" setup . py ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Pip env "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" Pip file . lock ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Pub "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" pub spec . yaml ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" SB T "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" build . sbt ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Stack "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" stack . yaml ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Y arn "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" package . json ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" find Ġonly Ġfiles Ġfor Ġactive Ġpackage Ġmanagers " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanaged Files Ġ= ĠPackage Manager . find Managed Files ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Dir , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Gradle . Factory (), ĠP ip . Factory (), ĠS bt . Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files . size ĠshouldBe Ġ 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġkeys Ġin Ġexpected Ġand Ġactual Ġmaps Ġof Ġdefinition Ġfiles Ġare Ġdifferent Ġinstances Ġof Ġpackage Ġmanager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfactories . ĠSo Ġto Ġcompare Ġvalues Ġuse Ġthe Ġpackage Ġmanager Ġnames Ġas Ġkeys Ġinstead . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanaged Files ByName Ġ= Ġmanaged Files . map Keys Ġ{ Ġ( manager , Ġ_) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . manager Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" Gradle "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" build . gradle ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" PIP "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" setup . py ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files ByName [" SB T "] ĠshouldBe ĠlistOf ( File ( project Dir , Ġ" build . sbt ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" find Ġno Ġfiles Ġif Ġno Ġpackage Ġmanagers Ġare Ġactive " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanaged Files Ġ= ĠPackage Manager . find Managed Files ( project Dir , Ġempty List ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanaged Files . size ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" fail Ġif Ġthe Ġprovided Ġfile Ġis Ġnot Ġa Ġdirectory " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . find Managed Files ( File ( project Dir , Ġ" pom . xml ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ