diff --git a/model/src/main/kotlin/Provenance.kt b/model/src/main/kotlin/Provenance.kt index 5290e442ac5f6..b28497d3454f3 100644 --- a/model/src/main/kotlin/Provenance.kt +++ b/model/src/main/kotlin/Provenance.kt @@ -26,6 +26,8 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.fasterxml.jackson.databind.deser.std.StdDeserializer import com.fasterxml.jackson.module.kotlin.treeToValue +import java.io.File + /** * Provenance information about the origin of source code. */ @@ -45,6 +47,8 @@ sealed interface KnownProvenance : Provenance sealed interface RemoteProvenance : KnownProvenance +sealed interface LocalProvenance : KnownProvenance + /** * Provenance information for a source artifact. */ @@ -83,6 +87,19 @@ data class RepositoryProvenance( override fun matches(pkg: Package): Boolean = vcsInfo == pkg.vcsProcessed } +/** + * Provenance information for a local directory path. + */ +data class DirectoryProvenance( + val canonicalPath: File +) : LocalProvenance { + /** + * Return false for any [pkg] as a [Package] by definition is coming from a remote, and is not stored in a local + * directory path (which would be a [Project]). + */ + override fun matches(pkg: Package): Boolean = false +} + /** * A custom deserializer for polymorphic deserialization of [Provenance] without requiring type information. */ diff --git a/model/src/main/kotlin/ProvenanceResolutionResult.kt b/model/src/main/kotlin/ProvenanceResolutionResult.kt index 2e24156299334..9988904334fe5 100644 --- a/model/src/main/kotlin/ProvenanceResolutionResult.kt +++ b/model/src/main/kotlin/ProvenanceResolutionResult.kt @@ -37,7 +37,7 @@ data class ProvenanceResolutionResult( * The resolved provenance of the package. Can only be null if a [packageProvenanceResolutionIssue] occurred. */ @JsonInclude(JsonInclude.Include.NON_NULL) - val packageProvenance: KnownProvenance? = null, + val packageProvenance: RemoteProvenance? = null, /** * The (recursive) sub-repositories of [packageProvenance]. The map can only be empty if a diff --git a/model/src/main/kotlin/utils/FileProvenanceFileStorage.kt b/model/src/main/kotlin/utils/FileProvenanceFileStorage.kt index 0d510cb1b1e19..75c8982e89df4 100644 --- a/model/src/main/kotlin/utils/FileProvenanceFileStorage.kt +++ b/model/src/main/kotlin/utils/FileProvenanceFileStorage.kt @@ -24,6 +24,7 @@ import java.io.InputStream import org.apache.logging.log4j.kotlin.logger import org.ossreviewtoolkit.model.ArtifactProvenance +import org.ossreviewtoolkit.model.DirectoryProvenance import org.ossreviewtoolkit.model.HashAlgorithm import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.RepositoryProvenance @@ -81,6 +82,7 @@ private fun KnownProvenance.hash(): String { val key = when (this) { is ArtifactProvenance -> "${sourceArtifact.url}${sourceArtifact.hash.value}" is RepositoryProvenance -> "${vcsInfo.type}${vcsInfo.url}$resolvedRevision" + is DirectoryProvenance -> "$canonicalPath" } return HashAlgorithm.SHA1.calculate(key.toByteArray()) diff --git a/model/src/main/kotlin/utils/PostgresProvenanceFileStorage.kt b/model/src/main/kotlin/utils/PostgresProvenanceFileStorage.kt index 5163bd3d18821..a9c6f643481f1 100644 --- a/model/src/main/kotlin/utils/PostgresProvenanceFileStorage.kt +++ b/model/src/main/kotlin/utils/PostgresProvenanceFileStorage.kt @@ -36,6 +36,7 @@ import org.jetbrains.exposed.sql.insert import org.jetbrains.exposed.sql.selectAll import org.ossreviewtoolkit.model.ArtifactProvenance +import org.ossreviewtoolkit.model.DirectoryProvenance import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.utils.DatabaseUtils.checkDatabaseEncoding @@ -121,4 +122,5 @@ private fun KnownProvenance.storageKey(): String = is ArtifactProvenance -> "source-artifact|${sourceArtifact.url}|${sourceArtifact.hash}" // The trailing "|" is kept for backward compatibility because there used to be an additional parameter. is RepositoryProvenance -> "vcs|${vcsInfo.type}|${vcsInfo.url}|$resolvedRevision|" + is DirectoryProvenance -> "directory|$canonicalPath" } diff --git a/model/src/main/kotlin/utils/PurlExtensions.kt b/model/src/main/kotlin/utils/PurlExtensions.kt index 9defd45cc47f1..3f97dfd775b4a 100644 --- a/model/src/main/kotlin/utils/PurlExtensions.kt +++ b/model/src/main/kotlin/utils/PurlExtensions.kt @@ -27,6 +27,7 @@ import org.ossreviewtoolkit.model.Identifier import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.Provenance import org.ossreviewtoolkit.model.RemoteArtifact +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.UnknownProvenance import org.ossreviewtoolkit.model.VcsInfo @@ -101,7 +102,11 @@ fun Provenance.toPurlExtras(): PurlExtras = ) } - is UnknownProvenance -> PurlExtras() + /** + * Purls refer to packages that have been published and thus always have a remove provenance. So just return + * empty extras in all other cases. + */ + !is RemoteProvenance -> PurlExtras() } /** diff --git a/scanner/src/funTest/kotlin/provenance/AbstractNestedProvenanceStorageFunTest.kt b/scanner/src/funTest/kotlin/provenance/AbstractNestedProvenanceStorageFunTest.kt index df5eade85b1ff..0670a07b0ebe7 100644 --- a/scanner/src/funTest/kotlin/provenance/AbstractNestedProvenanceStorageFunTest.kt +++ b/scanner/src/funTest/kotlin/provenance/AbstractNestedProvenanceStorageFunTest.kt @@ -23,7 +23,7 @@ import io.kotest.core.listeners.TestListener import io.kotest.core.spec.style.WordSpec import io.kotest.matchers.shouldBe -import org.ossreviewtoolkit.model.KnownProvenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.VcsInfo import org.ossreviewtoolkit.model.VcsType @@ -78,6 +78,6 @@ private fun createRepositoryProvenance( ) = RepositoryProvenance(vcsInfo, resolvedRevision) private fun createNestedProvenance( - root: KnownProvenance, + root: RemoteProvenance, subRepositories: Map = emptyMap() ) = NestedProvenance(root, subRepositories) diff --git a/scanner/src/main/kotlin/ScanController.kt b/scanner/src/main/kotlin/ScanController.kt index 3a9cc2af5412b..6da0cdf4a733f 100644 --- a/scanner/src/main/kotlin/ScanController.kt +++ b/scanner/src/main/kotlin/ScanController.kt @@ -24,6 +24,7 @@ import org.ossreviewtoolkit.model.Issue import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.Provenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.ScanSummary @@ -73,19 +74,19 @@ internal class ScanController( /** * A map of [KnownProvenance]s to their resolved [NestedProvenance]s. */ - private val nestedProvenances = mutableMapOf() + private val nestedProvenances = mutableMapOf() /** * A map of package [Identifier]s to their resolved [KnownProvenance]s. These provenances are used to filter the * scan results for a package based on the VCS path. */ - private val packageProvenances = mutableMapOf() + private val packageProvenances = mutableMapOf() /** * A map of package [Identifier]s to their resolved [KnownProvenance]s with the VCS path removed. These provenances * are used during scanning to make sure that always the full repositories are scanned. */ - private val packageProvenancesWithoutVcsPath = mutableMapOf() + private val packageProvenancesWithoutVcsPath = mutableMapOf() /** * The [ScanResult]s for each [KnownProvenance] and [ScannerWrapper]. @@ -130,7 +131,7 @@ internal class ScanController( /** * Set the [provenance] for the package denoted by [id], overwriting any existing values. */ - fun putPackageProvenance(id: Identifier, provenance: KnownProvenance) { + fun putPackageProvenance(id: Identifier, provenance: RemoteProvenance) { packageProvenances[id] = provenance packageProvenancesWithoutVcsPath[id] = when (provenance) { is RepositoryProvenance -> provenance.copy(vcsInfo = provenance.vcsInfo.copy(path = "")) @@ -142,7 +143,7 @@ internal class ScanController( * Set the [nestedProvenance] corresponding to the given [package provenance][root], overwriting any existing * values. */ - fun putNestedProvenance(root: KnownProvenance, nestedProvenance: NestedProvenance) { + fun putNestedProvenance(root: RemoteProvenance, nestedProvenance: NestedProvenance) { nestedProvenances[root] = nestedProvenance } @@ -165,7 +166,7 @@ internal class ScanController( /** * Return all [KnownProvenance]s contained in [nestedProvenances]. */ - fun getAllProvenances(): Set = + fun getAllProvenances(): Set = nestedProvenances.values.flatMapTo(mutableSetOf()) { it.allProvenances } /** @@ -177,7 +178,7 @@ internal class ScanController( /** * Return all provenances including sub-repositories associated with the identifiers of the packages they belong to. */ - fun getIdsByProvenance(): Map> = + fun getIdsByProvenance(): Map> = buildMap<_, MutableSet> { getNestedProvenancesByPackage().forEach { (pkg, nestedProvenance) -> nestedProvenance.allProvenances.forEach { provenance -> @@ -244,8 +245,8 @@ internal class ScanController( * 'components/conanfile.txt'. This is because scanner interfaces receive packages as input, and this aims at * providing a deterministic ordering when choosing a reference package for packages with the same provenance. */ - fun getPackagesConsolidatedByProvenance(): Map> { - val packagesByProvenance = mutableMapOf>() + fun getPackagesConsolidatedByProvenance(): Map> { + val packagesByProvenance = mutableMapOf>() val comparator = compareBy(PATH_STRING_COMPARATOR) { it.id.name }.thenBy { it.id } packages.forEach { pkg -> @@ -267,7 +268,7 @@ internal class ScanController( fun getPackagesForProvenanceWithoutVcsPath(provenance: KnownProvenance): Set = packageProvenancesWithoutVcsPath.filter { (_, packageProvenance) -> packageProvenance == provenance }.keys - fun getPackageProvenance(id: Identifier): KnownProvenance? = packageProvenances[id] + fun getPackageProvenance(id: Identifier): RemoteProvenance? = packageProvenances[id] /** * Return the package provenanceResolutionIssue associated with the given [id]. @@ -277,7 +278,7 @@ internal class ScanController( /** * Return all [KnownProvenance]s for the [packages] with the VCS path removed. */ - fun getPackageProvenancesWithoutVcsPath(): Set = packageProvenancesWithoutVcsPath.values.toSet() + fun getPackageProvenancesWithoutVcsPath(): Set = packageProvenancesWithoutVcsPath.values.toSet() /** * Return all [PackageScannerWrapper]s. diff --git a/scanner/src/main/kotlin/Scanner.kt b/scanner/src/main/kotlin/Scanner.kt index 2ef1dee10e2cb..b39b6b4a0ece9 100644 --- a/scanner/src/main/kotlin/Scanner.kt +++ b/scanner/src/main/kotlin/Scanner.kt @@ -44,6 +44,7 @@ import org.ossreviewtoolkit.model.OrtResult import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.PackageType import org.ossreviewtoolkit.model.ProvenanceResolutionResult +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.ScannerRun import org.ossreviewtoolkit.model.TextLocation @@ -585,7 +586,7 @@ class Scanner( } private fun scanPath( - provenance: KnownProvenance, + provenance: RemoteProvenance, scanners: List, context: ScanContext, controller: ScanController diff --git a/scanner/src/main/kotlin/provenance/NestedProvenance.kt b/scanner/src/main/kotlin/provenance/NestedProvenance.kt index 66aea16af156a..17b43cee1e620 100644 --- a/scanner/src/main/kotlin/provenance/NestedProvenance.kt +++ b/scanner/src/main/kotlin/provenance/NestedProvenance.kt @@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore import org.ossreviewtoolkit.model.ArtifactProvenance import org.ossreviewtoolkit.model.KnownProvenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance /** @@ -32,7 +33,7 @@ data class NestedProvenance( /** * The root provenance that contains the [nested provenances][subRepositories]. */ - val root: KnownProvenance, + val root: RemoteProvenance, /** * If [root] is a [RepositoryProvenance] this map contains all paths which contain nested repositories associated @@ -45,7 +46,7 @@ data class NestedProvenance( * The set of all contained [KnownProvenance]s. */ @JsonIgnore - val allProvenances: Set = + val allProvenances: Set = buildSet { add(root) addAll(subRepositories.values) diff --git a/scanner/src/main/kotlin/provenance/NestedProvenanceResolver.kt b/scanner/src/main/kotlin/provenance/NestedProvenanceResolver.kt index 29e537376bc6d..ea9e2089cb784 100644 --- a/scanner/src/main/kotlin/provenance/NestedProvenanceResolver.kt +++ b/scanner/src/main/kotlin/provenance/NestedProvenanceResolver.kt @@ -23,8 +23,8 @@ import org.apache.logging.log4j.kotlin.logger import org.ossreviewtoolkit.downloader.WorkingTreeCache import org.ossreviewtoolkit.model.ArtifactProvenance -import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.Provenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance /** @@ -36,7 +36,7 @@ interface NestedProvenanceResolver { * [NestedProvenance] always contains only the provided [ArtifactProvenance]. For a [RepositoryProvenance] the * resolver looks for nested repositories, for example Git submodules or Mercurial subrepositories. */ - suspend fun resolveNestedProvenance(provenance: KnownProvenance): NestedProvenance + suspend fun resolveNestedProvenance(provenance: RemoteProvenance): NestedProvenance } /** @@ -46,7 +46,7 @@ class DefaultNestedProvenanceResolver( private val storage: NestedProvenanceStorage, private val workingTreeCache: WorkingTreeCache ) : NestedProvenanceResolver { - override suspend fun resolveNestedProvenance(provenance: KnownProvenance): NestedProvenance { + override suspend fun resolveNestedProvenance(provenance: RemoteProvenance): NestedProvenance { return when (provenance) { is ArtifactProvenance -> NestedProvenance(root = provenance, subRepositories = emptyMap()) is RepositoryProvenance -> resolveNestedRepository(provenance) diff --git a/scanner/src/main/kotlin/provenance/NestedProvenanceScanResult.kt b/scanner/src/main/kotlin/provenance/NestedProvenanceScanResult.kt index 5205e84a848ba..8e3780cb97bc6 100644 --- a/scanner/src/main/kotlin/provenance/NestedProvenanceScanResult.kt +++ b/scanner/src/main/kotlin/provenance/NestedProvenanceScanResult.kt @@ -21,6 +21,7 @@ package org.ossreviewtoolkit.scanner.provenance import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.OrtResult +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.ScanSummary @@ -38,7 +39,7 @@ data class NestedProvenanceScanResult( /** * A map of [KnownProvenance]s from [nestedProvenance] associated with lists of [ScanResult]s. */ - val scanResults: Map> + val scanResults: Map> ) { /** * Return true if [scanResults] contains at least one scan result for each of the [KnownProvenance]s contained in @@ -107,7 +108,7 @@ data class NestedProvenanceScanResult( } } - fun KnownProvenance.withVcsPath() = + fun RemoteProvenance.withVcsPath() = when (this) { is RepositoryProvenance -> { val pathWithinProvenance = pathsWithinProvenances.getValue(this) diff --git a/scanner/src/main/kotlin/provenance/PackageProvenanceResolver.kt b/scanner/src/main/kotlin/provenance/PackageProvenanceResolver.kt index ad7ba9fcbb541..18ccb39d4712d 100644 --- a/scanner/src/main/kotlin/provenance/PackageProvenanceResolver.kt +++ b/scanner/src/main/kotlin/provenance/PackageProvenanceResolver.kt @@ -33,10 +33,10 @@ import org.apache.logging.log4j.kotlin.logger import org.ossreviewtoolkit.downloader.WorkingTreeCache import org.ossreviewtoolkit.model.ArtifactProvenance -import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.Provenance import org.ossreviewtoolkit.model.RemoteArtifact +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.SourceCodeOrigin import org.ossreviewtoolkit.model.VcsInfo @@ -54,7 +54,7 @@ interface PackageProvenanceResolver { * * Throws an [IOException] if the provenance cannot be resolved. */ - suspend fun resolveProvenance(pkg: Package, defaultSourceCodeOrigins: List): KnownProvenance + suspend fun resolveProvenance(pkg: Package, defaultSourceCodeOrigins: List): RemoteProvenance } /** @@ -74,7 +74,7 @@ class DefaultPackageProvenanceResolver( override suspend fun resolveProvenance( pkg: Package, defaultSourceCodeOrigins: List - ): KnownProvenance { + ): RemoteProvenance { val errors = mutableMapOf() val sourceCodeOrigins = pkg.sourceCodeOrigins ?: defaultSourceCodeOrigins diff --git a/scanner/src/main/kotlin/provenance/ProvenanceDownloader.kt b/scanner/src/main/kotlin/provenance/ProvenanceDownloader.kt index c57287edebba3..2396ddf12570f 100644 --- a/scanner/src/main/kotlin/provenance/ProvenanceDownloader.kt +++ b/scanner/src/main/kotlin/provenance/ProvenanceDownloader.kt @@ -32,8 +32,8 @@ import org.ossreviewtoolkit.downloader.DownloadException import org.ossreviewtoolkit.downloader.Downloader import org.ossreviewtoolkit.downloader.WorkingTreeCache import org.ossreviewtoolkit.model.ArtifactProvenance -import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.Package +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.config.DownloaderConfiguration import org.ossreviewtoolkit.utils.common.safeDeleteRecursively @@ -51,7 +51,7 @@ fun interface ProvenanceDownloader { * * Throws a [DownloadException] if the download fails. */ - fun download(provenance: KnownProvenance): File + fun download(provenance: RemoteProvenance): File /** * Download the source code specified by the provided [nestedProvenance] incl. sub-repositories and return the path @@ -86,7 +86,7 @@ class DefaultProvenanceDownloader( ) : ProvenanceDownloader { private val downloader = Downloader(config) - override fun download(provenance: KnownProvenance): File { + override fun download(provenance: RemoteProvenance): File { val downloadDir = createOrtTempDir() when (provenance) { diff --git a/scanner/src/main/kotlin/storages/ProvenanceBasedFileStorage.kt b/scanner/src/main/kotlin/storages/ProvenanceBasedFileStorage.kt index a5acedb5b45cc..c46fa78179690 100644 --- a/scanner/src/main/kotlin/storages/ProvenanceBasedFileStorage.kt +++ b/scanner/src/main/kotlin/storages/ProvenanceBasedFileStorage.kt @@ -29,6 +29,7 @@ import org.apache.logging.log4j.kotlin.logger import org.ossreviewtoolkit.model.ArtifactProvenance import org.ossreviewtoolkit.model.KnownProvenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.yamlMapper @@ -45,6 +46,10 @@ class ProvenanceBasedFileStorage(private val backend: FileStorage) : ProvenanceB override fun read(provenance: KnownProvenance, scannerMatcher: ScannerMatcher?): List { requireEmptyVcsPath(provenance) + if (provenance !is RemoteProvenance) { + throw ScanStorageException("Scan result must have a known provenance, but it is $provenance.") + } + val path = storagePath(provenance) return runCatching { @@ -80,7 +85,7 @@ class ProvenanceBasedFileStorage(private val backend: FileStorage) : ProvenanceB requireEmptyVcsPath(provenance) - if (provenance !is KnownProvenance) { + if (provenance !is RemoteProvenance) { throw ScanStorageException("Scan result must have a known provenance, but it is $provenance.") } @@ -123,7 +128,7 @@ class ProvenanceBasedFileStorage(private val backend: FileStorage) : ProvenanceB } } -private fun storagePath(provenance: KnownProvenance) = +private fun storagePath(provenance: RemoteProvenance) = when (provenance) { is ArtifactProvenance -> "artifact/${provenance.sourceArtifact.url.fileSystemEncode()}/$SCAN_RESULTS_FILE_NAME" is RepositoryProvenance -> { diff --git a/scanner/src/main/kotlin/storages/ProvenanceBasedPostgresStorage.kt b/scanner/src/main/kotlin/storages/ProvenanceBasedPostgresStorage.kt index bac29f155c249..560b8160e7a0d 100644 --- a/scanner/src/main/kotlin/storages/ProvenanceBasedPostgresStorage.kt +++ b/scanner/src/main/kotlin/storages/ProvenanceBasedPostgresStorage.kt @@ -37,6 +37,7 @@ import org.jetbrains.exposed.sql.selectAll import org.ossreviewtoolkit.model.ArtifactProvenance import org.ossreviewtoolkit.model.KnownProvenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.ScanSummary @@ -87,6 +88,10 @@ class ProvenanceBasedPostgresStorage( return database.transaction { val query = table.selectAll() + if (provenance !is RemoteProvenance) { + throw ScanStorageException("Scan result must have a known provenance, but it is $provenance.") + } + when (provenance) { is ArtifactProvenance -> { query.andWhere { @@ -138,7 +143,7 @@ class ProvenanceBasedPostgresStorage( requireEmptyVcsPath(provenance) - if (provenance !is KnownProvenance) { + if (provenance !is RemoteProvenance) { throw ScanStorageException("Scan result must have a known provenance, but it is $provenance.") } diff --git a/scanner/src/main/kotlin/utils/FileListResolver.kt b/scanner/src/main/kotlin/utils/FileListResolver.kt index 211b7b1a94346..5f91a920fce2d 100644 --- a/scanner/src/main/kotlin/utils/FileListResolver.kt +++ b/scanner/src/main/kotlin/utils/FileListResolver.kt @@ -26,6 +26,7 @@ import java.io.File import org.ossreviewtoolkit.model.HashAlgorithm import org.ossreviewtoolkit.model.KnownProvenance +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.toYaml import org.ossreviewtoolkit.model.utils.ProvenanceFileStorage import org.ossreviewtoolkit.model.yamlMapper @@ -55,7 +56,7 @@ class FileListResolver( * Get the [FileList] associated with the provided [provenance]. If it is not available in the [storage], download * the provenance and create the [FileList] from it. */ - fun resolve(provenance: KnownProvenance): FileList { + fun resolve(provenance: RemoteProvenance): FileList { storage.getFileList(provenance)?.let { return it } val dir = provenanceDownloader.download(provenance) diff --git a/scanner/src/test/kotlin/ScannerTest.kt b/scanner/src/test/kotlin/ScannerTest.kt index a61911176a47b..73cec7d4f3d2b 100644 --- a/scanner/src/test/kotlin/ScannerTest.kt +++ b/scanner/src/test/kotlin/ScannerTest.kt @@ -57,6 +57,7 @@ import org.ossreviewtoolkit.model.PackageType import org.ossreviewtoolkit.model.Provenance import org.ossreviewtoolkit.model.ProvenanceResolutionResult import org.ossreviewtoolkit.model.RemoteArtifact +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.ScanSummary @@ -1168,7 +1169,7 @@ private class FakePathScannerWrapper : PathScannerWrapper { * provenance, instead of actually downloading the source code. */ private class FakeProvenanceDownloader(val filename: String = "fake.txt") : ProvenanceDownloader { - override fun download(provenance: KnownProvenance): File = + override fun download(provenance: RemoteProvenance): File = createOrtTempDir().apply { resolve(filename).writeText(provenance.toYaml()) } @@ -1182,7 +1183,7 @@ private class FakePackageProvenanceResolver : PackageProvenanceResolver { override suspend fun resolveProvenance( pkg: Package, defaultSourceCodeOrigins: List - ): KnownProvenance { + ): RemoteProvenance { defaultSourceCodeOrigins.forEach { sourceCodeOrigin -> when (sourceCodeOrigin) { SourceCodeOrigin.ARTIFACT -> { @@ -1207,7 +1208,7 @@ private class FakePackageProvenanceResolver : PackageProvenanceResolver { * An implementation of [NestedProvenanceResolver] that always returns a non-nested provenance. */ private class FakeNestedProvenanceResolver : NestedProvenanceResolver { - override suspend fun resolveNestedProvenance(provenance: KnownProvenance): NestedProvenance = + override suspend fun resolveNestedProvenance(provenance: RemoteProvenance): NestedProvenance = NestedProvenance(root = provenance, subRepositories = emptyMap()) } @@ -1297,7 +1298,7 @@ private fun createScanResult( ) private fun createNestedScanResult( - provenance: KnownProvenance, + provenance: RemoteProvenance, scannerDetails: ScannerDetails, subRepositories: Map = emptyMap() ) = NestedProvenanceScanResult( @@ -1319,7 +1320,7 @@ private fun createStoredScanResult(provenance: Provenance, scannerDetails: Scann ) private fun createStoredNestedScanResult( - provenance: KnownProvenance, + provenance: RemoteProvenance, scannerDetails: ScannerDetails, subRepositories: Map = emptyMap() ) = NestedProvenanceScanResult( diff --git a/utils/test/src/main/kotlin/Utils.kt b/utils/test/src/main/kotlin/Utils.kt index 89f683869f0cc..70f74af31848f 100644 --- a/utils/test/src/main/kotlin/Utils.kt +++ b/utils/test/src/main/kotlin/Utils.kt @@ -34,6 +34,7 @@ import org.ossreviewtoolkit.model.KnownProvenance import org.ossreviewtoolkit.model.Package import org.ossreviewtoolkit.model.ProvenanceResolutionResult import org.ossreviewtoolkit.model.RemoteArtifact +import org.ossreviewtoolkit.model.RemoteProvenance import org.ossreviewtoolkit.model.RepositoryProvenance import org.ossreviewtoolkit.model.ScanResult import org.ossreviewtoolkit.model.ScannerRun @@ -193,7 +194,7 @@ fun scannerRunOf(vararg pkgScanResults: Pair>): Sca provenances = pkgScanResultsWithKnownProvenance.mapTo(mutableSetOf()) { (id, scanResultsForId) -> ProvenanceResolutionResult( id = id, - packageProvenance = scanResultsForId.firstOrNull()?.provenance as KnownProvenance + packageProvenance = scanResultsForId.firstOrNull()?.provenance as RemoteProvenance ) }, scanResults = scanResults,