@@ -320,6 +320,10 @@ def get_bom_with_nested_services() -> Bom:
320320
321321
322322def get_bom_for_issue_275_components () -> Bom :
323+ """regression test for issue #275
324+ see https://github.com/CycloneDX/cyclonedx-python-lib/issues/275
325+ """
326+
323327 app = Component (bom_ref = MOCK_UUID_1 , name = "app" , version = "1.0.0" )
324328 comp_a = Component (bom_ref = MOCK_UUID_2 , name = "comp_a" , version = "1.0.0" )
325329 comp_b = Component (bom_ref = MOCK_UUID_3 , name = "comp_b" , version = "1.0.0" )
@@ -338,17 +342,45 @@ def get_bom_for_issue_275_components() -> Bom:
338342
339343
340344# def get_bom_for_issue_275_services() -> Bom:
341- # app = Component(name="app", version="1.0.0")
342- # serv_a = Service(name='Service A')
343- # serv_b = Service(name='Service B')
344- # serv_c = Service(name='Service C')
345+ # """regression test for issue #275
346+ # see https://github.com/CycloneDX/cyclonedx-python-lib/issues/275
347+ # """
348+ # app = Component(name="app", version="1.0.0")
349+ # serv_a = Service(name='Service A')
350+ # serv_b = Service(name='Service B')
351+ # serv_c = Service(name='Service C')
345352#
346- # serv_b.services.add(serv_c)
347- # serv_b.dependencies.add(serv_c.bom_ref)
353+ # serv_b.services.add(serv_c)
354+ # serv_b.dependencies.add(serv_c.bom_ref)
348355#
349- # bom = Bom(services=[serv_a, serv_b])
350- # bom.metadata.component = app
351- # return bom
356+ # bom = Bom(services=[serv_a, serv_b])
357+ # bom.metadata.component = app
358+ # return bom
359+
360+
361+ def get_bom_for_issue_328_components () -> Bom :
362+ """regression test for issue #328
363+ see https://github.com/CycloneDX/cyclonedx-python-lib/issues/328
364+ """
365+
366+ comp_root = Component (component_type = ComponentType .APPLICATION ,
367+ name = 'my-project' , version = '1' , bom_ref = 'my-project' )
368+ comp_a = Component (name = 'A' , version = '0.1' , bom_ref = 'component-A' )
369+ comp_b = Component (name = 'B' , version = '1.0' , bom_ref = 'component-B' )
370+ comp_c = Component (name = 'C' , version = '1.0' , bom_ref = 'component-C' )
371+
372+ # Make a tree of components A -> B -> C
373+ comp_a .components = [comp_b ]
374+ comp_b .components = [comp_c ]
375+ # Declare dependencies the same way: A -> B -> C
376+ comp_a .dependencies = [comp_b .bom_ref ]
377+ comp_b .dependencies = [comp_c .bom_ref ]
378+
379+ bom = Bom ()
380+ bom .metadata .component = comp_root
381+ comp_root .dependencies = [comp_a .bom_ref ]
382+ bom .components = [comp_a ]
383+ return bom
352384
353385
354386def get_component_setuptools_complete (include_pedigree : bool = True ) -> Component :
@@ -376,7 +408,8 @@ def get_component_setuptools_complete(include_pedigree: bool = True) -> Componen
376408
377409
378410def get_component_setuptools_simple (
379- bom_ref :
Optional [
str ]
= 'pkg:pypi/[email protected] ?extension=tar.gz' )
-> Component :
411+ bom_ref :
Optional [
str ]
= 'pkg:pypi/[email protected] ?extension=tar.gz' 412+ ) -> Component :
380413 return Component (
381414 name = 'setuptools' , version = '50.3.2' ,
382415 bom_ref = bom_ref ,
0 commit comments