Skip to content

Commit df4dd3b

Browse files
committed
tests: regression tests for issue #328
Signed-off-by: Jan Kowalleck <[email protected]>
1 parent f3af229 commit df4dd3b

12 files changed

+416
-17
lines changed

tests/data.py

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
Tool,
4343
XsUri,
4444
)
45-
from cyclonedx.model.bom import Bom
45+
from cyclonedx.model.bom import Bom, BomMetaData
4646
from cyclonedx.model.component import (
4747
Commit,
4848
Component,
@@ -320,6 +320,10 @@ def get_bom_with_nested_services() -> Bom:
320320

321321

322322
def 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,44 @@ 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, name='my-project', version='1', bom_ref='my-project')
367+
comp_a = Component(name='A', version='0.1', bom_ref='component-A')
368+
comp_b = Component(name='B', version='1.0', bom_ref='component-B')
369+
comp_c = Component(name='C', version='1.0', bom_ref='component-C')
370+
371+
# Make a tree of components A -> B -> C
372+
comp_a.components = [comp_b]
373+
comp_b.components = [comp_c]
374+
# Declare dependencies the same way: A -> B -> C
375+
comp_a.dependencies = [comp_b.bom_ref]
376+
comp_b.dependencies = [comp_c.bom_ref]
377+
378+
bom = Bom()
379+
bom.components = [comp_a]
380+
Bom.metadata = BomMetaData(component=comp_root)
381+
comp_root.dependencies = [comp_a.bom_ref]
382+
return bom
352383

353384

354385
def get_component_setuptools_complete(include_pedigree: bool = True) -> Component:
@@ -376,7 +407,8 @@ def get_component_setuptools_complete(include_pedigree: bool = True) -> Componen
376407

377408

