@@ -35,6 +35,7 @@ import java.io.File
3535import org.ossreviewtoolkit.model.config.Excludes
3636import org.ossreviewtoolkit.model.config.PathExclude
3737import org.ossreviewtoolkit.model.config.PathExcludeReason
38+ import org.ossreviewtoolkit.plugins.api.PluginConfig
3839
3940class PackageManagerFunTest : WordSpec ({
4041 val definitionFiles = listOf(
@@ -72,92 +73,87 @@ class PackageManagerFunTest : WordSpec({
7273 )
7374
7475 val projectDir = tempdir()
76+ val packageManagers = PackageManagerFactory .ALL .values.map { it.create(PluginConfig .EMPTY ) }
7577
7678 beforeSpec {
7779 definitionFiles.writeFiles(projectDir)
7880 }
7981
8082 " findManagedFiles" should {
8183 " find all managed files" {
82- val managedFiles = PackageManager .findManagedFiles(projectDir)
84+ val managedFiles = PackageManager .findManagedFiles(projectDir, packageManagers )
8385
8486 // The test project contains at least one file per package manager, so the result should also contain an
8587 // entry for each package manager.
86- val unmanagedPackageManagerFactory = PackageManagerFactory .ALL .getValue("Unmanaged ")
87- managedFiles.keys shouldContainExactlyInAnyOrder PackageManagerFactory .ENABLED_BY_DEFAULT .filterNot {
88- it == unmanagedPackageManagerFactory
89- }
88+ managedFiles.keys.map { it.descriptor.id } shouldContainExactlyInAnyOrder
89+ PackageManagerFactory .ALL .values.map { it.descriptor.id }.filterNot { it == " Unmanaged" }
9090
91- val managedFilesByName = managedFiles.groupByName (projectDir)
91+ val managedFilesById = managedFiles.groupById (projectDir)
9292
9393 assertSoftly {
94- managedFilesByName [" Bazel" ] should containExactly("bazel/MODULE .bazel")
95- managedFilesByName [" Bower" ] should containExactly("bower/bower.json")
96- managedFilesByName [" Bundler" ] should containExactly("bundler/Gemfile ")
97- managedFilesByName [" Cargo" ] should containExactly("cargo/Cargo .toml")
98- managedFilesByName [" Carthage" ] should containExactly("carthage/Cartfile .resolved")
99- managedFilesByName [" CocoaPods" ] should containExactly("cocoapods/Podfile ")
100- managedFilesByName [" Composer" ] should containExactly("composer/composer.json")
101- managedFilesByName [" Conan" ] should containExactlyInAnyOrder(
94+ managedFilesById [" Bazel" ] should containExactly("bazel/MODULE .bazel")
95+ managedFilesById [" Bower" ] should containExactly("bower/bower.json")
96+ managedFilesById [" Bundler" ] should containExactly("bundler/Gemfile ")
97+ managedFilesById [" Cargo" ] should containExactly("cargo/Cargo .toml")
98+ managedFilesById [" Carthage" ] should containExactly("carthage/Cartfile .resolved")
99+ managedFilesById [" CocoaPods" ] should containExactly("cocoapods/Podfile ")
100+ managedFilesById [" Composer" ] should containExactly("composer/composer.json")
101+ managedFilesById [" Conan" ] should containExactlyInAnyOrder(
102102 "conan-py/conanfile.py",
103103 "conan-txt/conanfile.txt"
104104 )
105- managedFilesByName [" GoMod" ] should containExactly("gomod/go.mod")
106- managedFilesByName [" GradleInspector" ] should containExactlyInAnyOrder(
105+ managedFilesById [" GoMod" ] should containExactly("gomod/go.mod")
106+ managedFilesById [" GradleInspector" ] should containExactlyInAnyOrder(
107107 "gradle-groovy/build.gradle",
108108 "gradle-kotlin/build.gradle.kts"
109109 )
110- managedFilesByName [" Maven" ] should containExactly("maven/pom.xml")
111- managedFilesByName [" NPM" ] should containExactly("npm-pnpm-and-yarn/package.json")
112- managedFilesByName [" NuGet" ] should containExactlyInAnyOrder(
110+ managedFilesById [" Maven" ] should containExactly("maven/pom.xml")
111+ managedFilesById [" NPM" ] should containExactly("npm-pnpm-and-yarn/package.json")
112+ managedFilesById [" NuGet" ] should containExactlyInAnyOrder(
113113 "dotnet/test.csproj",
114114 "nuget/packages.config"
115115 )
116- managedFilesByName [" PIP" ] should containExactlyInAnyOrder(
116+ managedFilesById [" PIP" ] should containExactlyInAnyOrder(
117117 "pip-requirements/requirements.txt",
118118 "pip-setup/setup.py"
119119 )
120- managedFilesByName [" Pipenv" ] should containExactly("pipenv/Pipfile .lock")
121- managedFilesByName [" PNPM" ] should containExactly("npm-pnpm-and-yarn/package.json")
122- managedFilesByName [" Poetry" ] should containExactly("poetry/poetry.lock")
123- managedFilesByName [" Pub" ] should containExactly("pub/pubspec.yaml")
124- managedFilesByName [" SBT" ] should containExactly("sbt/build.sbt")
125- managedFilesByName [" SpdxDocumentFile" ] should containExactlyInAnyOrder(
120+ managedFilesById [" Pipenv" ] should containExactly("pipenv/Pipfile .lock")
121+ managedFilesById [" PNPM" ] should containExactly("npm-pnpm-and-yarn/package.json")
122+ managedFilesById [" Poetry" ] should containExactly("poetry/poetry.lock")
123+ managedFilesById [" Pub" ] should containExactly("pub/pubspec.yaml")
124+ managedFilesById [" SBT" ] should containExactly("sbt/build.sbt")
125+ managedFilesById [" SpdxDocumentFile" ] should containExactlyInAnyOrder(
126126 "spdx-package/package.spdx.yml",
127127 "spdx-project/project.spdx.yml"
128128 )
129- managedFilesByName [" SwiftPM" ] should containExactlyInAnyOrder(
129+ managedFilesById [" SwiftPM" ] should containExactlyInAnyOrder(
130130 "spm-app/Package .resolved",
131131 "spm-lib/Package .swift"
132132 )
133- managedFilesByName [" Stack" ] should containExactly("stack/stack.yaml")
134- managedFilesByName [" Yarn" ] should containExactly("npm-pnpm-and-yarn/package.json")
133+ managedFilesById [" Stack" ] should containExactly("stack/stack.yaml")
134+ managedFilesById [" Yarn" ] should containExactly("npm-pnpm-and-yarn/package.json")
135135 }
136136 }
137137
138138 " find only files for active package managers" {
139139 val managedFiles = PackageManager .findManagedFiles(
140140 projectDir,
141- setOf(
142- PackageManagerFactory .ALL .getValue("GradleInspector "),
143- PackageManagerFactory .ALL .getValue("Pip "),
144- PackageManagerFactory .ALL .getValue("Sbt ")
145- )
141+ packageManagers.filter { it.descriptor.id in setOf("GradleInspector ", "PIP ", "SBT ") }
146142 )
147143
148144 managedFiles shouldHaveSize 3
149145
150- val managedFilesByName = managedFiles.groupByName (projectDir)
146+ val managedFilesById = managedFiles.groupById (projectDir)
151147
152- managedFilesByName [" GradleInspector" ] should containExactlyInAnyOrder(
148+ managedFilesById [" GradleInspector" ] should containExactlyInAnyOrder(
153149 "gradle-groovy/build.gradle",
154150 "gradle-kotlin/build.gradle.kts"
155151 )
156- managedFilesByName [" PIP" ] should containExactlyInAnyOrder(
152+ managedFilesById [" PIP" ] should containExactlyInAnyOrder(
157153 "pip-requirements/requirements.txt",
158154 "pip-setup/setup.py"
159155 )
160- managedFilesByName [" SBT" ] should containExactly("sbt/build.sbt")
156+ managedFilesById [" SBT" ] should containExactly("sbt/build.sbt")
161157 }
162158
163159 " find no files if no package managers are active" {
@@ -176,31 +172,32 @@ class PackageManagerFunTest : WordSpec({
176172 val pathExclude = PathExclude ("$tempDir**", PathExcludeReason .TEST_OF )
177173 val excludes = Excludes (paths = listOf(pathExclude))
178174
179- val managedFilesByName = PackageManager .findManagedFiles(rootDir, excludes = excludes).groupByName(rootDir)
175+ val managedFilesById = PackageManager .findManagedFiles(rootDir, packageManagers, excludes = excludes)
176+ .groupById(rootDir)
180177
181- managedFilesByName [" GradleInspector" ] should containExactlyInAnyOrder(
178+ managedFilesById [" GradleInspector" ] should containExactlyInAnyOrder(
182179 "gradle-groovy/build.gradle",
183180 "gradle-kotlin/build.gradle.kts"
184181 )
185- managedFilesByName [" Maven" ] should containExactly("maven/pom.xml")
186- managedFilesByName [" SBT" ] should containExactly("sbt/build.sbt")
182+ managedFilesById [" Maven" ] should containExactly("maven/pom.xml")
183+ managedFilesById [" SBT" ] should containExactly("sbt/build.sbt")
187184 }
188185
189186 " handle specific excluded definition files" {
190187 val pathExclude = PathExclude ("gradle-groovy/build.gradle", PathExcludeReason .OTHER )
191188 val excludes = Excludes (paths = listOf(pathExclude))
192189
193- val managedFiles = PackageManager .findManagedFiles(projectDir, excludes = excludes)
194- val managedFilesByName = managedFiles.groupByName (projectDir)
190+ val managedFiles = PackageManager .findManagedFiles(projectDir, packageManagers, excludes = excludes)
191+ val managedFilesById = managedFiles.groupById (projectDir)
195192
196- managedFilesByName [" GradleInspector" ] should containExactly(
193+ managedFilesById [" GradleInspector" ] should containExactly(
197194 "gradle-kotlin/build.gradle.kts"
198195 )
199196 }
200197
201198 " fail if the provided file is not a directory" {
202199 shouldThrow<IllegalArgumentException > {
203- PackageManager .findManagedFiles(projectDir.resolve("pom.xml"))
200+ PackageManager .findManagedFiles(projectDir.resolve("pom.xml"), packageManagers )
204201 }
205202 }
206203 }
@@ -211,9 +208,9 @@ class PackageManagerFunTest : WordSpec({
211208 * package managers can be easily accessed. The keys in expected and actual maps of definition files are different
212209 * instances of package manager factories. So to compare values use the package manager types as keys instead.
213210 */
214- private fun ManagedProjectFiles.groupByName (projectDir : File ) =
211+ private fun ManagedProjectFiles.groupById (projectDir : File ) =
215212 map { (manager, files) ->
216- manager.type to files.map { it.relativeTo(projectDir).invariantSeparatorsPath }
213+ manager.descriptor.id to files.map { it.relativeTo(projectDir).invariantSeparatorsPath }
217214 }.toMap()
218215
219216/* *
0 commit comments