From 27f2cecc56e66b0bbec31a9d5aa48863707970f0 Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Thu, 19 Dec 2024 12:12:43 +0530 Subject: [PATCH 1/9] Add initial commit with Paketo buildpacks and tests, and create buildpack package Signed-off-by: NucleonGodX --- src/packagedcode/__init__.py | 3 + src/packagedcode/buildpack.py | 111 ++++++++++++++ src/packagedcode/models.py | 8 + .../dotnet-execute/buildpack.toml | 20 +++ .../paketo-buildpacks/git/buildpack.toml | 13 ++ .../java-memory-assistant/buildpack.toml | 83 +++++++++++ .../opentelemetry/buildpack.toml | 65 ++++++++ .../pipeline-builder-canary/buildpack.toml | 64 ++++++++ .../source-removal/buildpack.toml | 12 ++ tests/packagedcode/test_buildpack.py | 140 ++++++++++++++++++ 10 files changed, 519 insertions(+) create mode 100644 src/packagedcode/buildpack.py create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/git/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/buildpack.toml create mode 100644 tests/packagedcode/test_buildpack.py diff --git a/src/packagedcode/__init__.py b/src/packagedcode/__init__.py index 093fd9940f..b5f94d982e 100644 --- a/src/packagedcode/__init__.py +++ b/src/packagedcode/__init__.py @@ -12,6 +12,7 @@ from packagedcode import alpine from packagedcode import bower from packagedcode import build +from packagedcode import buildpack from packagedcode import build_gradle from packagedcode import cargo from packagedcode import chef @@ -62,6 +63,8 @@ build.BuckMetadataBzlHandler, build.BuckPackageHandler, + buildpack.BuildpackHandler, + cargo.CargoLockHandler, cargo.CargoTomlHandler, diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py new file mode 100644 index 0000000000..f2773a16b8 --- /dev/null +++ b/src/packagedcode/buildpack.py @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: Apache-2.0 + +import tomlkit +from packagedcode import models +from packageurl import PackageURL + +class BuildpackHandler(models.DatafileHandler): + """ + Handle buildpack.toml manifests. + See https://buildpacks.io/ for details on buildpack format. + """ + datasource_id = "buildpack_toml" + path_patterns = ("*buildpack.toml",) + default_package_type = "buildpack" + description = "Cloud Native Buildpack manifest" + documentation_url = "https://buildpacks.io/" + + @classmethod + def parse(cls, location, package_only=False): + """ + Parse the buildpack.toml file at `location` and yield PackageData. + """ + with open(location, "r", encoding="utf-8") as f: + data = tomlkit.parse(f.read()) + + # Extract required fields + api_version = data.get("api") + buildpack = data.get("buildpack", {}) + if not buildpack: + return # Skip files missing required fields + + buildpack_id = buildpack.get("id") + buildpack_version = buildpack.get("version", "unknown") + buildpack_name = buildpack.get("name") + + if not (api_version and buildpack_id and buildpack_version and buildpack_name): + return # Skip incomplete data + + # Optional fields + description = buildpack.get("description") + homepage_url = buildpack.get("homepage") + licenses = buildpack.get("licenses", []) + keywords = buildpack.get("keywords", []) + sbom_formats = buildpack.get("sbom-formats", []) + + # Parse licenses + license_expressions = [] + for license_entry in licenses: + license_type = license_entry.get("type") + license_uri = license_entry.get("uri") + if license_type: + license_expressions.append(license_type) + + # Parse dependencies from "metadata.dependencies" + dependencies = [] + metadata = data.get("metadata", {}) + metadata_dependencies = metadata.get("dependencies", []) + for dep in metadata_dependencies: + dep_purl = dep.get("purl") + dep_name = dep.get("name") + dep_version = dep.get("version") + if dep_purl: + dependencies.append( + models.DependentPackage( + purl=dep_purl, + scope="runtime", + is_runtime=True, + is_optional=False, + ) + ) + elif dep_name and dep_version: + dependencies.append( + models.DependentPackage( + purl=PackageURL(type="generic", name=dep_name, version=dep_version).to_string(), + scope="runtime", + is_runtime=True, + is_optional=False, + ) + ) + + # Parse "order" section for additional dependencies + orders = data.get("order", []) + for order in orders: + for group in order.get("group", []): + group_id = group.get("id") + group_version = group.get("version") + if group_id and group_version: + dependencies.append( + models.DependentPackage( + purl=PackageURL(type="buildpack", name=group_id, version=group_version).to_string(), + scope="runtime", + is_runtime=True, + is_optional=group.get("optional", False), + ) + ) + + package_data = dict( + datasource_id=cls.datasource_id, + type=cls.default_package_type, + name=buildpack_name, + version=buildpack_version, + description=description, + homepage_url=homepage_url, + keywords=keywords, + sbom_formats=sbom_formats, + declared_license_expression=" AND ".join(license_expressions) if license_expressions else None, + dependencies=dependencies, + extra_data={"id": buildpack_id}, # Store the id in extra_data + ) + + yield models.PackageData.from_data(package_data, package_only) diff --git a/src/packagedcode/models.py b/src/packagedcode/models.py index ae0adb95f2..c223972a73 100644 --- a/src/packagedcode/models.py +++ b/src/packagedcode/models.py @@ -582,6 +582,14 @@ class PackageData(IdentifiablePackageData): download_url = String( label='Download URL', help='A direct download URL.') + + sbom_formats = List( + item_type=str, + label='SBOM Formats', + help='A list of supported SBOM formats output by the buildpack. ' + 'Supported values are the following media types: ' + '"application/vnd.cyclonedx+json", "application/spdx+json", and "application/vnd.syft+json".' + ) size = Integer( default=None, diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml new file mode 100644 index 0000000000..bb87a31580 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml @@ -0,0 +1,20 @@ +api = "0.8" + +[buildpack] + description = "A buildpack for running the `dotnet execute` command for an app" + homepage = "https://github.com/paketo-buildpacks/dotnet-execute" + id = "paketo-buildpacks/dotnet-execute" + keywords = ["dotnet"] + name = "Paketo Buildpack for .NET Execute" + sbom-formats = ["application/vnd.cyclonedx+json", "application/spdx+json", "application/vnd.syft+json"] + + [[buildpack.licenses]] + type = "Apache-2.0" + uri = "https://github.com/paketo-buildpacks/dotnet-execute/blob/main/LICENSE" + +[metadata] + include-files = ["bin/build", "bin/detect", "bin/run", "bin/port-chooser", "buildpack.toml"] + pre-package = "./scripts/build.sh" + +[[stacks]] + id = "*" \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/buildpack.toml b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/buildpack.toml new file mode 100644 index 0000000000..fcc9c97c38 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/buildpack.toml @@ -0,0 +1,13 @@ +api = "0.7" + +[buildpack] + homepage = "https://github.com/paketo-buildpacks/git" + id = "paketo-buildpacks/git" + name = "Paketo Buildpack for Git" + +[metadata] + include-files = ["bin/run", "bin/build", "bin/detect", "buildpack.toml"] + pre-package = "./scripts/build.sh" + +[[stacks]] + id = "*" \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml new file mode 100644 index 0000000000..8f315e6e54 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml @@ -0,0 +1,83 @@ +# Copyright 2018-2021 the original author or authors. +# +# 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 +# +# https://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. + +api = "0.7" + +[buildpack] + description = "A Cloud Native Buildpack that installs the Java Memory Assistant agent" + homepage = "https://github.com/paketo-buildpacks/java-memory-assistant" + id = "paketo-buildpacks/java-memory-assistant" + keywords = ["agent"] + name = "Paketo Buildpack for Java Memory Assistant" + sbom-formats = ["application/vnd.syft+json", "application/vnd.cyclonedx+json"] + version = "{{.version}}" + + [[buildpack.licenses]] + type = "Apache-2.0" + uri = "https://github.com/paketo-buildpacks/java-memory-assistant/blob/main/LICENSE" + +[metadata] + include-files = ["LICENSE", "NOTICE", "README.md", "linux/amd64/bin/build", "linux/amd64/bin/detect", "linux/amd64/bin/main", "linux/amd64/bin/helper", "linux/arm64/bin/build", "linux/arm64/bin/detect", "linux/arm64/bin/main", "linux/arm64/bin/helper", "buildpack.toml"] + pre-package = "scripts/build.sh" + + [[metadata.configurations]] + build = true + default = "false" + description = "whether to contribute the JMA agent at build time" + name = "BP_JMA_ENABLED" + + [[metadata.configurations]] + default = "false" + description = "whether to enable the JMA agent at runtime" + launch = true + name = "BPL_JMA_ENABLED" + + [[metadata.configurations]] + default = "check_interval=5s,log_level=ERROR,max_frequency=1/1m,heap_dump_folder=/tmp,thresholds.heap=80%" + description = "arguments to configure the JMA agent" + launch = true + name = "BPL_JMA_ARGS" + + [[metadata.dependencies]] + cpes = ["cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*"] + id = "java-memory-assistant" + name = "Java Memory Assistant Agent" + purl = "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64" + sha256 = "9c5ffb4bdeec5ed6b4f1d734469500754a857d1452c3d253d89e2315addb04c5" + source = "https://github.com/sap/java-memory-assistant/archive/refs/tags/0.5.0.tar.gz" + source-sha256 = "dedf82a5c10df5b12e602c1237f00a459a38b6a55c0ff8d671fa0d3909dfe4fc" + stacks = ["io.buildpacks.stacks.bionic", "io.paketo.stacks.tiny", "*"] + uri = "https://github.com/SAP-archive/java-memory-assistant/releases/download/0.5.0/java-memory-assistant-0.5.0.jar" + version = "0.5.0" + + [[metadata.dependencies.licenses]] + type = "Apache-2.0" + uri = "https://github.com/SAP/java-memory-assistant/blob/master/LICENSE" + +[[stacks]] + id = "io.buildpacks.stacks.bionic" + +[[stacks]] + id = "io.paketo.stacks.tiny" + +[[stacks]] + id = "*" + +[[targets]] + arch = "amd64" + os = "linux" + +[[targets]] + arch = "arm64" + os = "linux" \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/buildpack.toml b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/buildpack.toml new file mode 100644 index 0000000000..d9a2b2733f --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/buildpack.toml @@ -0,0 +1,65 @@ +# Copyright 2018-2024 the original author or authors. +# +# 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 +# +# https://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. + +api = "0.7" + +[buildpack] + description = "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent" + homepage = "https://github.com/paketo-buildpacks/opentelemetry" + id = "paketo-buildpacks/opentelemetry" + keywords = ["java", "apm", "trace", "opentelemetry"] + name = "Paketo Buildpack for OpenTelemetry" + sbom-formats = ["application/vnd.cyclonedx+json", "application/vnd.syft+json"] + version = "{{.version}}" + + [[buildpack.licenses]] + type = "Apache-2.0" + uri = "https://github.com/paketo-buildpacks/opentelemetry/blob/main/LICENSE" + +[metadata] + include-files = ["LICENSE", "NOTICE", "README.md", "linux/amd64/bin/build", "linux/amd64/bin/detect", "linux/amd64/bin/main", "linux/amd64/bin/helper", "linux/arm64/bin/build", "linux/arm64/bin/detect", "linux/arm64/bin/main", "linux/arm64/bin/helper", "buildpack.toml"] + pre-package = "scripts/build.sh" + + [[metadata.configurations]] + build = true + default = "false" + description = "enable the OpenTelemetry Java Trace Agent" + name = "BP_OPENTELEMETRY_ENABLED" + + [[metadata.dependencies]] + cpes = ["cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*"] + id = "opentelemetry-java" + name = "OpenTelemetry Java Agent" + purl = "pkg:generic/opentelemetry-java@2.10.0" + sha256 = "d05f6e36fac8db629263a6aaec2841cc934d064d7b19bfe38425b604b8b54926" + source = "https://github.com/open-telemetry/opentelemetry-java-instrumentation/archive/refs/tags/v2.10.0.tar.gz" + source-sha256 = "3a921baa391e9fa3f3622bedf1770567bcfed2a13de07642a2273b8beeca934a" + stacks = ["*"] + uri = "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.10.0/opentelemetry-javaagent.jar" + version = "2.10.0" + + [[metadata.dependencies.licenses]] + type = "Apache-2.0" + uri = "https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/LICENSE" + +[[stacks]] + id = "*" + +[[targets]] + arch = "amd64" + os = "linux" + +[[targets]] + arch = "arm64" + os = "linux" \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml new file mode 100644 index 0000000000..744b17ed61 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml @@ -0,0 +1,64 @@ +# Copyright 2018-2021 the original author or authors. +# +# 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 +# +# https://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. + +api = "0.7" + +[buildpack] + description = "A Cloud Native Buildpack that provides/does nothing. For testing only." + homepage = "https://github.com/paketo-buildpacks/pipeline-builder-canary" + id = "paketo-buildpacks/pipeline-builder-canary" + keywords = ["nothing"] + name = "Paketo Buildpack for Pipeline Builder Canary" + version = "{{.version}}" + + [[buildpack.licenses]] + type = "Apache-2.0" + uri = "https://github.com/paketo-buildpacks/pipeline-builder-canary/blob/main/LICENSE" + +[metadata] + include-files = ["LICENSE", "NOTICE", "README.md", "linux/amd64/bin/build", "linux/amd64/bin/detect", "linux/amd64/bin/main", "linux/arm64/bin/build", "linux/arm64/bin/detect", "linux/arm64/bin/main", "buildpack.toml"] + pre-package = "scripts/build.sh" + + [[metadata.dependencies]] + cpes = ["cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*"] + id = "maven" + name = "Apache Maven" + purl = "pkg:generic/apache-maven@3.9.9" + sha256 = "7a9cdf674fc1703d6382f5f330b3d110ea1b512b51f1652846d9e4e8a588d766" + source = "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-src.tar.gz" + source-sha256 = "8a24c448d4ac397e6b0c019a4d7250068c02d1cdb553299e6bb71c3ccca78b2c" + stacks = ["io.buildpacks.stacks.bionic", "io.paketo.stacks.tiny", "*"] + uri = "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz" + version = "3.9.9" + + [[metadata.dependencies.licenses]] + type = "Apache-2.0" + uri = "https://www.apache.org/licenses/" + +[[stacks]] + id = "io.buildpacks.stacks.bionic" + +[[stacks]] + id = "io.paketo.stacks.tiny" + +[[stacks]] + id = "*" + +[[targets]] + arch = "amd64" + os = "linux" + +[[targets]] + arch = "arm64" + os = "linux" \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/buildpack.toml b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/buildpack.toml new file mode 100644 index 0000000000..01a51bfaed --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/buildpack.toml @@ -0,0 +1,12 @@ +api = "0.7" + +[buildpack] +id = "paketo-buildpacks/source-removal" +name = "Paketo Buildpack for Source Removal" + +[metadata] +include-files = ["bin/run", "bin/build","bin/detect","buildpack.toml"] +pre-package = "./scripts/build.sh" + +[[stacks]] +id = "*" \ No newline at end of file diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py new file mode 100644 index 0000000000..c231241741 --- /dev/null +++ b/tests/packagedcode/test_buildpack.py @@ -0,0 +1,140 @@ +import os +from packagedcode import buildpack +from commoncode.testcase import FileBasedTesting +from packageurl import PackageURL + +class TestBuildpack(FileBasedTesting): + test_data_dir = os.path.join(os.path.dirname(__file__), 'data') + + def test_is_datafile_buildpack_toml1(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') + assert buildpack.BuildpackHandler.is_datafile(test_file) + + def test_parse_paketo_java_memory_assistant_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') + packages = list(buildpack.BuildpackHandler.parse(test_file)) + + assert len(packages) == 1 + package = packages[0] + assert package.name == "Paketo Buildpack for Java Memory Assistant" + assert package.extra_data.get("id") == "paketo-buildpacks/java-memory-assistant" + assert package.description == "A Cloud Native Buildpack that installs the Java Memory Assistant agent" + assert package.homepage_url == "https://github.com/paketo-buildpacks/java-memory-assistant" + assert package.keywords == ["agent"] + assert package.declared_license_expression == "Apache-2.0" + assert package.sbom_formats == ["application/vnd.syft+json", "application/vnd.cyclonedx+json"] + assert package.version == "{{.version}}" + assert len(package.dependencies) == 1 + + dependency = package.dependencies[0] + assert dependency.purl == "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64" + assert dependency.scope == "runtime" + assert dependency.is_runtime is True + assert dependency.is_optional is False + + parsed_purl = PackageURL.from_string(dependency.purl) + assert parsed_purl.name == "sap-java-memory-assistant" + assert parsed_purl.version == "0.5.0" + + def test_is_datafile_buildpack_toml2(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') + assert buildpack.BuildpackHandler.is_datafile(test_file) + + def test_parse_paketo_dotnet_execute_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') + packages = list(buildpack.BuildpackHandler.parse(test_file)) + + package = packages[0] + assert package.name == "Paketo Buildpack for .NET Execute" + assert package.extra_data.get("id") == "paketo-buildpacks/dotnet-execute" + assert package.description == "A buildpack for running the `dotnet execute` command for an app" + assert package.homepage_url == "https://github.com/paketo-buildpacks/dotnet-execute" + assert package.keywords == ["dotnet"] + assert package.declared_license_expression == "Apache-2.0" + assert package.sbom_formats == ["application/vnd.cyclonedx+json", "application/spdx+json", "application/vnd.syft+json"] + assert package.version == "unknown" + + def test_is_datafile_buildpack_toml3(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') + assert buildpack.BuildpackHandler.is_datafile(test_file) + + def test_parse_paketo_git_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') + packages = list(buildpack.BuildpackHandler.parse(test_file)) + + package = packages[0] + assert package.name == "Paketo Buildpack for Git" + assert package.extra_data.get("id") == "paketo-buildpacks/git" + assert package.homepage_url == "https://github.com/paketo-buildpacks/git" + + def test_is_datafile_buildpack_toml4(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') + assert buildpack.BuildpackHandler.is_datafile(test_file) + + def test_parse_paketo_opentelemetry_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') + packages = list(buildpack.BuildpackHandler.parse(test_file)) + + assert len(packages) == 1 + package = packages[0] + assert package.name == "Paketo Buildpack for OpenTelemetry" + assert package.extra_data.get("id") == "paketo-buildpacks/opentelemetry" + assert package.description == "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent" + assert package.homepage_url == "https://github.com/paketo-buildpacks/opentelemetry" + assert package.keywords == ["java", "apm", "trace", "opentelemetry"] + assert package.declared_license_expression == "Apache-2.0" + assert package.sbom_formats == ["application/vnd.cyclonedx+json", "application/vnd.syft+json"] + assert package.version == "{{.version}}" + assert len(package.dependencies) == 1 + + dependency = package.dependencies[0] + assert dependency.purl == "pkg:generic/opentelemetry-java@2.10.0" + assert dependency.scope == "runtime" + assert dependency.is_runtime is True + assert dependency.is_optional is False + + parsed_purl = PackageURL.from_string(dependency.purl) + assert parsed_purl.name == "opentelemetry-java" + assert parsed_purl.version == "2.10.0" + + def test_is_datafile_buildpack_toml5(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') + assert buildpack.BuildpackHandler.is_datafile(test_file) + + def test_parse_paketo_pipeline_builder_canary_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') + + packages = list(buildpack.BuildpackHandler.parse(test_file)) + + assert len(packages) == 1 + package = packages[0] + assert package.name == "Paketo Buildpack for Pipeline Builder Canary" + assert package.extra_data.get("id") == "paketo-buildpacks/pipeline-builder-canary" + assert package.description == "A Cloud Native Buildpack that provides/does nothing. For testing only." + assert package.homepage_url == "https://github.com/paketo-buildpacks/pipeline-builder-canary" + assert package.keywords == ["nothing"] + assert package.declared_license_expression == "Apache-2.0" + assert package.version == "{{.version}}" + assert len(package.dependencies) == 1 + + dependency = package.dependencies[0] + assert dependency.purl == "pkg:generic/apache-maven@3.9.9" + assert dependency.scope == "runtime" + assert dependency.is_runtime is True + assert dependency.is_optional is False + + parsed_purl = PackageURL.from_string(dependency.purl) + assert parsed_purl.name == "apache-maven" + assert parsed_purl.version == "3.9.9" + + def test_is_datafile_buildpack_toml6(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') + assert buildpack.BuildpackHandler.is_datafile(test_file) + + def test_parse_paketo_source_removal_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') + packages = list(buildpack.BuildpackHandler.parse(test_file)) + + package = packages[0] + assert package.name == "Paketo Buildpack for Source Removal" + assert package.extra_data.get("id") == "paketo-buildpacks/source-removal" From 3a46d09c6044a8584ff84f10b31a6d5cbc0285a7 Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Fri, 20 Dec 2024 01:53:17 +0530 Subject: [PATCH 2/9] Use the correct TOML import for parsing Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 13 ++++++++++--- tests/packagedcode/test_buildpack.py | 9 +++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index f2773a16b8..5fd0887607 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -1,6 +1,13 @@ +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# ScanCode is a trademark of nexB Inc. # SPDX-License-Identifier: Apache-2.0 +# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. +# See https://github.com/nexB/scancode-toolkit for support or download. +# See https://aboutcode.org for more information about nexB OSS projects. +# -import tomlkit +import toml from packagedcode import models from packageurl import PackageURL @@ -21,7 +28,7 @@ def parse(cls, location, package_only=False): Parse the buildpack.toml file at `location` and yield PackageData. """ with open(location, "r", encoding="utf-8") as f: - data = tomlkit.parse(f.read()) + data = toml.load(f) # Extract required fields api_version = data.get("api") @@ -108,4 +115,4 @@ def parse(cls, location, package_only=False): extra_data={"id": buildpack_id}, # Store the id in extra_data ) - yield models.PackageData.from_data(package_data, package_only) + yield models.PackageData.from_data(package_data, package_only) \ No newline at end of file diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py index c231241741..f65ae09590 100644 --- a/tests/packagedcode/test_buildpack.py +++ b/tests/packagedcode/test_buildpack.py @@ -1,3 +1,12 @@ +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# ScanCode is a trademark of nexB Inc. +# SPDX-License-Identifier: Apache-2.0 +# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. +# See https://github.com/nexB/scancode-toolkit for support or download. +# See https://aboutcode.org for more information about nexB OSS projects. +# + import os from packagedcode import buildpack from commoncode.testcase import FileBasedTesting From c1c24245878ab0fb178a8a9ae0a4b1977dc5d68b Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Tue, 24 Dec 2024 19:22:07 +0530 Subject: [PATCH 3/9] Add expected JSON files for testing Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 2 - src/packagedcode/models.py | 8 - .../dotnet-execute/expectedbuildpack.json | 117 ++++++++ .../git/expectedbuildpack.json | 113 ++++++++ .../expectedbuildpack.json | 145 ++++++++++ .../opentelemetry/expectedbuildpack.json | 151 ++++++++++ .../expectedbuildpack.json | 145 ++++++++++ .../source-removal/expectedbuildpack.json | 113 ++++++++ tests/packagedcode/test_buildpack.py | 260 ++++++++++-------- 9 files changed, 934 insertions(+), 120 deletions(-) create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index 5fd0887607..88e392dd0f 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -48,7 +48,6 @@ def parse(cls, location, package_only=False): homepage_url = buildpack.get("homepage") licenses = buildpack.get("licenses", []) keywords = buildpack.get("keywords", []) - sbom_formats = buildpack.get("sbom-formats", []) # Parse licenses license_expressions = [] @@ -109,7 +108,6 @@ def parse(cls, location, package_only=False): description=description, homepage_url=homepage_url, keywords=keywords, - sbom_formats=sbom_formats, declared_license_expression=" AND ".join(license_expressions) if license_expressions else None, dependencies=dependencies, extra_data={"id": buildpack_id}, # Store the id in extra_data diff --git a/src/packagedcode/models.py b/src/packagedcode/models.py index c223972a73..64bbce23d0 100644 --- a/src/packagedcode/models.py +++ b/src/packagedcode/models.py @@ -583,14 +583,6 @@ class PackageData(IdentifiablePackageData): label='Download URL', help='A direct download URL.') - sbom_formats = List( - item_type=str, - label='SBOM Formats', - help='A list of supported SBOM formats output by the buildpack. ' - 'Supported values are the following media types: ' - '"application/vnd.cyclonedx+json", "application/spdx+json", and "application/vnd.syft+json".' - ) - size = Integer( default=None, label='download size', diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json new file mode 100644 index 0000000000..a52a173f8d --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json @@ -0,0 +1,117 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for .NET Execute", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A buildpack for running the `dotnet execute` command for an app", + "release_date": null, + "parties": [], + "keywords": [ + "dotnet" + ], + "homepage_url": "https://github.com/paketo-buildpacks/dotnet-execute", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/dotnet-execute" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown?uuid=269fba9a-5182-4434-a4e5-e00840e4c545", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown" + } + ], + "dependencies": [], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for .NET Execute", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A buildpack for running the `dotnet execute` command for an app", + "release_date": null, + "parties": [], + "keywords": [ + "dotnet" + ], + "homepage_url": "https://github.com/paketo-buildpacks/dotnet-execute", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/dotnet-execute" + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown" + } + ], + "for_packages": [ + "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown?uuid=269fba9a-5182-4434-a4e5-e00840e4c545" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json new file mode 100644 index 0000000000..99aae72844 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json @@ -0,0 +1,113 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Git", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": "https://github.com/paketo-buildpacks/git", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/git" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown?uuid=d949b01b-4db7-4fbd-a85b-c23ff707444d", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown" + } + ], + "dependencies": [], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Git", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": "https://github.com/paketo-buildpacks/git", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/git" + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown" + } + ], + "for_packages": [ + "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown?uuid=d949b01b-4db7-4fbd-a85b-c23ff707444d" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json new file mode 100644 index 0000000000..43f35d93db --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json @@ -0,0 +1,145 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Java Memory Assistant", + "version": "{{.version}}", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that installs the Java Memory Assistant agent", + "release_date": null, + "parties": [], + "keywords": [ + "agent" + ], + "homepage_url": "https://github.com/paketo-buildpacks/java-memory-assistant", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/java-memory-assistant" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D?uuid=d197d3a7-e7df-49a2-8b79-a74156b545bc", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D" + } + ], + "dependencies": [ + { + "purl": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64&uuid=69e1a8c3-e31c-4e85-8255-463ae5fe8797", + "for_package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D?uuid=d197d3a7-e7df-49a2-8b79-a74156b545bc", + "datafile_path": "buildpack.toml", + "datasource_id": "buildpack_toml" + } + ], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Java Memory Assistant", + "version": "{{.version}}", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that installs the Java Memory Assistant agent", + "release_date": null, + "parties": [], + "keywords": [ + "agent" + ], + "homepage_url": "https://github.com/paketo-buildpacks/java-memory-assistant", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/java-memory-assistant" + }, + "dependencies": [ + { + "purl": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D" + } + ], + "for_packages": [ + "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D?uuid=d197d3a7-e7df-49a2-8b79-a74156b545bc" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json new file mode 100644 index 0000000000..793a001e47 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json @@ -0,0 +1,151 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for OpenTelemetry", + "version": "{{.version}}", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", + "release_date": null, + "parties": [], + "keywords": [ + "java", + "apm", + "trace", + "opentelemetry" + ], + "homepage_url": "https://github.com/paketo-buildpacks/opentelemetry", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/opentelemetry" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D?uuid=01957db3-05cb-464d-94ab-5818aa169b41", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D" + } + ], + "dependencies": [ + { + "purl": "pkg:generic/opentelemetry-java@2.10.0", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:generic/opentelemetry-java@2.10.0?uuid=6d44ed4b-f22b-43d0-a7ab-e98529e1a112", + "for_package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D?uuid=01957db3-05cb-464d-94ab-5818aa169b41", + "datafile_path": "buildpack.toml", + "datasource_id": "buildpack_toml" + } + ], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for OpenTelemetry", + "version": "{{.version}}", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", + "release_date": null, + "parties": [], + "keywords": [ + "java", + "apm", + "trace", + "opentelemetry" + ], + "homepage_url": "https://github.com/paketo-buildpacks/opentelemetry", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/opentelemetry" + }, + "dependencies": [ + { + "purl": "pkg:generic/opentelemetry-java@2.10.0", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D" + } + ], + "for_packages": [ + "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D?uuid=01957db3-05cb-464d-94ab-5818aa169b41" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json new file mode 100644 index 0000000000..97808da3ca --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json @@ -0,0 +1,145 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Pipeline Builder Canary", + "version": "{{.version}}", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that provides/does nothing. For testing only.", + "release_date": null, + "parties": [], + "keywords": [ + "nothing" + ], + "homepage_url": "https://github.com/paketo-buildpacks/pipeline-builder-canary", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/pipeline-builder-canary" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D?uuid=5645b40a-3914-435b-af7a-ee5cafef162b", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D" + } + ], + "dependencies": [ + { + "purl": "pkg:generic/apache-maven@3.9.9", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {}, + "dependency_uid": "pkg:generic/apache-maven@3.9.9?uuid=75bc22b3-e9f7-4e63-b9a8-679269bbe48a", + "for_package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D?uuid=5645b40a-3914-435b-af7a-ee5cafef162b", + "datafile_path": "buildpack.toml", + "datasource_id": "buildpack_toml" + } + ], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Pipeline Builder Canary", + "version": "{{.version}}", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that provides/does nothing. For testing only.", + "release_date": null, + "parties": [], + "keywords": [ + "nothing" + ], + "homepage_url": "https://github.com/paketo-buildpacks/pipeline-builder-canary", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "Apache-2.0", + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/pipeline-builder-canary" + }, + "dependencies": [ + { + "purl": "pkg:generic/apache-maven@3.9.9", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": {} + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D" + } + ], + "for_packages": [ + "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D?uuid=5645b40a-3914-435b-af7a-ee5cafef162b" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json new file mode 100644 index 0000000000..bead54efff --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json @@ -0,0 +1,113 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Source Removal", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/source-removal" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown?uuid=24557330-563d-4a75-909f-b60c6e517a27", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown" + } + ], + "dependencies": [], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Paketo Buildpack for Source Removal", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "id": "paketo-buildpacks/source-removal" + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown" + } + ], + "for_packages": [ + "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown?uuid=24557330-563d-4a75-909f-b60c6e517a27" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py index f65ae09590..ff35c6c369 100644 --- a/tests/packagedcode/test_buildpack.py +++ b/tests/packagedcode/test_buildpack.py @@ -11,139 +11,179 @@ from packagedcode import buildpack from commoncode.testcase import FileBasedTesting from packageurl import PackageURL +from packagedcode import models +from packages_test_utils import compare_package_results +from scancode.cli_test_utils import check_json_scan +from scancode.cli_test_utils import run_scan_click +from scancode_config import REGEN_TEST_FIXTURES class TestBuildpack(FileBasedTesting): test_data_dir = os.path.join(os.path.dirname(__file__), 'data') - def test_is_datafile_buildpack_toml1(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') - assert buildpack.BuildpackHandler.is_datafile(test_file) + def test_scanworks_on_buildpack_paketo_dotnet_execute(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - def test_parse_paketo_java_memory_assistant_buildpack_toml(self): + def test_scanworks_on_buildpack_paketo_java_memory_assistant(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') - packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - assert len(packages) == 1 - package = packages[0] - assert package.name == "Paketo Buildpack for Java Memory Assistant" - assert package.extra_data.get("id") == "paketo-buildpacks/java-memory-assistant" - assert package.description == "A Cloud Native Buildpack that installs the Java Memory Assistant agent" - assert package.homepage_url == "https://github.com/paketo-buildpacks/java-memory-assistant" - assert package.keywords == ["agent"] - assert package.declared_license_expression == "Apache-2.0" - assert package.sbom_formats == ["application/vnd.syft+json", "application/vnd.cyclonedx+json"] - assert package.version == "{{.version}}" - assert len(package.dependencies) == 1 + def test_scanworks_on_buildpack_paketo_git(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/git/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - dependency = package.dependencies[0] - assert dependency.purl == "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64" - assert dependency.scope == "runtime" - assert dependency.is_runtime is True - assert dependency.is_optional is False + def test_scanworks_on_buildpack_paketo_opentelemetry(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - parsed_purl = PackageURL.from_string(dependency.purl) - assert parsed_purl.name == "sap-java-memory-assistant" - assert parsed_purl.version == "0.5.0" + def test_scanworks_on_buildpack_paketo_pipeline_builder_canary(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + + def test_scanworks_on_buildpack_paketo_source_removal(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - def test_is_datafile_buildpack_toml2(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') - assert buildpack.BuildpackHandler.is_datafile(test_file) def test_parse_paketo_dotnet_execute_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') - packages = list(buildpack.BuildpackHandler.parse(test_file)) - - package = packages[0] - assert package.name == "Paketo Buildpack for .NET Execute" - assert package.extra_data.get("id") == "paketo-buildpacks/dotnet-execute" - assert package.description == "A buildpack for running the `dotnet execute` command for an app" - assert package.homepage_url == "https://github.com/paketo-buildpacks/dotnet-execute" - assert package.keywords == ["dotnet"] - assert package.declared_license_expression == "Apache-2.0" - assert package.sbom_formats == ["application/vnd.cyclonedx+json", "application/spdx+json", "application/vnd.syft+json"] - assert package.version == "unknown" + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="Paketo Buildpack for .NET Execute", + version="unknown", + description="A buildpack for running the `dotnet execute` command for an app", + homepage_url="https://github.com/paketo-buildpacks/dotnet-execute", + keywords=["dotnet"], + declared_license_expression="Apache-2.0", + extra_data={"id": "paketo-buildpacks/dotnet-execute"} + ) + ] + compare_package_results(expected_packages, result_packages) - def test_is_datafile_buildpack_toml3(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') - assert buildpack.BuildpackHandler.is_datafile(test_file) + def test_parse_paketo_java_memory_assistant_buildpack_toml(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="Paketo Buildpack for Java Memory Assistant", + version="{{.version}}", + description="A Cloud Native Buildpack that installs the Java Memory Assistant agent", + homepage_url="https://github.com/paketo-buildpacks/java-memory-assistant", + keywords=["agent"], + declared_license_expression="Apache-2.0", + dependencies=[ + models.DependentPackage( + purl="pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", + scope="runtime", + is_runtime=True, + is_optional=False + ) + ], + extra_data={"id": "paketo-buildpacks/java-memory-assistant"} + ) + ] + compare_package_results(expected_packages, result_packages) def test_parse_paketo_git_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') - packages = list(buildpack.BuildpackHandler.parse(test_file)) - - package = packages[0] - assert package.name == "Paketo Buildpack for Git" - assert package.extra_data.get("id") == "paketo-buildpacks/git" - assert package.homepage_url == "https://github.com/paketo-buildpacks/git" - - def test_is_datafile_buildpack_toml4(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') - assert buildpack.BuildpackHandler.is_datafile(test_file) + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="Paketo Buildpack for Git", + version="unknown", + homepage_url="https://github.com/paketo-buildpacks/git", + extra_data={"id": "paketo-buildpacks/git"} + ) + ] + compare_package_results(expected_packages, result_packages) def test_parse_paketo_opentelemetry_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') - packages = list(buildpack.BuildpackHandler.parse(test_file)) - - assert len(packages) == 1 - package = packages[0] - assert package.name == "Paketo Buildpack for OpenTelemetry" - assert package.extra_data.get("id") == "paketo-buildpacks/opentelemetry" - assert package.description == "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent" - assert package.homepage_url == "https://github.com/paketo-buildpacks/opentelemetry" - assert package.keywords == ["java", "apm", "trace", "opentelemetry"] - assert package.declared_license_expression == "Apache-2.0" - assert package.sbom_formats == ["application/vnd.cyclonedx+json", "application/vnd.syft+json"] - assert package.version == "{{.version}}" - assert len(package.dependencies) == 1 - - dependency = package.dependencies[0] - assert dependency.purl == "pkg:generic/opentelemetry-java@2.10.0" - assert dependency.scope == "runtime" - assert dependency.is_runtime is True - assert dependency.is_optional is False - - parsed_purl = PackageURL.from_string(dependency.purl) - assert parsed_purl.name == "opentelemetry-java" - assert parsed_purl.version == "2.10.0" - - def test_is_datafile_buildpack_toml5(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') - assert buildpack.BuildpackHandler.is_datafile(test_file) + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="Paketo Buildpack for OpenTelemetry", + version="{{.version}}", + description="A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", + homepage_url="https://github.com/paketo-buildpacks/opentelemetry", + keywords=["java", "apm", "trace", "opentelemetry"], + declared_license_expression="Apache-2.0", + dependencies=[ + models.DependentPackage( + purl="pkg:generic/opentelemetry-java@2.10.0", + scope="runtime", + is_runtime=True, + is_optional=False + ) + ], + extra_data={"id": "paketo-buildpacks/opentelemetry"} + ) + ] + compare_package_results(expected_packages, result_packages) def test_parse_paketo_pipeline_builder_canary_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') - - packages = list(buildpack.BuildpackHandler.parse(test_file)) - - assert len(packages) == 1 - package = packages[0] - assert package.name == "Paketo Buildpack for Pipeline Builder Canary" - assert package.extra_data.get("id") == "paketo-buildpacks/pipeline-builder-canary" - assert package.description == "A Cloud Native Buildpack that provides/does nothing. For testing only." - assert package.homepage_url == "https://github.com/paketo-buildpacks/pipeline-builder-canary" - assert package.keywords == ["nothing"] - assert package.declared_license_expression == "Apache-2.0" - assert package.version == "{{.version}}" - assert len(package.dependencies) == 1 - - dependency = package.dependencies[0] - assert dependency.purl == "pkg:generic/apache-maven@3.9.9" - assert dependency.scope == "runtime" - assert dependency.is_runtime is True - assert dependency.is_optional is False - - parsed_purl = PackageURL.from_string(dependency.purl) - assert parsed_purl.name == "apache-maven" - assert parsed_purl.version == "3.9.9" - - def test_is_datafile_buildpack_toml6(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') - assert buildpack.BuildpackHandler.is_datafile(test_file) + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="Paketo Buildpack for Pipeline Builder Canary", + version="{{.version}}", + description="A Cloud Native Buildpack that provides/does nothing. For testing only.", + homepage_url="https://github.com/paketo-buildpacks/pipeline-builder-canary", + keywords=["nothing"], + declared_license_expression="Apache-2.0", + dependencies=[ + models.DependentPackage( + purl="pkg:generic/apache-maven@3.9.9", + scope="runtime", + is_runtime=True, + is_optional=False + ) + ], + extra_data={"id": "paketo-buildpacks/pipeline-builder-canary"} + ) + ] + compare_package_results(expected_packages, result_packages) def test_parse_paketo_source_removal_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') - packages = list(buildpack.BuildpackHandler.parse(test_file)) - - package = packages[0] - assert package.name == "Paketo Buildpack for Source Removal" - assert package.extra_data.get("id") == "paketo-buildpacks/source-removal" + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="Paketo Buildpack for Source Removal", + version="unknown", + extra_data={"id": "paketo-buildpacks/source-removal"} + ) + ] + compare_package_results(expected_packages, result_packages) From afaba834889b562566840681d77f508ef93f8bb0 Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Tue, 24 Dec 2024 21:36:17 +0530 Subject: [PATCH 4/9] Add Heroku buildpack with tests Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 91 ++++++++---- .../heroku-buildpack-java/buildpack.toml | 14 ++ .../expectedbuildpack.json | 131 +++++++++++++++++ .../heroku-buildpack-php/buildpack.toml | 17 +++ .../expectedbuildpack.json | 137 ++++++++++++++++++ tests/packagedcode/test_buildpack.py | 69 +++++++++ 6 files changed, 427 insertions(+), 32 deletions(-) create mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml create mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index 88e392dd0f..ac6f4b0de9 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -34,30 +34,55 @@ def parse(cls, location, package_only=False): api_version = data.get("api") buildpack = data.get("buildpack", {}) if not buildpack: - return # Skip files missing required fields + return + name = buildpack.get("name") + if not name: + return + + # Initialize common package data + package_data = dict( + datasource_id=cls.datasource_id, + type=cls.default_package_type, + name=name, + version="unknown", + description=None, + homepage_url=None, + keywords=[], + declared_license_expression=None, + dependencies=[], + ) + + # Handle Paketo-specific fields if present + if "api" in data: + cls.handle_paketo_buildpack(data, buildpack, package_data) + + # Handle Heroku-specific fields if present + elif "publish" in data and "Ignore" in data["publish"]: + cls.handle_heroku_buildpack(data, buildpack, package_data) + + yield models.PackageData.from_data(package_data, package_only) + + @staticmethod + def handle_paketo_buildpack(data, buildpack, package_data): buildpack_id = buildpack.get("id") - buildpack_version = buildpack.get("version", "unknown") - buildpack_name = buildpack.get("name") + if buildpack_id: + package_data["extra_data"] = {"id": buildpack_id} - if not (api_version and buildpack_id and buildpack_version and buildpack_name): - return # Skip incomplete data + package_data.update({ + "version": buildpack.get("version", "unknown"), + "description": buildpack.get("description"), + "homepage_url": buildpack.get("homepage"), + "keywords": buildpack.get("keywords", []), + }) - # Optional fields - description = buildpack.get("description") - homepage_url = buildpack.get("homepage") licenses = buildpack.get("licenses", []) - keywords = buildpack.get("keywords", []) - - # Parse licenses - license_expressions = [] - for license_entry in licenses: - license_type = license_entry.get("type") - license_uri = license_entry.get("uri") - if license_type: - license_expressions.append(license_type) + license_expressions = [ + license_entry.get("type") for license_entry in licenses if license_entry.get("type") + ] + if license_expressions: + package_data["declared_license_expression"] = " AND ".join(license_expressions) - # Parse dependencies from "metadata.dependencies" dependencies = [] metadata = data.get("metadata", {}) metadata_dependencies = metadata.get("dependencies", []) @@ -84,7 +109,6 @@ def parse(cls, location, package_only=False): ) ) - # Parse "order" section for additional dependencies orders = data.get("order", []) for order in orders: for group in order.get("group", []): @@ -100,17 +124,20 @@ def parse(cls, location, package_only=False): ) ) - package_data = dict( - datasource_id=cls.datasource_id, - type=cls.default_package_type, - name=buildpack_name, - version=buildpack_version, - description=description, - homepage_url=homepage_url, - keywords=keywords, - declared_license_expression=" AND ".join(license_expressions) if license_expressions else None, - dependencies=dependencies, - extra_data={"id": buildpack_id}, # Store the id in extra_data - ) + package_data["dependencies"] = dependencies + + @staticmethod + def handle_heroku_buildpack(data, buildpack, package_data): + publish_section = data.get("publish", {}) + if "Ignore" in publish_section: + ignore_files = publish_section["Ignore"].get("files", []) + if ignore_files: # Only add if files are found + package_data["extra_data"] = {"ignore_files": ignore_files} + else: + package_data["extra_data"] = {"ignore_files": []} + else: + package_data["extra_data"] = {"ignore_files": []} - yield models.PackageData.from_data(package_data, package_only) \ No newline at end of file + # Add description for Heroku buildpack + package_data["description"] = f"Heroku buildpack for {buildpack.get('name')}" + \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml new file mode 100644 index 0000000000..8493df2987 --- /dev/null +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml @@ -0,0 +1,14 @@ +[buildpack] +name = "Java" + + [publish.Ignore] + files = [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json new file mode 100644 index 0000000000..5e27d3d224 --- /dev/null +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json @@ -0,0 +1,131 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Java", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for Java", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Java@unknown?uuid=d332d23b-1b4e-415a-96a8-141416e7e7f2", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Java@unknown" + } + ], + "dependencies": [], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Java", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for Java", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Java@unknown" + } + ], + "for_packages": [ + "pkg:buildpack/Java@unknown?uuid=d332d23b-1b4e-415a-96a8-141416e7e7f2" + ], + "scan_errors": [] + } + ] + } \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml new file mode 100644 index 0000000000..78e59ee392 --- /dev/null +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml @@ -0,0 +1,17 @@ +[buildpack] +name = "PHP" + + [publish.Ignore] + files = [ + ".github/", + ".gitignore", + ".rspec_parallel", + "support/build/", + "support/devcenter/", + "test/", + "Gemfile", + "Gemfile.lock", + "hatchet.json", + "hatchet.lock", + "requirements.txt", + ] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json new file mode 100644 index 0000000000..bd798d5fef --- /dev/null +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json @@ -0,0 +1,137 @@ +{ + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "PHP", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for PHP", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + ".github/", + ".gitignore", + ".rspec_parallel", + "support/build/", + "support/devcenter/", + "test/", + "Gemfile", + "Gemfile.lock", + "hatchet.json", + "hatchet.lock", + "requirements.txt" + ] + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/PHP@unknown?uuid=62dfc37b-8be2-4509-87b3-5b5b25260da5", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/PHP@unknown" + } + ], + "dependencies": [], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "PHP", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for PHP", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + ".github/", + ".gitignore", + ".rspec_parallel", + "support/build/", + "support/devcenter/", + "test/", + "Gemfile", + "Gemfile.lock", + "hatchet.json", + "hatchet.lock", + "requirements.txt" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/PHP@unknown" + } + ], + "for_packages": [ + "pkg:buildpack/PHP@unknown?uuid=62dfc37b-8be2-4509-87b3-5b5b25260da5" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py index ff35c6c369..eb19ec6b29 100644 --- a/tests/packagedcode/test_buildpack.py +++ b/tests/packagedcode/test_buildpack.py @@ -20,6 +20,21 @@ class TestBuildpack(FileBasedTesting): test_data_dir = os.path.join(os.path.dirname(__file__), 'data') + + def test_scanworks_on_buildpack_heroku_java(self): + test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml') + expected_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + + def test_scanworks_on_buildpack_heroku_php(self): + test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml') + expected_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + def test_scanworks_on_buildpack_paketo_dotnet_execute(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') expected_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json') @@ -62,6 +77,60 @@ def test_scanworks_on_buildpack_paketo_source_removal(self): run_scan_click(['--package', test_file, '--json-pp', result_file]) check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + def test_parse_heroku_buildpack_java_toml(self): + test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml') + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + description="Heroku buildpack for Java", + name="Java", + version="unknown", + extra_data={ + "ignore_files": [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] + } + ) + ] + compare_package_results(expected_packages, result_packages) + + def test_parse_heroku_buildpack_php_toml(self): + test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml') + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + description= "Heroku buildpack for PHP", + name="PHP", + version="unknown", + extra_data={ + "ignore_files": [ + ".github/", + ".gitignore", + ".rspec_parallel", + "support/build/", + "support/devcenter/", + "test/", + "Gemfile", + "Gemfile.lock", + "hatchet.json", + "hatchet.lock", + "requirements.txt" + ] + } + ) + ] + compare_package_results(expected_packages, result_packages) def test_parse_paketo_dotnet_execute_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') From d86ee1c271edfd170e97830914624213f1efe08a Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Sat, 18 Jan 2025 20:00:31 +0530 Subject: [PATCH 5/9] suggestions applied Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 76 ++--- .../expectedbuildpack.json | 260 +++++++++--------- .../expectedbuildpack.json | 4 +- .../dotnet-execute/expectedbuildpack.json | 76 ++++- .../git/expectedbuildpack.json | 14 +- .../expectedbuildpack.json | 116 ++++++-- .../opentelemetry/expectedbuildpack.json | 116 ++++++-- .../expectedbuildpack.json | 116 ++++++-- .../source-removal/expectedbuildpack.json | 14 +- tests/packagedcode/test_buildpack.py | 229 ++++++++++++--- 10 files changed, 734 insertions(+), 287 deletions(-) diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index ac6f4b0de9..94b2aa4e39 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -1,15 +1,7 @@ -# -# Copyright (c) nexB Inc. and others. All rights reserved. -# ScanCode is a trademark of nexB Inc. -# SPDX-License-Identifier: Apache-2.0 -# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. -# See https://github.com/nexB/scancode-toolkit for support or download. -# See https://aboutcode.org for more information about nexB OSS projects. -# - import toml from packagedcode import models from packageurl import PackageURL +import yaml class BuildpackHandler(models.DatafileHandler): """ @@ -30,29 +22,34 @@ def parse(cls, location, package_only=False): with open(location, "r", encoding="utf-8") as f: data = toml.load(f) - # Extract required fields api_version = data.get("api") buildpack = data.get("buildpack", {}) if not buildpack: return + buildpack_id = buildpack.get("id") name = buildpack.get("name") - if not name: - return + if buildpack_id: + namespace, name = buildpack_id.split("/", 1) + # Initialize common package data package_data = dict( datasource_id=cls.datasource_id, type=cls.default_package_type, name=name, - version="unknown", - description=None, - homepage_url=None, - keywords=[], - declared_license_expression=None, + version=buildpack.get("version", "unknown"), + description=buildpack.get("description"), + homepage_url=buildpack.get("homepage"), + keywords=buildpack.get("keywords", []), + extracted_license_statement=None, dependencies=[], + extra_data={} ) + if api_version: + package_data["extra_data"]["api_version"] = api_version + # Handle Paketo-specific fields if present if "api" in data: cls.handle_paketo_buildpack(data, buildpack, package_data) @@ -67,7 +64,7 @@ def parse(cls, location, package_only=False): def handle_paketo_buildpack(data, buildpack, package_data): buildpack_id = buildpack.get("id") if buildpack_id: - package_data["extra_data"] = {"id": buildpack_id} + package_data["extra_data"]["id"] = buildpack_id package_data.update({ "version": buildpack.get("version", "unknown"), @@ -77,11 +74,14 @@ def handle_paketo_buildpack(data, buildpack, package_data): }) licenses = buildpack.get("licenses", []) - license_expressions = [ - license_entry.get("type") for license_entry in licenses if license_entry.get("type") - ] - if license_expressions: - package_data["declared_license_expression"] = " AND ".join(license_expressions) + if licenses: + license_statements = [ + yaml.dump({"type": license_entry.get("type")}).strip() + for license_entry in licenses + if license_entry.get("type") + ] + package_data["extracted_license_statement"] = "\n".join(license_statements) + dependencies = [] metadata = data.get("metadata", {}) @@ -90,6 +90,12 @@ def handle_paketo_buildpack(data, buildpack, package_data): dep_purl = dep.get("purl") dep_name = dep.get("name") dep_version = dep.get("version") + dep_cpes = dep.get("cpes", []) + extra_data = {"cpes": dep_cpes} if dep_cpes else {} + + if not dep_purl and dep_name and dep_version: + dep_purl = PackageURL(type="generic", name=dep_name, version=dep_version).to_string() + if dep_purl: dependencies.append( models.DependentPackage( @@ -97,15 +103,7 @@ def handle_paketo_buildpack(data, buildpack, package_data): scope="runtime", is_runtime=True, is_optional=False, - ) - ) - elif dep_name and dep_version: - dependencies.append( - models.DependentPackage( - purl=PackageURL(type="generic", name=dep_name, version=dep_version).to_string(), - scope="runtime", - is_runtime=True, - is_optional=False, + extra_data=extra_data, ) ) @@ -126,18 +124,20 @@ def handle_paketo_buildpack(data, buildpack, package_data): package_data["dependencies"] = dependencies + targets = data.get("targets", []) + if targets: + package_data["extra_data"]["targets"] = targets + @staticmethod def handle_heroku_buildpack(data, buildpack, package_data): publish_section = data.get("publish", {}) if "Ignore" in publish_section: ignore_files = publish_section["Ignore"].get("files", []) - if ignore_files: # Only add if files are found - package_data["extra_data"] = {"ignore_files": ignore_files} + if ignore_files: + package_data["extra_data"]["ignore_files"] = ignore_files else: - package_data["extra_data"] = {"ignore_files": []} + package_data["extra_data"]["ignore_files"] = [] else: - package_data["extra_data"] = {"ignore_files": []} + package_data["extra_data"]["ignore_files"] = [] - # Add description for Heroku buildpack package_data["description"] = f"Heroku buildpack for {buildpack.get('name')}" - \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json index 5e27d3d224..02c0c4b52d 100644 --- a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json @@ -1,131 +1,131 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "Java", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "Heroku buildpack for Java", - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "ignore_files": [ - "etc/", - "spec/", - "test/", - ".gitignore", - ".github/", - "hatchet.json", - "Gemfile", - "Gemfile.lock" - ] - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/Java@unknown?uuid=d332d23b-1b4e-415a-96a8-141416e7e7f2", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/Java@unknown" - } - ], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "buildpack", - "namespace": null, - "name": "Java", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "Heroku buildpack for Java", - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "ignore_files": [ - "etc/", - "spec/", - "test/", - ".gitignore", - ".github/", - "hatchet.json", - "Gemfile", - "Gemfile.lock" - ] - }, - "dependencies": [], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Java@unknown" - } - ], - "for_packages": [ - "pkg:buildpack/Java@unknown?uuid=d332d23b-1b4e-415a-96a8-141416e7e7f2" - ], - "scan_errors": [] - } - ] - } \ No newline at end of file + "packages": [ + { + "type": "buildpack", + "namespace": null, + "name": "Java", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for Java", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:buildpack/Java@unknown?uuid=ca7d941a-dd59-4f95-a10c-a90b09f593fb", + "datafile_paths": [ + "buildpack.toml" + ], + "datasource_ids": [ + "buildpack_toml" + ], + "purl": "pkg:buildpack/Java@unknown" + } + ], + "dependencies": [], + "files": [ + { + "path": "buildpack.toml", + "type": "file", + "package_data": [ + { + "type": "buildpack", + "namespace": null, + "name": "Java", + "version": "unknown", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for Java", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:buildpack/Java@unknown" + } + ], + "for_packages": [ + "pkg:buildpack/Java@unknown?uuid=ca7d941a-dd59-4f95-a10c-a90b09f593fb" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json index bd798d5fef..d6b4379f55 100644 --- a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json @@ -53,7 +53,7 @@ "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/PHP@unknown?uuid=62dfc37b-8be2-4509-87b3-5b5b25260da5", + "package_uid": "pkg:buildpack/PHP@unknown?uuid=e6f7b526-ad84-4897-b161-48a962b08a6f", "datafile_paths": [ "buildpack.toml" ], @@ -129,7 +129,7 @@ } ], "for_packages": [ - "pkg:buildpack/PHP@unknown?uuid=62dfc37b-8be2-4509-87b3-5b5b25260da5" + "pkg:buildpack/PHP@unknown?uuid=e6f7b526-ad84-4897-b161-48a962b08a6f" ], "scan_errors": [] } diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json index a52a173f8d..975d422300 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json @@ -3,7 +3,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for .NET Execute", + "name": "dotnet-execute", "version": "unknown", "qualifiers": {}, "subpath": null, @@ -26,31 +26,55 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "is_private": false, "is_virtual": false, "extra_data": { + "api_version": "0.8", "id": "paketo-buildpacks/dotnet-execute" }, "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown?uuid=269fba9a-5182-4434-a4e5-e00840e4c545", + "package_uid": "pkg:buildpack/dotnet-execute@unknown?uuid=ec4b26b3-1bad-482a-9d2a-b44cf87d1b8a", "datafile_paths": [ "buildpack.toml" ], "datasource_ids": [ "buildpack_toml" ], - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown" + "purl": "pkg:buildpack/dotnet-execute@unknown" } ], "dependencies": [], @@ -62,7 +86,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for .NET Execute", + "name": "dotnet-execute", "version": "unknown", "qualifiers": {}, "subpath": null, @@ -85,19 +109,43 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "file_references": [], "is_private": false, "is_virtual": false, "extra_data": { + "api_version": "0.8", "id": "paketo-buildpacks/dotnet-execute" }, "dependencies": [], @@ -105,11 +153,11 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown" + "purl": "pkg:buildpack/dotnet-execute@unknown" } ], "for_packages": [ - "pkg:buildpack/Paketo%20Buildpack%20for%20.NET%20Execute@unknown?uuid=269fba9a-5182-4434-a4e5-e00840e4c545" + "pkg:buildpack/dotnet-execute@unknown?uuid=ec4b26b3-1bad-482a-9d2a-b44cf87d1b8a" ], "scan_errors": [] } diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json index 99aae72844..5cf0ca36de 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json @@ -3,7 +3,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Git", + "name": "git", "version": "unknown", "qualifiers": {}, "subpath": null, @@ -36,19 +36,20 @@ "is_private": false, "is_virtual": false, "extra_data": { + "api_version": "0.7", "id": "paketo-buildpacks/git" }, "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown?uuid=d949b01b-4db7-4fbd-a85b-c23ff707444d", + "package_uid": "pkg:buildpack/git@unknown?uuid=38efd32a-cce0-4e11-a483-740c9706dcb2", "datafile_paths": [ "buildpack.toml" ], "datasource_ids": [ "buildpack_toml" ], - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown" + "purl": "pkg:buildpack/git@unknown" } ], "dependencies": [], @@ -60,7 +61,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Git", + "name": "git", "version": "unknown", "qualifiers": {}, "subpath": null, @@ -94,6 +95,7 @@ "is_private": false, "is_virtual": false, "extra_data": { + "api_version": "0.7", "id": "paketo-buildpacks/git" }, "dependencies": [], @@ -101,11 +103,11 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown" + "purl": "pkg:buildpack/git@unknown" } ], "for_packages": [ - "pkg:buildpack/Paketo%20Buildpack%20for%20Git@unknown?uuid=d949b01b-4db7-4fbd-a85b-c23ff707444d" + "pkg:buildpack/git@unknown?uuid=38efd32a-cce0-4e11-a483-740c9706dcb2" ], "scan_errors": [] } diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json index 43f35d93db..a511ea1e93 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json @@ -3,7 +3,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Java Memory Assistant", + "name": "java-memory-assistant", "version": "{{.version}}", "qualifiers": {}, "subpath": null, @@ -26,31 +26,65 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "is_private": false, "is_virtual": false, "extra_data": { - "id": "paketo-buildpacks/java-memory-assistant" + "api_version": "0.7", + "id": "paketo-buildpacks/java-memory-assistant", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] }, "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D?uuid=d197d3a7-e7df-49a2-8b79-a74156b545bc", + "package_uid": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D?uuid=13f44718-bb20-4c68-9935-d0a00b09968f", "datafile_paths": [ "buildpack.toml" ], "datasource_ids": [ "buildpack_toml" ], - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D" + "purl": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D" } ], "dependencies": [ @@ -63,9 +97,13 @@ "is_pinned": false, "is_direct": true, "resolved_package": {}, - "extra_data": {}, - "dependency_uid": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64&uuid=69e1a8c3-e31c-4e85-8255-463ae5fe8797", - "for_package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D?uuid=d197d3a7-e7df-49a2-8b79-a74156b545bc", + "extra_data": { + "cpes": [ + "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" + ] + }, + "dependency_uid": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64&uuid=4107e063-50ba-4fe6-b5cf-6c9b71f0d9d9", + "for_package_uid": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D?uuid=13f44718-bb20-4c68-9935-d0a00b09968f", "datafile_path": "buildpack.toml", "datasource_id": "buildpack_toml" } @@ -78,7 +116,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Java Memory Assistant", + "name": "java-memory-assistant", "version": "{{.version}}", "qualifiers": {}, "subpath": null, @@ -101,20 +139,54 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "file_references": [], "is_private": false, "is_virtual": false, "extra_data": { - "id": "paketo-buildpacks/java-memory-assistant" + "api_version": "0.7", + "id": "paketo-buildpacks/java-memory-assistant", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] }, "dependencies": [ { @@ -126,18 +198,22 @@ "is_pinned": false, "is_direct": true, "resolved_package": {}, - "extra_data": {} + "extra_data": { + "cpes": [ + "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" + ] + } } ], "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D" + "purl": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D" } ], "for_packages": [ - "pkg:buildpack/Paketo%20Buildpack%20for%20Java%20Memory%20Assistant@%7B%7B.version%7D%7D?uuid=d197d3a7-e7df-49a2-8b79-a74156b545bc" + "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D?uuid=13f44718-bb20-4c68-9935-d0a00b09968f" ], "scan_errors": [] } diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json index 793a001e47..90264ebd45 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json @@ -3,7 +3,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for OpenTelemetry", + "name": "opentelemetry", "version": "{{.version}}", "qualifiers": {}, "subpath": null, @@ -29,31 +29,65 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "is_private": false, "is_virtual": false, "extra_data": { - "id": "paketo-buildpacks/opentelemetry" + "api_version": "0.7", + "id": "paketo-buildpacks/opentelemetry", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] }, "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D?uuid=01957db3-05cb-464d-94ab-5818aa169b41", + "package_uid": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D?uuid=b7f174ed-d30a-49ed-b9b1-36b53dcee6a8", "datafile_paths": [ "buildpack.toml" ], "datasource_ids": [ "buildpack_toml" ], - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D" + "purl": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D" } ], "dependencies": [ @@ -66,9 +100,13 @@ "is_pinned": false, "is_direct": true, "resolved_package": {}, - "extra_data": {}, - "dependency_uid": "pkg:generic/opentelemetry-java@2.10.0?uuid=6d44ed4b-f22b-43d0-a7ab-e98529e1a112", - "for_package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D?uuid=01957db3-05cb-464d-94ab-5818aa169b41", + "extra_data": { + "cpes": [ + "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" + ] + }, + "dependency_uid": "pkg:generic/opentelemetry-java@2.10.0?uuid=0b563e61-c5a0-4295-89bb-22a3c7593e0b", + "for_package_uid": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D?uuid=b7f174ed-d30a-49ed-b9b1-36b53dcee6a8", "datafile_path": "buildpack.toml", "datasource_id": "buildpack_toml" } @@ -81,7 +119,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for OpenTelemetry", + "name": "opentelemetry", "version": "{{.version}}", "qualifiers": {}, "subpath": null, @@ -107,20 +145,54 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "file_references": [], "is_private": false, "is_virtual": false, "extra_data": { - "id": "paketo-buildpacks/opentelemetry" + "api_version": "0.7", + "id": "paketo-buildpacks/opentelemetry", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] }, "dependencies": [ { @@ -132,18 +204,22 @@ "is_pinned": false, "is_direct": true, "resolved_package": {}, - "extra_data": {} + "extra_data": { + "cpes": [ + "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" + ] + } } ], "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D" + "purl": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D" } ], "for_packages": [ - "pkg:buildpack/Paketo%20Buildpack%20for%20OpenTelemetry@%7B%7B.version%7D%7D?uuid=01957db3-05cb-464d-94ab-5818aa169b41" + "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D?uuid=b7f174ed-d30a-49ed-b9b1-36b53dcee6a8" ], "scan_errors": [] } diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json index 97808da3ca..3b8461955a 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json @@ -3,7 +3,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Pipeline Builder Canary", + "name": "pipeline-builder-canary", "version": "{{.version}}", "qualifiers": {}, "subpath": null, @@ -26,31 +26,65 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "is_private": false, "is_virtual": false, "extra_data": { - "id": "paketo-buildpacks/pipeline-builder-canary" + "api_version": "0.7", + "id": "paketo-buildpacks/pipeline-builder-canary", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] }, "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D?uuid=5645b40a-3914-435b-af7a-ee5cafef162b", + "package_uid": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D?uuid=7a83dfcf-fdad-49e3-8209-4c9fb61f751f", "datafile_paths": [ "buildpack.toml" ], "datasource_ids": [ "buildpack_toml" ], - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D" + "purl": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D" } ], "dependencies": [ @@ -63,9 +97,13 @@ "is_pinned": false, "is_direct": true, "resolved_package": {}, - "extra_data": {}, - "dependency_uid": "pkg:generic/apache-maven@3.9.9?uuid=75bc22b3-e9f7-4e63-b9a8-679269bbe48a", - "for_package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D?uuid=5645b40a-3914-435b-af7a-ee5cafef162b", + "extra_data": { + "cpes": [ + "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" + ] + }, + "dependency_uid": "pkg:generic/apache-maven@3.9.9?uuid=a65095cd-80f9-4020-89c5-4af80a1eaf07", + "for_package_uid": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D?uuid=7a83dfcf-fdad-49e3-8209-4c9fb61f751f", "datafile_path": "buildpack.toml", "datasource_id": "buildpack_toml" } @@ -78,7 +116,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Pipeline Builder Canary", + "name": "pipeline-builder-canary", "version": "{{.version}}", "qualifiers": {}, "subpath": null, @@ -101,20 +139,54 @@ "vcs_url": null, "copyright": null, "holder": null, - "declared_license_expression": "Apache-2.0", - "declared_license_expression_spdx": null, - "license_detections": [], + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": "buildpack.toml", + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], "other_license_expression": null, "other_license_expression_spdx": null, "other_license_detections": [], - "extracted_license_statement": null, + "extracted_license_statement": "type: Apache-2.0", "notice_text": null, "source_packages": [], "file_references": [], "is_private": false, "is_virtual": false, "extra_data": { - "id": "paketo-buildpacks/pipeline-builder-canary" + "api_version": "0.7", + "id": "paketo-buildpacks/pipeline-builder-canary", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] }, "dependencies": [ { @@ -126,18 +198,22 @@ "is_pinned": false, "is_direct": true, "resolved_package": {}, - "extra_data": {} + "extra_data": { + "cpes": [ + "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" + ] + } } ], "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D" + "purl": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D" } ], "for_packages": [ - "pkg:buildpack/Paketo%20Buildpack%20for%20Pipeline%20Builder%20Canary@%7B%7B.version%7D%7D?uuid=5645b40a-3914-435b-af7a-ee5cafef162b" + "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D?uuid=7a83dfcf-fdad-49e3-8209-4c9fb61f751f" ], "scan_errors": [] } diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json index bead54efff..4ccc1a05bb 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json @@ -3,7 +3,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Source Removal", + "name": "source-removal", "version": "unknown", "qualifiers": {}, "subpath": null, @@ -36,19 +36,20 @@ "is_private": false, "is_virtual": false, "extra_data": { + "api_version": "0.7", "id": "paketo-buildpacks/source-removal" }, "repository_homepage_url": null, "repository_download_url": null, "api_data_url": null, - "package_uid": "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown?uuid=24557330-563d-4a75-909f-b60c6e517a27", + "package_uid": "pkg:buildpack/source-removal@unknown?uuid=81503578-104e-4477-ab16-3a47b5948e37", "datafile_paths": [ "buildpack.toml" ], "datasource_ids": [ "buildpack_toml" ], - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown" + "purl": "pkg:buildpack/source-removal@unknown" } ], "dependencies": [], @@ -60,7 +61,7 @@ { "type": "buildpack", "namespace": null, - "name": "Paketo Buildpack for Source Removal", + "name": "source-removal", "version": "unknown", "qualifiers": {}, "subpath": null, @@ -94,6 +95,7 @@ "is_private": false, "is_virtual": false, "extra_data": { + "api_version": "0.7", "id": "paketo-buildpacks/source-removal" }, "dependencies": [], @@ -101,11 +103,11 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown" + "purl": "pkg:buildpack/source-removal@unknown" } ], "for_packages": [ - "pkg:buildpack/Paketo%20Buildpack%20for%20Source%20Removal@unknown?uuid=24557330-563d-4a75-909f-b60c6e517a27" + "pkg:buildpack/source-removal@unknown?uuid=81503578-104e-4477-ab16-3a47b5948e37" ], "scan_errors": [] } diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py index eb19ec6b29..3831c9e88a 100644 --- a/tests/packagedcode/test_buildpack.py +++ b/tests/packagedcode/test_buildpack.py @@ -139,13 +139,42 @@ def test_parse_paketo_dotnet_execute_buildpack_toml(self): models.PackageData( type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, - name="Paketo Buildpack for .NET Execute", + name="dotnet-execute", version="unknown", description="A buildpack for running the `dotnet execute` command for an app", homepage_url="https://github.com/paketo-buildpacks/dotnet-execute", keywords=["dotnet"], - declared_license_expression="Apache-2.0", - extra_data={"id": "paketo-buildpacks/dotnet-execute"} + declared_license_expression="apache-2.0", + declared_license_expression_spdx= "Apache-2.0", + extracted_license_statement= "type: Apache-2.0", + license_detections= [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": None, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + extra_data={ + "api_version": "0.8", + "id": "paketo-buildpacks/dotnet-execute" + } ) ] compare_package_results(expected_packages, result_packages) @@ -157,39 +186,86 @@ def test_parse_paketo_java_memory_assistant_buildpack_toml(self): models.PackageData( type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, - name="Paketo Buildpack for Java Memory Assistant", + name="java-memory-assistant", version="{{.version}}", description="A Cloud Native Buildpack that installs the Java Memory Assistant agent", homepage_url="https://github.com/paketo-buildpacks/java-memory-assistant", keywords=["agent"], - declared_license_expression="Apache-2.0", dependencies=[ models.DependentPackage( purl="pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", scope="runtime", is_runtime=True, - is_optional=False + is_optional=False, + extra_data= { + "cpes": [ + "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" + ] + } ) ], - extra_data={"id": "paketo-buildpacks/java-memory-assistant"} + declared_license_expression="apache-2.0", + declared_license_expression_spdx= "Apache-2.0", + extracted_license_statement= "type: Apache-2.0", + license_detections= [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": None, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + extra_data={ + "api_version": "0.7", + "id": "paketo-buildpacks/java-memory-assistant", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] + } ) ] compare_package_results(expected_packages, result_packages) def test_parse_paketo_git_buildpack_toml(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="Paketo Buildpack for Git", - version="unknown", - homepage_url="https://github.com/paketo-buildpacks/git", - extra_data={"id": "paketo-buildpacks/git"} - ) - ] - compare_package_results(expected_packages, result_packages) + test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') + result_packages = list(buildpack.BuildpackHandler.parse(test_file)) + expected_packages = [ + models.PackageData( + type=buildpack.BuildpackHandler.default_package_type, + datasource_id=buildpack.BuildpackHandler.datasource_id, + name="git", + version="unknown", + homepage_url="https://github.com/paketo-buildpacks/git", + extra_data={ + "api_version": "0.7", + "id": "paketo-buildpacks/git" + } + ) + ] + compare_package_results(expected_packages, result_packages) def test_parse_paketo_opentelemetry_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') @@ -198,21 +274,65 @@ def test_parse_paketo_opentelemetry_buildpack_toml(self): models.PackageData( type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, - name="Paketo Buildpack for OpenTelemetry", + name="opentelemetry", version="{{.version}}", description="A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", homepage_url="https://github.com/paketo-buildpacks/opentelemetry", keywords=["java", "apm", "trace", "opentelemetry"], - declared_license_expression="Apache-2.0", dependencies=[ models.DependentPackage( purl="pkg:generic/opentelemetry-java@2.10.0", scope="runtime", is_runtime=True, - is_optional=False - ) + is_optional=False, + extra_data= { + "cpes": [ + "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" + ] + } + ) ], - extra_data={"id": "paketo-buildpacks/opentelemetry"} + declared_license_expression="apache-2.0", + declared_license_expression_spdx= "Apache-2.0", + extracted_license_statement= "type: Apache-2.0", + license_detections= [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": None, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + extra_data={ + "api_version": "0.7", + "id": "paketo-buildpacks/opentelemetry", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] + } ) ] compare_package_results(expected_packages, result_packages) @@ -224,21 +344,65 @@ def test_parse_paketo_pipeline_builder_canary_buildpack_toml(self): models.PackageData( type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, - name="Paketo Buildpack for Pipeline Builder Canary", + name="pipeline-builder-canary", version="{{.version}}", description="A Cloud Native Buildpack that provides/does nothing. For testing only.", homepage_url="https://github.com/paketo-buildpacks/pipeline-builder-canary", keywords=["nothing"], - declared_license_expression="Apache-2.0", dependencies=[ models.DependentPackage( purl="pkg:generic/apache-maven@3.9.9", scope="runtime", is_runtime=True, - is_optional=False + is_optional=False, + extra_data= { + "cpes": [ + "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" + ] + } ) ], - extra_data={"id": "paketo-buildpacks/pipeline-builder-canary"} + declared_license_expression="apache-2.0", + declared_license_expression_spdx= "Apache-2.0", + extracted_license_statement= "type: Apache-2.0", + license_detections= [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": None, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + extra_data={ + "api_version": "0.7", + "id": "paketo-buildpacks/pipeline-builder-canary", + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] + } ) ] compare_package_results(expected_packages, result_packages) @@ -250,9 +414,12 @@ def test_parse_paketo_source_removal_buildpack_toml(self): models.PackageData( type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, - name="Paketo Buildpack for Source Removal", + name="source-removal", version="unknown", - extra_data={"id": "paketo-buildpacks/source-removal"} + extra_data={ + "api_version": "0.7", + "id": "paketo-buildpacks/source-removal" + } ) ] compare_package_results(expected_packages, result_packages) From 5399fddad7e9a4d3d8ddb77aafe472ca6bdf9a9e Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Sat, 18 Jan 2025 21:11:29 +0530 Subject: [PATCH 6/9] used NonAssemblableDatafileHandler Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 8 +- .../expectedbuildpack.json | 72 +---------- .../expectedbuildpack.json | 75 +---------- .../dotnet-execute/expectedbuildpack.json | 89 +------------ .../git/expectedbuildpack.json | 64 +-------- .../expectedbuildpack.json | 119 +---------------- .../opentelemetry/expectedbuildpack.json | 122 +----------------- .../expectedbuildpack.json | 119 +---------------- .../source-removal/expectedbuildpack.json | 64 +-------- tests/packagedcode/test_buildpack.py | 10 +- 10 files changed, 49 insertions(+), 693 deletions(-) diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index 94b2aa4e39..ef6c75adbd 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -3,14 +3,14 @@ from packageurl import PackageURL import yaml -class BuildpackHandler(models.DatafileHandler): +class BuildpackHandler(models.NonAssemblableDatafileHandler): """ Handle buildpack.toml manifests. See https://buildpacks.io/ for details on buildpack format. """ datasource_id = "buildpack_toml" path_patterns = ("*buildpack.toml",) - default_package_type = "buildpack" + default_package_type = "generic" description = "Cloud Native Buildpack manifest" documentation_url = "https://buildpacks.io/" @@ -38,7 +38,7 @@ def parse(cls, location, package_only=False): datasource_id=cls.datasource_id, type=cls.default_package_type, name=name, - version=buildpack.get("version", "unknown"), + version=buildpack.get("version"), description=buildpack.get("description"), homepage_url=buildpack.get("homepage"), keywords=buildpack.get("keywords", []), @@ -67,7 +67,7 @@ def handle_paketo_buildpack(data, buildpack, package_data): package_data["extra_data"]["id"] = buildpack_id package_data.update({ - "version": buildpack.get("version", "unknown"), + "version": buildpack.get("version"), "description": buildpack.get("description"), "homepage_url": buildpack.get("homepage"), "keywords": buildpack.get("keywords", []), diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json index 02c0c4b52d..e1ff9a0802 100644 --- a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json @@ -1,65 +1,5 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "Java", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "Heroku buildpack for Java", - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "ignore_files": [ - "etc/", - "spec/", - "test/", - ".gitignore", - ".github/", - "hatchet.json", - "Gemfile", - "Gemfile.lock" - ] - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/Java@unknown?uuid=ca7d941a-dd59-4f95-a10c-a90b09f593fb", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/Java@unknown" - } - ], + "packages": [], "dependencies": [], "files": [ { @@ -67,10 +7,10 @@ "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "Java", - "version": "unknown", + "version": null, "qualifiers": {}, "subpath": null, "primary_language": null, @@ -119,12 +59,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/Java@unknown" + "purl": "pkg:generic/Java" } ], - "for_packages": [ - "pkg:buildpack/Java@unknown?uuid=ca7d941a-dd59-4f95-a10c-a90b09f593fb" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json index d6b4379f55..ba954b8034 100644 --- a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json @@ -1,68 +1,5 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "PHP", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "Heroku buildpack for PHP", - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "ignore_files": [ - ".github/", - ".gitignore", - ".rspec_parallel", - "support/build/", - "support/devcenter/", - "test/", - "Gemfile", - "Gemfile.lock", - "hatchet.json", - "hatchet.lock", - "requirements.txt" - ] - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/PHP@unknown?uuid=e6f7b526-ad84-4897-b161-48a962b08a6f", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/PHP@unknown" - } - ], + "packages": [], "dependencies": [], "files": [ { @@ -70,10 +7,10 @@ "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "PHP", - "version": "unknown", + "version": null, "qualifiers": {}, "subpath": null, "primary_language": null, @@ -125,12 +62,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/PHP@unknown" + "purl": "pkg:generic/PHP" } ], - "for_packages": [ - "pkg:buildpack/PHP@unknown?uuid=e6f7b526-ad84-4897-b161-48a962b08a6f" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json index 975d422300..464aeb1342 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json @@ -1,82 +1,5 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "dotnet-execute", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A buildpack for running the `dotnet execute` command for an app", - "release_date": null, - "parties": [], - "keywords": [ - "dotnet" - ], - "homepage_url": "https://github.com/paketo-buildpacks/dotnet-execute", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.8", - "id": "paketo-buildpacks/dotnet-execute" - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/dotnet-execute@unknown?uuid=ec4b26b3-1bad-482a-9d2a-b44cf87d1b8a", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/dotnet-execute@unknown" - } - ], + "packages": [], "dependencies": [], "files": [ { @@ -84,10 +7,10 @@ "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "dotnet-execute", - "version": "unknown", + "version": null, "qualifiers": {}, "subpath": null, "primary_language": null, @@ -153,12 +76,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/dotnet-execute@unknown" + "purl": "pkg:generic/dotnet-execute" } ], - "for_packages": [ - "pkg:buildpack/dotnet-execute@unknown?uuid=ec4b26b3-1bad-482a-9d2a-b44cf87d1b8a" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json index 5cf0ca36de..2bdcd7e453 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json @@ -1,57 +1,5 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "git", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": null, - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": "https://github.com/paketo-buildpacks/git", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/git" - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/git@unknown?uuid=38efd32a-cce0-4e11-a483-740c9706dcb2", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/git@unknown" - } - ], + "packages": [], "dependencies": [], "files": [ { @@ -59,10 +7,10 @@ "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "git", - "version": "unknown", + "version": null, "qualifiers": {}, "subpath": null, "primary_language": null, @@ -103,12 +51,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/git@unknown" + "purl": "pkg:generic/git" } ], - "for_packages": [ - "pkg:buildpack/git@unknown?uuid=38efd32a-cce0-4e11-a483-740c9706dcb2" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json index a511ea1e93..262693dea9 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json @@ -1,120 +1,13 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "java-memory-assistant", - "version": "{{.version}}", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A Cloud Native Buildpack that installs the Java Memory Assistant agent", - "release_date": null, - "parties": [], - "keywords": [ - "agent" - ], - "homepage_url": "https://github.com/paketo-buildpacks/java-memory-assistant", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/java-memory-assistant", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D?uuid=13f44718-bb20-4c68-9935-d0a00b09968f", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D" - } - ], - "dependencies": [ - { - "purl": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", - "extracted_requirement": null, - "scope": "runtime", - "is_runtime": true, - "is_optional": false, - "is_pinned": false, - "is_direct": true, - "resolved_package": {}, - "extra_data": { - "cpes": [ - "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" - ] - }, - "dependency_uid": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64&uuid=4107e063-50ba-4fe6-b5cf-6c9b71f0d9d9", - "for_package_uid": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D?uuid=13f44718-bb20-4c68-9935-d0a00b09968f", - "datafile_path": "buildpack.toml", - "datasource_id": "buildpack_toml" - } - ], + "packages": [], + "dependencies": [], "files": [ { "path": "buildpack.toml", "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "java-memory-assistant", "version": "{{.version}}", @@ -209,12 +102,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D" + "purl": "pkg:generic/java-memory-assistant@%7B%7B.version%7D%7D" } ], - "for_packages": [ - "pkg:buildpack/java-memory-assistant@%7B%7B.version%7D%7D?uuid=13f44718-bb20-4c68-9935-d0a00b09968f" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json index 90264ebd45..dede6af69a 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json @@ -1,123 +1,13 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "opentelemetry", - "version": "{{.version}}", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", - "release_date": null, - "parties": [], - "keywords": [ - "java", - "apm", - "trace", - "opentelemetry" - ], - "homepage_url": "https://github.com/paketo-buildpacks/opentelemetry", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/opentelemetry", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D?uuid=b7f174ed-d30a-49ed-b9b1-36b53dcee6a8", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D" - } - ], - "dependencies": [ - { - "purl": "pkg:generic/opentelemetry-java@2.10.0", - "extracted_requirement": null, - "scope": "runtime", - "is_runtime": true, - "is_optional": false, - "is_pinned": false, - "is_direct": true, - "resolved_package": {}, - "extra_data": { - "cpes": [ - "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" - ] - }, - "dependency_uid": "pkg:generic/opentelemetry-java@2.10.0?uuid=0b563e61-c5a0-4295-89bb-22a3c7593e0b", - "for_package_uid": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D?uuid=b7f174ed-d30a-49ed-b9b1-36b53dcee6a8", - "datafile_path": "buildpack.toml", - "datasource_id": "buildpack_toml" - } - ], + "packages": [], + "dependencies": [], "files": [ { "path": "buildpack.toml", "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "opentelemetry", "version": "{{.version}}", @@ -215,12 +105,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D" + "purl": "pkg:generic/opentelemetry@%7B%7B.version%7D%7D" } ], - "for_packages": [ - "pkg:buildpack/opentelemetry@%7B%7B.version%7D%7D?uuid=b7f174ed-d30a-49ed-b9b1-36b53dcee6a8" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json index 3b8461955a..4966506808 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json @@ -1,120 +1,13 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "pipeline-builder-canary", - "version": "{{.version}}", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A Cloud Native Buildpack that provides/does nothing. For testing only.", - "release_date": null, - "parties": [], - "keywords": [ - "nothing" - ], - "homepage_url": "https://github.com/paketo-buildpacks/pipeline-builder-canary", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/pipeline-builder-canary", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D?uuid=7a83dfcf-fdad-49e3-8209-4c9fb61f751f", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D" - } - ], - "dependencies": [ - { - "purl": "pkg:generic/apache-maven@3.9.9", - "extracted_requirement": null, - "scope": "runtime", - "is_runtime": true, - "is_optional": false, - "is_pinned": false, - "is_direct": true, - "resolved_package": {}, - "extra_data": { - "cpes": [ - "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" - ] - }, - "dependency_uid": "pkg:generic/apache-maven@3.9.9?uuid=a65095cd-80f9-4020-89c5-4af80a1eaf07", - "for_package_uid": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D?uuid=7a83dfcf-fdad-49e3-8209-4c9fb61f751f", - "datafile_path": "buildpack.toml", - "datasource_id": "buildpack_toml" - } - ], + "packages": [], + "dependencies": [], "files": [ { "path": "buildpack.toml", "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "pipeline-builder-canary", "version": "{{.version}}", @@ -209,12 +102,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D" + "purl": "pkg:generic/pipeline-builder-canary@%7B%7B.version%7D%7D" } ], - "for_packages": [ - "pkg:buildpack/pipeline-builder-canary@%7B%7B.version%7D%7D?uuid=7a83dfcf-fdad-49e3-8209-4c9fb61f751f" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json index 4ccc1a05bb..e310b94323 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json @@ -1,57 +1,5 @@ { - "packages": [ - { - "type": "buildpack", - "namespace": null, - "name": "source-removal", - "version": "unknown", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": null, - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/source-removal" - }, - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "package_uid": "pkg:buildpack/source-removal@unknown?uuid=81503578-104e-4477-ab16-3a47b5948e37", - "datafile_paths": [ - "buildpack.toml" - ], - "datasource_ids": [ - "buildpack_toml" - ], - "purl": "pkg:buildpack/source-removal@unknown" - } - ], + "packages": [], "dependencies": [], "files": [ { @@ -59,10 +7,10 @@ "type": "file", "package_data": [ { - "type": "buildpack", + "type": "generic", "namespace": null, "name": "source-removal", - "version": "unknown", + "version": null, "qualifiers": {}, "subpath": null, "primary_language": null, @@ -103,12 +51,10 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:buildpack/source-removal@unknown" + "purl": "pkg:generic/source-removal" } ], - "for_packages": [ - "pkg:buildpack/source-removal@unknown?uuid=81503578-104e-4477-ab16-3a47b5948e37" - ], + "for_packages": [], "scan_errors": [] } ] diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py index 3831c9e88a..6d1b2eb3b3 100644 --- a/tests/packagedcode/test_buildpack.py +++ b/tests/packagedcode/test_buildpack.py @@ -86,7 +86,7 @@ def test_parse_heroku_buildpack_java_toml(self): datasource_id=buildpack.BuildpackHandler.datasource_id, description="Heroku buildpack for Java", name="Java", - version="unknown", + version=None, extra_data={ "ignore_files": [ "etc/", @@ -112,7 +112,7 @@ def test_parse_heroku_buildpack_php_toml(self): datasource_id=buildpack.BuildpackHandler.datasource_id, description= "Heroku buildpack for PHP", name="PHP", - version="unknown", + version=None, extra_data={ "ignore_files": [ ".github/", @@ -140,7 +140,7 @@ def test_parse_paketo_dotnet_execute_buildpack_toml(self): type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, name="dotnet-execute", - version="unknown", + version=None, description="A buildpack for running the `dotnet execute` command for an app", homepage_url="https://github.com/paketo-buildpacks/dotnet-execute", keywords=["dotnet"], @@ -257,7 +257,7 @@ def test_parse_paketo_git_buildpack_toml(self): type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, name="git", - version="unknown", + version=None, homepage_url="https://github.com/paketo-buildpacks/git", extra_data={ "api_version": "0.7", @@ -415,7 +415,7 @@ def test_parse_paketo_source_removal_buildpack_toml(self): type=buildpack.BuildpackHandler.default_package_type, datasource_id=buildpack.BuildpackHandler.datasource_id, name="source-removal", - version="unknown", + version=None, extra_data={ "api_version": "0.7", "id": "paketo-buildpacks/source-removal" From b99f7897dfcd769932f07d1ab7fb8f9e2229510d Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Mon, 17 Mar 2025 22:10:03 +0530 Subject: [PATCH 7/9] add header Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index ef6c75adbd..97f048cf6a 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -1,3 +1,12 @@ +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# ScanCode is a trademark of nexB Inc. +# SPDX-License-Identifier: Apache-2.0 +# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. +# See https://github.com/nexB/scancode-toolkit for support or download. +# See https://aboutcode.org for more information about nexB OSS projects. +# + import toml from packagedcode import models from packageurl import PackageURL From 6a38f0ed5ea5549ac3d6a0c9efe187e092dbdd23 Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Sun, 11 May 2025 19:45:00 +0530 Subject: [PATCH 8/9] suggestions applied Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 28 +- .../expectedbuildpack.json | 69 --- .../heroku-buildpack-java/expectedoutput.json | 57 +++ .../heroku-buildpack-php/expectedoutput.json | 60 +++ ...ctedbuildpack.json => heroku-results.json} | 0 .../dotnet-execute/expectedbuildpack.json | 86 ---- .../dotnet-execute/expectedoutput.json | 81 ++++ .../git/expectedbuildpack.json | 61 --- .../paketo-buildpacks/git/expectedoutput.json | 55 +++ .../expectedbuildpack.json | 112 ----- .../java-memory-assistant/expectedoutput.json | 114 +++++ .../opentelemetry/expectedbuildpack.json | 115 ----- .../opentelemetry/expectedoutput.json | 117 +++++ ...ctedbuildpack.json => paketo-results.json} | 18 +- .../expectedoutput.json | 112 +++++ .../source-removal/expectedbuildpack.json | 61 --- .../source-removal/expectedoutput.json | 55 +++ tests/packagedcode/test_buildpack.py | 427 ++---------------- 18 files changed, 725 insertions(+), 903 deletions(-) delete mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedoutput.json create mode 100644 tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedoutput.json rename tests/packagedcode/data/buildpack/heroku-buildpacks/{heroku-buildpack-php/expectedbuildpack.json => heroku-results.json} (100%) delete mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedoutput.json delete mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedoutput.json delete mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json delete mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json rename tests/packagedcode/data/buildpack/paketo-buildpacks/{pipeline-builder-canary/expectedbuildpack.json => paketo-results.json} (87%) create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json delete mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json create mode 100644 tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedoutput.json diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index 97f048cf6a..f8a4657657 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -38,27 +38,39 @@ def parse(cls, location, package_only=False): buildpack_id = buildpack.get("id") name = buildpack.get("name") + namespace = None - if buildpack_id: + if buildpack_id and "/" in buildpack_id: namespace, name = buildpack_id.split("/", 1) + version = buildpack.get("version") + if version and "{{" in version and "}}" in version: + version = None # Initialize common package data package_data = dict( datasource_id=cls.datasource_id, type=cls.default_package_type, name=name, - version=buildpack.get("version"), + namespace=namespace, + version=version, description=buildpack.get("description"), homepage_url=buildpack.get("homepage"), keywords=buildpack.get("keywords", []), extracted_license_statement=None, - dependencies=[], - extra_data={} + extra_data={}, ) if api_version: package_data["extra_data"]["api_version"] = api_version + if buildpack_id: + package_data["extra_data"]["id"] = buildpack_id + + metadata = data.get("metadata", {}) + include_files = metadata.get("include-files", []) + if include_files: + package_data["extra_data"]["include_files"] = include_files + # Handle Paketo-specific fields if present if "api" in data: cls.handle_paketo_buildpack(data, buildpack, package_data) @@ -71,12 +83,7 @@ def parse(cls, location, package_only=False): @staticmethod def handle_paketo_buildpack(data, buildpack, package_data): - buildpack_id = buildpack.get("id") - if buildpack_id: - package_data["extra_data"]["id"] = buildpack_id - package_data.update({ - "version": buildpack.get("version"), "description": buildpack.get("description"), "homepage_url": buildpack.get("homepage"), "keywords": buildpack.get("keywords", []), @@ -91,7 +98,6 @@ def handle_paketo_buildpack(data, buildpack, package_data): ] package_data["extracted_license_statement"] = "\n".join(license_statements) - dependencies = [] metadata = data.get("metadata", {}) metadata_dependencies = metadata.get("dependencies", []) @@ -149,4 +155,4 @@ def handle_heroku_buildpack(data, buildpack, package_data): else: package_data["extra_data"]["ignore_files"] = [] - package_data["description"] = f"Heroku buildpack for {buildpack.get('name')}" + package_data["description"] = f"Heroku buildpack for {buildpack.get('name')}" \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json deleted file mode 100644 index e1ff9a0802..0000000000 --- a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "packages": [], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "generic", - "namespace": null, - "name": "Java", - "version": null, - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "Heroku buildpack for Java", - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "ignore_files": [ - "etc/", - "spec/", - "test/", - ".gitignore", - ".github/", - "hatchet.json", - "Gemfile", - "Gemfile.lock" - ] - }, - "dependencies": [], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:generic/Java" - } - ], - "for_packages": [], - "scan_errors": [] - } - ] -} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedoutput.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedoutput.json new file mode 100644 index 0000000000..eb2fec2e7c --- /dev/null +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-java/expectedoutput.json @@ -0,0 +1,57 @@ +[ + { + "type": "generic", + "namespace": null, + "name": "Java", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for Java", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + "etc/", + "spec/", + "test/", + ".gitignore", + ".github/", + "hatchet.json", + "Gemfile", + "Gemfile.lock" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/Java" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedoutput.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedoutput.json new file mode 100644 index 0000000000..750f49decc --- /dev/null +++ b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedoutput.json @@ -0,0 +1,60 @@ +[ + { + "type": "generic", + "namespace": null, + "name": "PHP", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "Heroku buildpack for PHP", + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "ignore_files": [ + ".github/", + ".gitignore", + ".rspec_parallel", + "support/build/", + "support/devcenter/", + "test/", + "Gemfile", + "Gemfile.lock", + "hatchet.json", + "hatchet.lock", + "requirements.txt" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/PHP" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json b/tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-results.json similarity index 100% rename from tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json rename to tests/packagedcode/data/buildpack/heroku-buildpacks/heroku-results.json diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json deleted file mode 100644 index 464aeb1342..0000000000 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "packages": [], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "generic", - "namespace": null, - "name": "dotnet-execute", - "version": null, - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A buildpack for running the `dotnet execute` command for an app", - "release_date": null, - "parties": [], - "keywords": [ - "dotnet" - ], - "homepage_url": "https://github.com/paketo-buildpacks/dotnet-execute", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.8", - "id": "paketo-buildpacks/dotnet-execute" - }, - "dependencies": [], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:generic/dotnet-execute" - } - ], - "for_packages": [], - "scan_errors": [] - } - ] -} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedoutput.json new file mode 100644 index 0000000000..8f8e69df12 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/dotnet-execute/expectedoutput.json @@ -0,0 +1,81 @@ +[ + { + "type": "generic", + "namespace": "paketo-buildpacks", + "name": "dotnet-execute", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A buildpack for running the `dotnet execute` command for an app", + "release_date": null, + "parties": [], + "keywords": [ + "dotnet" + ], + "homepage_url": "https://github.com/paketo-buildpacks/dotnet-execute", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "type: Apache-2.0", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "api_version": "0.8", + "id": "paketo-buildpacks/dotnet-execute", + "include_files": [ + "bin/build", + "bin/detect", + "bin/run", + "bin/port-chooser", + "buildpack.toml" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/paketo-buildpacks/dotnet-execute" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json deleted file mode 100644 index 2bdcd7e453..0000000000 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedbuildpack.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "packages": [], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "generic", - "namespace": null, - "name": "git", - "version": null, - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": null, - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": "https://github.com/paketo-buildpacks/git", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/git" - }, - "dependencies": [], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:generic/git" - } - ], - "for_packages": [], - "scan_errors": [] - } - ] -} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedoutput.json new file mode 100644 index 0000000000..171b6e7371 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/git/expectedoutput.json @@ -0,0 +1,55 @@ +[ + { + "type": "generic", + "namespace": "paketo-buildpacks", + "name": "git", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": "https://github.com/paketo-buildpacks/git", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "api_version": "0.7", + "id": "paketo-buildpacks/git", + "include_files": [ + "bin/run", + "bin/build", + "bin/detect", + "buildpack.toml" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/paketo-buildpacks/git" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json deleted file mode 100644 index 262693dea9..0000000000 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "packages": [], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "generic", - "namespace": null, - "name": "java-memory-assistant", - "version": "{{.version}}", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A Cloud Native Buildpack that installs the Java Memory Assistant agent", - "release_date": null, - "parties": [], - "keywords": [ - "agent" - ], - "homepage_url": "https://github.com/paketo-buildpacks/java-memory-assistant", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/java-memory-assistant", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - }, - "dependencies": [ - { - "purl": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", - "extracted_requirement": null, - "scope": "runtime", - "is_runtime": true, - "is_optional": false, - "is_pinned": false, - "is_direct": true, - "resolved_package": {}, - "extra_data": { - "cpes": [ - "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" - ] - } - } - ], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:generic/java-memory-assistant@%7B%7B.version%7D%7D" - } - ], - "for_packages": [], - "scan_errors": [] - } - ] -} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json new file mode 100644 index 0000000000..5d77a63e60 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json @@ -0,0 +1,114 @@ +[ + { + "type": "generic", + "namespace": "paketo-buildpacks", + "name": "java-memory-assistant", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that installs the Java Memory Assistant agent", + "release_date": null, + "parties": [], + "keywords": [ + "agent" + ], + "homepage_url": "https://github.com/paketo-buildpacks/java-memory-assistant", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "type: Apache-2.0", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "api_version": "0.7", + "id": "paketo-buildpacks/java-memory-assistant", + "include_files": [ + "LICENSE", + "NOTICE", + "README.md", + "linux/amd64/bin/build", + "linux/amd64/bin/detect", + "linux/amd64/bin/main", + "linux/amd64/bin/helper", + "linux/arm64/bin/build", + "linux/arm64/bin/detect", + "linux/arm64/bin/main", + "linux/arm64/bin/helper", + "buildpack.toml" + ], + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] + }, + "dependencies": [ + { + "purl": "pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": { + "cpes": [ + "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" + ] + } + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/paketo-buildpacks/java-memory-assistant" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json deleted file mode 100644 index dede6af69a..0000000000 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "packages": [], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "generic", - "namespace": null, - "name": "opentelemetry", - "version": "{{.version}}", - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", - "release_date": null, - "parties": [], - "keywords": [ - "java", - "apm", - "trace", - "opentelemetry" - ], - "homepage_url": "https://github.com/paketo-buildpacks/opentelemetry", - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": "apache-2.0", - "declared_license_expression_spdx": "Apache-2.0", - "license_detections": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": "buildpack.toml", - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": "type: Apache-2.0", - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/opentelemetry", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - }, - "dependencies": [ - { - "purl": "pkg:generic/opentelemetry-java@2.10.0", - "extracted_requirement": null, - "scope": "runtime", - "is_runtime": true, - "is_optional": false, - "is_pinned": false, - "is_direct": true, - "resolved_package": {}, - "extra_data": { - "cpes": [ - "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" - ] - } - } - ], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:generic/opentelemetry@%7B%7B.version%7D%7D" - } - ], - "for_packages": [], - "scan_errors": [] - } - ] -} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json new file mode 100644 index 0000000000..05db6c0dd5 --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json @@ -0,0 +1,117 @@ +[ + { + "type": "generic", + "namespace": "paketo-buildpacks", + "name": "opentelemetry", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", + "release_date": null, + "parties": [], + "keywords": [ + "java", + "apm", + "trace", + "opentelemetry" + ], + "homepage_url": "https://github.com/paketo-buildpacks/opentelemetry", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "type: Apache-2.0", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "api_version": "0.7", + "id": "paketo-buildpacks/opentelemetry", + "include_files": [ + "LICENSE", + "NOTICE", + "README.md", + "linux/amd64/bin/build", + "linux/amd64/bin/detect", + "linux/amd64/bin/main", + "linux/amd64/bin/helper", + "linux/arm64/bin/build", + "linux/arm64/bin/detect", + "linux/arm64/bin/main", + "linux/arm64/bin/helper", + "buildpack.toml" + ], + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] + }, + "dependencies": [ + { + "purl": "pkg:generic/opentelemetry-java@2.10.0", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": { + "cpes": [ + "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" + ] + } + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/paketo-buildpacks/opentelemetry" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json similarity index 87% rename from tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json rename to tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json index 4966506808..12bdcf928c 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json @@ -8,9 +8,9 @@ "package_data": [ { "type": "generic", - "namespace": null, + "namespace": "paketo-buildpacks", "name": "pipeline-builder-canary", - "version": "{{.version}}", + "version": null, "qualifiers": {}, "subpath": null, "primary_language": null, @@ -70,6 +70,18 @@ "extra_data": { "api_version": "0.7", "id": "paketo-buildpacks/pipeline-builder-canary", + "include_files": [ + "LICENSE", + "NOTICE", + "README.md", + "linux/amd64/bin/build", + "linux/amd64/bin/detect", + "linux/amd64/bin/main", + "linux/arm64/bin/build", + "linux/arm64/bin/detect", + "linux/arm64/bin/main", + "buildpack.toml" + ], "targets": [ { "arch": "amd64", @@ -102,7 +114,7 @@ "repository_download_url": null, "api_data_url": null, "datasource_id": "buildpack_toml", - "purl": "pkg:generic/pipeline-builder-canary@%7B%7B.version%7D%7D" + "purl": "pkg:generic/paketo-buildpacks/pipeline-builder-canary" } ], "for_packages": [], diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json new file mode 100644 index 0000000000..db29f9d67b --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json @@ -0,0 +1,112 @@ +[ + { + "type": "generic", + "namespace": "paketo-buildpacks", + "name": "pipeline-builder-canary", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": "A Cloud Native Buildpack that provides/does nothing. For testing only.", + "release_date": null, + "parties": [], + "keywords": [ + "nothing" + ], + "homepage_url": "https://github.com/paketo-buildpacks/pipeline-builder-canary", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "apache-2.0", + "declared_license_expression_spdx": "Apache-2.0", + "license_detections": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "matches": [ + { + "license_expression": "apache-2.0", + "license_expression_spdx": "Apache-2.0", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "2-aho", + "score": 100.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", + "matched_text": "type: Apache-2.0" + } + ], + "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "type: Apache-2.0", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "api_version": "0.7", + "id": "paketo-buildpacks/pipeline-builder-canary", + "include_files": [ + "LICENSE", + "NOTICE", + "README.md", + "linux/amd64/bin/build", + "linux/amd64/bin/detect", + "linux/amd64/bin/main", + "linux/arm64/bin/build", + "linux/arm64/bin/detect", + "linux/arm64/bin/main", + "buildpack.toml" + ], + "targets": [ + { + "arch": "amd64", + "os": "linux" + }, + { + "arch": "arm64", + "os": "linux" + } + ] + }, + "dependencies": [ + { + "purl": "pkg:generic/apache-maven@3.9.9", + "extracted_requirement": null, + "scope": "runtime", + "is_runtime": true, + "is_optional": false, + "is_pinned": false, + "is_direct": true, + "resolved_package": {}, + "extra_data": { + "cpes": [ + "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" + ] + } + } + ], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/paketo-buildpacks/pipeline-builder-canary" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json deleted file mode 100644 index e310b94323..0000000000 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "packages": [], - "dependencies": [], - "files": [ - { - "path": "buildpack.toml", - "type": "file", - "package_data": [ - { - "type": "generic", - "namespace": null, - "name": "source-removal", - "version": null, - "qualifiers": {}, - "subpath": null, - "primary_language": null, - "description": null, - "release_date": null, - "parties": [], - "keywords": [], - "homepage_url": null, - "download_url": null, - "size": null, - "sha1": null, - "md5": null, - "sha256": null, - "sha512": null, - "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, - "copyright": null, - "holder": null, - "declared_license_expression": null, - "declared_license_expression_spdx": null, - "license_detections": [], - "other_license_expression": null, - "other_license_expression_spdx": null, - "other_license_detections": [], - "extracted_license_statement": null, - "notice_text": null, - "source_packages": [], - "file_references": [], - "is_private": false, - "is_virtual": false, - "extra_data": { - "api_version": "0.7", - "id": "paketo-buildpacks/source-removal" - }, - "dependencies": [], - "repository_homepage_url": null, - "repository_download_url": null, - "api_data_url": null, - "datasource_id": "buildpack_toml", - "purl": "pkg:generic/source-removal" - } - ], - "for_packages": [], - "scan_errors": [] - } - ] -} \ No newline at end of file diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedoutput.json new file mode 100644 index 0000000000..04da840b4c --- /dev/null +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/source-removal/expectedoutput.json @@ -0,0 +1,55 @@ +[ + { + "type": "generic", + "namespace": "paketo-buildpacks", + "name": "source-removal", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": { + "api_version": "0.7", + "id": "paketo-buildpacks/source-removal", + "include_files": [ + "bin/run", + "bin/build", + "bin/detect", + "buildpack.toml" + ] + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "buildpack_toml", + "purl": "pkg:generic/paketo-buildpacks/source-removal" + } +] \ No newline at end of file diff --git a/tests/packagedcode/test_buildpack.py b/tests/packagedcode/test_buildpack.py index 6d1b2eb3b3..b4aca1add0 100644 --- a/tests/packagedcode/test_buildpack.py +++ b/tests/packagedcode/test_buildpack.py @@ -9,417 +9,74 @@ import os from packagedcode import buildpack -from commoncode.testcase import FileBasedTesting -from packageurl import PackageURL -from packagedcode import models -from packages_test_utils import compare_package_results +from packages_test_utils import PackageTester from scancode.cli_test_utils import check_json_scan from scancode.cli_test_utils import run_scan_click from scancode_config import REGEN_TEST_FIXTURES -class TestBuildpack(FileBasedTesting): +class TestBuildpack(PackageTester): test_data_dir = os.path.join(os.path.dirname(__file__), 'data') - def test_scanworks_on_buildpack_heroku_java(self): - test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml') - expected_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_heroku_php(self): - test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml') - expected_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_paketo_dotnet_execute(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') - expected_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_paketo_java_memory_assistant(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') - expected_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_paketo_git(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') - expected_file = self.get_test_loc('buildpack/paketo-buildpacks/git/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_paketo_opentelemetry(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') - expected_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_paketo_pipeline_builder_canary(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') - expected_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - - def test_scanworks_on_buildpack_paketo_source_removal(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') - expected_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/expectedbuildpack.json') - result_file = self.get_temp_file('results.json') - run_scan_click(['--package', test_file, '--json-pp', result_file]) - check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) - def test_parse_heroku_buildpack_java_toml(self): test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - description="Heroku buildpack for Java", - name="Java", - version=None, - extra_data={ - "ignore_files": [ - "etc/", - "spec/", - "test/", - ".gitignore", - ".github/", - "hatchet.json", - "Gemfile", - "Gemfile.lock" - ] - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-java/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_heroku_buildpack_php_toml(self): test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - description= "Heroku buildpack for PHP", - name="PHP", - version=None, - extra_data={ - "ignore_files": [ - ".github/", - ".gitignore", - ".rspec_parallel", - "support/build/", - "support/devcenter/", - "test/", - "Gemfile", - "Gemfile.lock", - "hatchet.json", - "hatchet.lock", - "requirements.txt" - ] - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_paketo_dotnet_execute_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="dotnet-execute", - version=None, - description="A buildpack for running the `dotnet execute` command for an app", - homepage_url="https://github.com/paketo-buildpacks/dotnet-execute", - keywords=["dotnet"], - declared_license_expression="apache-2.0", - declared_license_expression_spdx= "Apache-2.0", - extracted_license_statement= "type: Apache-2.0", - license_detections= [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": None, - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - extra_data={ - "api_version": "0.8", - "id": "paketo-buildpacks/dotnet-execute" - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/paketo-buildpacks/dotnet-execute/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_paketo_java_memory_assistant_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="java-memory-assistant", - version="{{.version}}", - description="A Cloud Native Buildpack that installs the Java Memory Assistant agent", - homepage_url="https://github.com/paketo-buildpacks/java-memory-assistant", - keywords=["agent"], - dependencies=[ - models.DependentPackage( - purl="pkg:generic/sap-java-memory-assistant@0.5.0?arch=amd64", - scope="runtime", - is_runtime=True, - is_optional=False, - extra_data= { - "cpes": [ - "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" - ] - } - ) - ], - declared_license_expression="apache-2.0", - declared_license_expression_spdx= "Apache-2.0", - extracted_license_statement= "type: Apache-2.0", - license_detections= [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": None, - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - extra_data={ - "api_version": "0.7", - "id": "paketo-buildpacks/java-memory-assistant", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_paketo_git_buildpack_toml(self): - test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="git", - version=None, - homepage_url="https://github.com/paketo-buildpacks/git", - extra_data={ - "api_version": "0.7", - "id": "paketo-buildpacks/git" - } - ) - ] - compare_package_results(expected_packages, result_packages) + test_file = self.get_test_loc('buildpack/paketo-buildpacks/git/buildpack.toml') + expected_loc = self.get_test_loc('buildpack/paketo-buildpacks/git/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_paketo_opentelemetry_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="opentelemetry", - version="{{.version}}", - description="A Cloud Native Buildpack that contributes and configures the OpenTelemetry Agent", - homepage_url="https://github.com/paketo-buildpacks/opentelemetry", - keywords=["java", "apm", "trace", "opentelemetry"], - dependencies=[ - models.DependentPackage( - purl="pkg:generic/opentelemetry-java@2.10.0", - scope="runtime", - is_runtime=True, - is_optional=False, - extra_data= { - "cpes": [ - "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" - ] - } - ) - ], - declared_license_expression="apache-2.0", - declared_license_expression_spdx= "Apache-2.0", - extracted_license_statement= "type: Apache-2.0", - license_detections= [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": None, - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - extra_data={ - "api_version": "0.7", - "id": "paketo-buildpacks/opentelemetry", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_paketo_pipeline_builder_canary_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="pipeline-builder-canary", - version="{{.version}}", - description="A Cloud Native Buildpack that provides/does nothing. For testing only.", - homepage_url="https://github.com/paketo-buildpacks/pipeline-builder-canary", - keywords=["nothing"], - dependencies=[ - models.DependentPackage( - purl="pkg:generic/apache-maven@3.9.9", - scope="runtime", - is_runtime=True, - is_optional=False, - extra_data= { - "cpes": [ - "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" - ] - } - ) - ], - declared_license_expression="apache-2.0", - declared_license_expression_spdx= "Apache-2.0", - extracted_license_statement= "type: Apache-2.0", - license_detections= [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "matches": [ - { - "license_expression": "apache-2.0", - "license_expression_spdx": "Apache-2.0", - "from_file": None, - "start_line": 1, - "end_line": 1, - "matcher": "2-aho", - "score": 100.0, - "matched_length": 3, - "match_coverage": 100.0, - "rule_relevance": 100, - "rule_identifier": "spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/spdx_license_id_apache-2.0_for_apache-2.0.RULE", - "matched_text": "type: Apache-2.0" - } - ], - "identifier": "apache_2_0-d66ab77d-a5cc-7104-e702-dc7df61fe9e8" - } - ], - extra_data={ - "api_version": "0.7", - "id": "paketo-buildpacks/pipeline-builder-canary", - "targets": [ - { - "arch": "amd64", - "os": "linux" - }, - { - "arch": "arm64", - "os": "linux" - } - ] - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) def test_parse_paketo_source_removal_buildpack_toml(self): test_file = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/buildpack.toml') - result_packages = list(buildpack.BuildpackHandler.parse(test_file)) - expected_packages = [ - models.PackageData( - type=buildpack.BuildpackHandler.default_package_type, - datasource_id=buildpack.BuildpackHandler.datasource_id, - name="source-removal", - version=None, - extra_data={ - "api_version": "0.7", - "id": "paketo-buildpacks/source-removal" - } - ) - ] - compare_package_results(expected_packages, result_packages) + expected_loc = self.get_test_loc('buildpack/paketo-buildpacks/source-removal/expectedoutput.json') + packages_data = list(buildpack.BuildpackHandler.parse(test_file)) + self.check_packages_data(packages_data, expected_loc, regen=REGEN_TEST_FIXTURES) + + def test_scanworks_on_heroku_buildpack(self): + test_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-buildpack-php/buildpack.toml') + expected_file = self.get_test_loc('buildpack/heroku-buildpacks/heroku-results.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + + def test_scanworks_on_paketo_buildpack(self): + test_file = self.get_test_loc('buildpack/paketo-buildpacks/pipeline-builder-canary/buildpack.toml') + expected_file = self.get_test_loc('buildpack/paketo-buildpacks/paketo-results.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_file, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + From d2c7050c40345d8b6177e12579df0896f8cdca13 Mon Sep 17 00:00:00 2001 From: NucleonGodX Date: Mon, 12 May 2025 11:19:49 +0530 Subject: [PATCH 9/9] add dependencies resolution data Signed-off-by: NucleonGodX --- src/packagedcode/buildpack.py | 60 +++++++++++++++++-- .../java-memory-assistant/expectedoutput.json | 27 +++++++-- .../opentelemetry/expectedoutput.json | 25 ++++++-- .../paketo-buildpacks/paketo-results.json | 27 +++++++-- .../expectedoutput.json | 27 +++++++-- 5 files changed, 146 insertions(+), 20 deletions(-) diff --git a/src/packagedcode/buildpack.py b/src/packagedcode/buildpack.py index f8a4657657..17d8e8df5b 100644 --- a/src/packagedcode/buildpack.py +++ b/src/packagedcode/buildpack.py @@ -106,10 +106,47 @@ def handle_paketo_buildpack(data, buildpack, package_data): dep_name = dep.get("name") dep_version = dep.get("version") dep_cpes = dep.get("cpes", []) - extra_data = {"cpes": dep_cpes} if dep_cpes else {} - + + resolved_package = {} + + for field in ["id", "name", "sha256", "stacks", "uri", "licenses", "homepage"]: + if field in dep: + resolved_package[field] = dep[field] + + if dep_cpes: + resolved_package["cpes"] = dep_cpes + + if "arch" in dep: + resolved_package["arch"] = dep["arch"] + + if "license" in dep: + resolved_package["license"] = dep["license"] + + if "uri" in dep: + resolved_package["download_url"] = dep["uri"] + + for checksum_type in ["sha256", "sha512", "md5"]: + if checksum_type in dep: + resolved_package[checksum_type] = dep[checksum_type] + + extra_data = {} + for key, value in dep.items(): + if key not in ["purl", "name", "version", "cpes", "id", "sha256", + "stacks", "uri", "licenses", "license", "homepage", + "arch", "sha512", "md5"]: + extra_data[key] = value + if not dep_purl and dep_name and dep_version: - dep_purl = PackageURL(type="generic", name=dep_name, version=dep_version).to_string() + qualifiers = {} + if "arch" in dep: + qualifiers["arch"] = dep["arch"] + + dep_purl = PackageURL( + type="generic", + name=dep_name, + version=dep_version, + qualifiers=qualifiers if qualifiers else None + ).to_string() if dep_purl: dependencies.append( @@ -118,7 +155,10 @@ def handle_paketo_buildpack(data, buildpack, package_data): scope="runtime", is_runtime=True, is_optional=False, - extra_data=extra_data, + is_pinned=True if "sha256" in dep else False, + is_direct=True, + resolved_package=resolved_package, + extra_data=extra_data if extra_data else None, ) ) @@ -128,12 +168,24 @@ def handle_paketo_buildpack(data, buildpack, package_data): group_id = group.get("id") group_version = group.get("version") if group_id and group_version: + resolved_package = { + "id": group_id, + "version": group_version + } + + for key, value in group.items(): + if key not in ["id", "version", "optional"]: + resolved_package[key] = value + dependencies.append( models.DependentPackage( purl=PackageURL(type="buildpack", name=group_id, version=group_version).to_string(), scope="runtime", is_runtime=True, is_optional=group.get("optional", False), + is_pinned=False, + is_direct=True, + resolved_package=resolved_package, ) ) diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json index 5d77a63e60..f557eecc32 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/java-memory-assistant/expectedoutput.json @@ -95,13 +95,32 @@ "scope": "runtime", "is_runtime": true, "is_optional": false, - "is_pinned": false, + "is_pinned": true, "is_direct": true, - "resolved_package": {}, - "extra_data": { + "resolved_package": { + "id": "java-memory-assistant", + "name": "Java Memory Assistant Agent", + "sha256": "9c5ffb4bdeec5ed6b4f1d734469500754a857d1452c3d253d89e2315addb04c5", + "stacks": [ + "io.buildpacks.stacks.bionic", + "io.paketo.stacks.tiny", + "*" + ], + "uri": "https://github.com/SAP-archive/java-memory-assistant/releases/download/0.5.0/java-memory-assistant-0.5.0.jar", + "licenses": [ + { + "type": "Apache-2.0", + "uri": "https://github.com/SAP/java-memory-assistant/blob/master/LICENSE" + } + ], "cpes": [ "cpe:2.3:a:sap:java-memory-assistant:0.5.0:*:*:*:*:*:*:*" - ] + ], + "download_url": "https://github.com/SAP-archive/java-memory-assistant/releases/download/0.5.0/java-memory-assistant-0.5.0.jar" + }, + "extra_data": { + "source": "https://github.com/sap/java-memory-assistant/archive/refs/tags/0.5.0.tar.gz", + "source-sha256": "dedf82a5c10df5b12e602c1237f00a459a38b6a55c0ff8d671fa0d3909dfe4fc" } } ], diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json index 05db6c0dd5..efb27ec8a7 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/opentelemetry/expectedoutput.json @@ -98,13 +98,30 @@ "scope": "runtime", "is_runtime": true, "is_optional": false, - "is_pinned": false, + "is_pinned": true, "is_direct": true, - "resolved_package": {}, - "extra_data": { + "resolved_package": { + "id": "opentelemetry-java", + "name": "OpenTelemetry Java Agent", + "sha256": "d05f6e36fac8db629263a6aaec2841cc934d064d7b19bfe38425b604b8b54926", + "stacks": [ + "*" + ], + "uri": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.10.0/opentelemetry-javaagent.jar", + "licenses": [ + { + "type": "Apache-2.0", + "uri": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/LICENSE" + } + ], "cpes": [ "cpe:2.3:a:open-telemetry:opentelemetry-java-agent:2.10.0:*:*:*:*:*:*:*" - ] + ], + "download_url": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.10.0/opentelemetry-javaagent.jar" + }, + "extra_data": { + "source": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/archive/refs/tags/v2.10.0.tar.gz", + "source-sha256": "3a921baa391e9fa3f3622bedf1770567bcfed2a13de07642a2273b8beeca934a" } } ], diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json index 12bdcf928c..18c50a5650 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/paketo-results.json @@ -100,13 +100,32 @@ "scope": "runtime", "is_runtime": true, "is_optional": false, - "is_pinned": false, + "is_pinned": true, "is_direct": true, - "resolved_package": {}, - "extra_data": { + "resolved_package": { + "id": "maven", + "name": "Apache Maven", + "sha256": "7a9cdf674fc1703d6382f5f330b3d110ea1b512b51f1652846d9e4e8a588d766", + "stacks": [ + "io.buildpacks.stacks.bionic", + "io.paketo.stacks.tiny", + "*" + ], + "uri": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz", + "licenses": [ + { + "type": "Apache-2.0", + "uri": "https://www.apache.org/licenses/" + } + ], "cpes": [ "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" - ] + ], + "download_url": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz" + }, + "extra_data": { + "source": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-src.tar.gz", + "source-sha256": "8a24c448d4ac397e6b0c019a4d7250068c02d1cdb553299e6bb71c3ccca78b2c" } } ], diff --git a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json index db29f9d67b..26ed85e0a2 100644 --- a/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json +++ b/tests/packagedcode/data/buildpack/paketo-buildpacks/pipeline-builder-canary/expectedoutput.json @@ -93,13 +93,32 @@ "scope": "runtime", "is_runtime": true, "is_optional": false, - "is_pinned": false, + "is_pinned": true, "is_direct": true, - "resolved_package": {}, - "extra_data": { + "resolved_package": { + "id": "maven", + "name": "Apache Maven", + "sha256": "7a9cdf674fc1703d6382f5f330b3d110ea1b512b51f1652846d9e4e8a588d766", + "stacks": [ + "io.buildpacks.stacks.bionic", + "io.paketo.stacks.tiny", + "*" + ], + "uri": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz", + "licenses": [ + { + "type": "Apache-2.0", + "uri": "https://www.apache.org/licenses/" + } + ], "cpes": [ "cpe:2.3:a:apache:maven:3.9.9:*:*:*:*:*:*:*" - ] + ], + "download_url": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.tar.gz" + }, + "extra_data": { + "source": "https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-src.tar.gz", + "source-sha256": "8a24c448d4ac397e6b0c019a4d7250068c02d1cdb553299e6bb71c3ccca78b2c" } } ],