Skip to content

Commit 1f55f3e

Browse files
committed
fix: further fix for #150
Signed-off-by: Paul Horton <[email protected]>
1 parent c09e396 commit 1f55f3e

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

cyclonedx/output/json.py

+3
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ def _specialise_output_for_schema_version(self, bom_json: Dict[Any, Any]) -> str
8989
# Iterate Components
9090
if 'components' in bom_json.keys():
9191
for i in range(len(bom_json['components'])):
92+
if 'version' not in bom_json['components'][i].keys() and not self.component_version_optional():
93+
bom_json['components'][i]['version'] = ''
94+
9295
if not self.component_supports_author() and 'author' in bom_json['components'][i].keys():
9396
del bom_json['components'][i]['author']
9497

cyclonedx/output/serializer/json.py

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from packageurl import PackageURL # type: ignore
3030

3131
from cyclonedx.model import XsUri
32+
from cyclonedx.model.component import Component
3233

3334
HYPHENATED_ATTRIBUTES = [
3435
'bom_ref', 'mime_type', 'x_trust_boundary'

tests/fixtures/json/1.3/bom_setuptools_no_version.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717
"components": [
1818
{
1919
"type": "library",
20-
"bom-ref": "pkg:pypi/setuptools@50.3.2?extension=tar.gz",
20+
"bom-ref": "pkg:pypi/setuptools?extension=tar.gz",
2121
"author": "Test Author",
2222
"name": "setuptools",
23-
"version": "50.3.2",
23+
"version": "",
2424
"licenses": [
2525
{
2626
"expression": "MIT License"
2727
}
2828
],
29-
"purl": "pkg:pypi/setuptools@50.3.2?extension=tar.gz"
29+
"purl": "pkg:pypi/setuptools?extension=tar.gz"
3030
}
3131
]
3232
}

tests/test_component.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
from cyclonedx.model.bom import Bom
2525
from cyclonedx.model.component import Component
2626

27+
FIXTURES_DIRECTORY = 'fixtures/xml/1.4'
28+
2729

2830
class TestComponent(TestCase):
2931

@@ -94,12 +96,12 @@ def test_purl_with_qualifiers(self) -> None:
9496
self.assertEqual(purl.qualifiers, {'extension': 'tar.gz'})
9597

9698
def test_from_file_with_path_for_bom(self) -> None:
97-
test_file = join(dirname(__file__), 'fixtures/bom_setuptools.xml')
99+
test_file = join(dirname(__file__), FIXTURES_DIRECTORY, 'bom_setuptools.xml')
98100
c = Component.for_file(absolute_file_path=test_file, path_for_bom='fixtures/bom_setuptools.xml')
99101
self.assertEqual(c.name, 'fixtures/bom_setuptools.xml')
100-
self.assertEqual(c.version, '0.0.0-16932e52ed1e')
102+
self.assertEqual(c.version, '0.0.0-38165abddb68')
101103
purl = PackageURL(
102-
type='generic', name='fixtures/bom_setuptools.xml', version='0.0.0-16932e52ed1e'
104+
type='generic', name='fixtures/bom_setuptools.xml', version='0.0.0-38165abddb68'
103105
)
104106
self.assertEqual(c.purl, purl)
105107
self.assertEqual(len(c.hashes), 1)

tests/test_output_generic.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
from unittest import TestCase
2121

22-
from cyclonedx.exception.output import ComponentVersionRequiredException
2322
from cyclonedx.model.bom import Bom
2423
from cyclonedx.model.component import Component
2524
from cyclonedx.output import get_instance, OutputFormat, SchemaVersion
@@ -46,6 +45,5 @@ def test_get_instance_xml_v1_3(self) -> None:
4645
self.assertIsInstance(i, XmlV1Dot3)
4746

4847
def test_component_no_version_v1_3(self) -> None:
49-
with self.assertRaises(ComponentVersionRequiredException):
50-
outputter: Xml = get_instance(bom=TestOutputGeneric._bom, schema_version=SchemaVersion.V1_3)
51-
outputter.output_as_string()
48+
i = get_instance(bom=TestOutputGeneric._bom, schema_version=SchemaVersion.V1_3)
49+
self.assertIsInstance(i, XmlV1Dot3)

0 commit comments

Comments
 (0)