mirror of
https://github.com/Kitware/CMake.git
synced 2026-07-01 12:18:01 +00:00
SBOM: Handle PACKAGE_URL argument
This commit is contained in:
@@ -56,6 +56,7 @@ cmExportSbomGenerator::cmExportSbomGenerator(cmSbomArguments args)
|
||||
, PackageDescription(std::move(args.Description))
|
||||
, PackageWebsite(std::move(args.Website))
|
||||
, PackageLicense(std::move(args.License))
|
||||
, PackageUrl(std::move(args.PackageUrl))
|
||||
, PackageFormat(args.GetFormat())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ public:
|
||||
SbomFormat GetFormat() const;
|
||||
|
||||
ArgumentParser::NonEmpty<std::string> Format;
|
||||
ArgumentParser::NonEmpty<std::string> PackageUrl;
|
||||
|
||||
protected:
|
||||
cm::string_view CommandName() const override;
|
||||
@@ -54,6 +55,7 @@ private:
|
||||
cmProjectInfoArguments* const base = self;
|
||||
Bind(base, parser, "SBOM"_s, &cmProjectInfoArguments::PackageName);
|
||||
Bind(self, parser, "FORMAT"_s, &cmSbomArguments::Format);
|
||||
Bind(self, parser, "PACKAGE_URL"_s, &cmSbomArguments::PackageUrl);
|
||||
cmProjectInfoArguments::Bind(parser, self);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/test_targets/test_targets.spdx.json" content)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadataExplicitAssertions.cmake)
|
||||
|
||||
@@ -6,5 +6,6 @@ export(
|
||||
DESCRIPTION "An eloquent description"
|
||||
LICENSE "BSD-3"
|
||||
HOMEPAGE_URL "www.example.com"
|
||||
PACKAGE_URL "https://example.com/test_targets.tar.gz"
|
||||
VERSION "1.3.4"
|
||||
)
|
||||
|
||||
@@ -28,3 +28,4 @@ run_cmake_install(Requirements)
|
||||
|
||||
run_cmake_install(MissingPackageNamespace)
|
||||
run_cmake_install(ReferencesNonExportedTarget)
|
||||
run_cmake_install(ProjectMetadata)
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
file(READ "${RunCMake_TEST_INSTALL_DIR}/test_targets.spdx.json" content)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadataExplicitAssertions.cmake)
|
||||
|
||||
@@ -5,6 +5,7 @@ install(
|
||||
DESCRIPTION "An eloquent description"
|
||||
LICENSE "BSD-3"
|
||||
HOMEPAGE_URL "www.example.com"
|
||||
PACKAGE_URL "https://example.com/test_targets.tar.gz"
|
||||
VERSION "1.3.4"
|
||||
EXPORT test_targets
|
||||
DESTINATION .
|
||||
|
||||
@@ -29,3 +29,4 @@ run_cmake_install(Requirements)
|
||||
run_cmake_install(IgnoresInterfaceDirs)
|
||||
run_cmake_install(MissingPackageNamespace)
|
||||
run_cmake_install(ReferencesNonExportedTarget)
|
||||
run_cmake_install(ProjectMetadata)
|
||||
|
||||
21
Tests/RunCMake/Sbom/ProjectMetadataExplicitAssertions.cmake
Normal file
21
Tests/RunCMake/Sbom/ProjectMetadataExplicitAssertions.cmake
Normal file
@@ -0,0 +1,21 @@
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/Assertions.cmake)
|
||||
|
||||
set(DOCUMENT_METADATA_EXPECTED [=[
|
||||
{
|
||||
"description" : "An eloquent description",
|
||||
"dataLicense" : "BSD-3"
|
||||
}
|
||||
]=])
|
||||
|
||||
set(PACKAGE_METADATA_EXPECTED [=[
|
||||
{
|
||||
"spdxId" : "urn:test#Package",
|
||||
"software_packageVersion" : "1.3.4",
|
||||
"software_homePage" : "www.example.com",
|
||||
"software_downloadLocation" : "https://example.com/test_targets.tar.gz"
|
||||
}
|
||||
]=])
|
||||
|
||||
string(JSON SPDX_DOCUMENT GET "${content}" "@graph" "1")
|
||||
expect_object("${SPDX_DOCUMENT}" DOCUMENT_METADATA_EXPECTED)
|
||||
expect_object("${SPDX_DOCUMENT}" PACKAGE_METADATA_EXPECTED "rootElement")
|
||||
Reference in New Issue
Block a user