378409
def get_component_setuptools_simple(
379-
bom_ref: Optional[str] = 'pkg:pypi/[email protected]?extension=tar.gz') -> Component:
410+
bom_ref: Optional[str] = 'pkg:pypi/[email protected]?extension=tar.gz'
411+
) -> Component:
380412
return Component(
381413
name='setuptools', version='50.3.2',
382414
bom_ref=bom_ref,
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"$schema": "http://cyclonedx.org/schema/bom-1.2.schema.json",
3+
"bomFormat": "CycloneDX",
4+
"specVersion": "1.4",
5+
"version": 1,
6+
"metadata": {
7+
"component": {
8+
"type": "application",
9+
"name": "my-project",
10+
"version": "1",
11+
"bom-ref": "my-project"
12+
}
13+
},
14+
"components": [
15+
{
16+
"type": "library",
17+
"name": "A",
18+
"version": "0.1",
19+
"bom-ref": "component-A",
20+
"components": [
21+
{
22+
"type": "library",
23+
"name": "B",
24+
"version": "1.0",
25+
"bom-ref": "component-B",
26+
"components": [
27+
{
28+
"type": "library",
29+
"name": "C",
30+
"version": "1.0",
31+
"bom-ref": "component-C"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"dependencies": [
39+
{
40+
"ref": "my-project",
41+
"dependsOn": ["component-A"]
42+
},
43+
{
44+
"ref": "component-A",
45+
"dependsOn": ["component-B"]
46+
},
47+
{
48+
"ref": "component-B",
49+
"dependsOn": ["component-C"]
50+
},
51+
{
52+
"ref": "component-C"
53+
}
54+
]
55+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"$schema": "http://cyclonedx.org/schema/bom-1.3.schema.json",
3+
"bomFormat": "CycloneDX",
4+
"specVersion": "1.4",
5+
"version": 1,
6+
"metadata": {
7+
"component": {
8+
"type": "application",
9+
"name": "my-project",
10+
"version": "1",
11+
"bom-ref": "my-project"
12+
}
13+
},
14+
"components": [
15+
{
16+
"type": "library",
17+
"name": "A",
18+
"version": "0.1",
19+
"bom-ref": "component-A",
20+
"components": [
21+
{
22+
"type": "library",
23+
"name": "B",
24+
"version": "1.0",
25+
"bom-ref": "component-B",
26+
"components": [
27+
{
28+
"type": "library",
29+
"name": "C",
30+
"version": "1.0",
31+
"bom-ref": "component-C"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"dependencies": [
39+
{
40+
"ref": "my-project",
41+
"dependsOn": ["component-A"]
42+
},
43+
{
44+
"ref": "component-A",
45+
"dependsOn": ["component-B"]
46+
},
47+
{
48+
"ref": "component-B",
49+
"dependsOn": ["component-C"]
50+
},
51+
{
52+
"ref": "component-C"
53+
}
54+
]
55+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"$schema": "http://cyclonedx.org/schema/bom-1.4.schema.json",
3+
"bomFormat": "CycloneDX",
4+
"specVersion": "1.4",
5+
"version": 1,
6+
"metadata": {
7+
"component": {
8+
"type": "application",
9+
"name": "my-project",
10+
"version": "1",
11+
"bom-ref": "my-project"
12+
}
13+
},
14+
"components": [
15+
{
16+
"type": "library",
17+
"name": "A",
18+
"version": "0.1",
19+
"bom-ref": "component-A",
20+
"components": [
21+
{
22+
"type": "library",
23+
"name": "B",
24+
"version": "1.0",
25+
"bom-ref": "component-B",
26+
"components": [
27+
{
28+
"type": "library",
29+
"name": "C",
30+
"version": "1.0",
31+
"bom-ref": "component-C"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"dependencies": [
39+
{
40+
"ref": "my-project",
41+
"dependsOn": ["component-A"]
42+
},
43+
{
44+
"ref": "component-A",
45+
"dependsOn": ["component-B"]
46+
},
47+
{
48+
"ref": "component-B",
49+
"dependsOn": ["component-C"]
50+
},
51+
{
52+
"ref": "component-C"
53+
}
54+
]
55+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<bom xmlns="http://cyclonedx.org/schema/bom/1.0" version="1">
3+
<components>
4+
<component type="library">
5+
<name>A</name>
6+
<version>0.1</version>
7+
<modified>false</modified>
8+
</component>
9+
</components>
10+
</bom>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<bom xmlns="http://cyclonedx.org/schema/bom/1.1" version="1">
3+
<components>
4+
<component type="library" bom-ref="component-A">
5+
<name>A</name>
6+
<version>0.1</version>
7+
<components>
8+
<component type="library" bom-ref="component-B">
9+
<name>B</name>
10+
<version>1.0</version>
11+
<components>
12+
<component type="library" bom-ref="component-C">
13+
<name>C</name>
14+
<version>1.0</version>
15+
</component>
16+
</components>
17+
</component>
18+
</components>
19+
</component>
20+
</components>
21+
</bom>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<bom xmlns="http://cyclonedx.org/schema/bom/1.2" version="1">
3+
<metadata>
4+
<component type="application" bom-ref="my-project">
5+
<name>my-project</name>
6+
<version>1</version>
7+
</component>
8+
</metadata>
9+
<components>
10+
<component type="library" bom-ref="component-A">
11+
<name>A</name>
12+
<version>0.1</version>
13+
<components>
14+
<component type="library" bom-ref="component-B">
15+
<name>B</name>
16+
<version>1.0</version>
17+
<components>
18+
<component type="library" bom-ref="component-C">
19+
<name>C</name>
20+
<version>1.0</version>
21+
</component>
22+
</components>
23+
</component>
24+
</components>
25+
</component>
26+
</components>
27+
<dependencies>
28+
<dependency ref="my-project">
29+
<dependency ref="component-A" />
30+
</dependency>
31+
<dependency ref="component-A">
32+
<dependency ref="component-B" />
33+
</dependency>
34+
<dependency ref="component-B">
35+
<dependency ref="component-C" />
36+
</dependency>
37+
<dependency ref="component-C" />
38+
</dependencies>
39+
</bom>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<bom xmlns="http://cyclonedx.org/schema/bom/1.3" version="1">
3+
<metadata>
4+
<component type="application" bom-ref="my-project">
5+
<name>my-project</name>
6+
<version>1</version>
7+
</component>
8+
</metadata>
9+
<components>
10+
<component type="library" bom-ref="component-A">
11+
<name>A</name>
12+
<version>0.1</version>
13+
<components>
14+
<component type="library" bom-ref="component-B">
15+
<name>B</name>
16+
<version>1.0</version>
17+
<components>
18+
<component type="library" bom-ref="component-C">
19+
<name>C</name>
20+
<version>1.0</version>
21+
</component>
22+
</components>
23+
</component>
24+
</components>
25+
</component>
26+
</components>
27+
<dependencies>
28+
<dependency ref="my-project">
29+
<dependency ref="component-A" />
30+
</dependency>
31+
<dependency ref="component-A">
32+
<dependency ref="component-B" />
33+
</dependency>
34+
<dependency ref="component-B">
35+
<dependency ref="component-C" />
36+
</dependency>
37+
<dependency ref="component-C" />
38+
</dependencies>
39+
</bom>

0 commit comments

Comments
 (0)