Skip to content

Commit f0acdea

Browse files
committed
Added initial support for testing multiple CycloneDX specifications from a single test file
1 parent 213b972 commit f0acdea

33 files changed

+601
-782
lines changed

Changes

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ Change history for SBOM::CycloneDX
22

33
1.0? 2026-01-??
44
- Improved support for CycloneDX 1.7 (https://cyclonedx.org/docs/1.7/json/)
5-
- Added "patent" and "patentFamily" support (CycloneDX 1.7)
65
- Improved documentations
76
- Improved ENUM classes
8-
- Remove '$schema' in CycloneDX < 1.5
7+
- Added "patent" and "patentFamily" support (CycloneDX 1.7)
8+
- Added initial support for testing multiple CycloneDX specifications from a single test file
99
- Added new tests
10+
- Remove '$schema' in CycloneDX < 1.5
1011

1112
1.06 2026-01-15
1213
- Added initial support for CycloneDX 1.7 (https://cyclonedx.org/docs/1.7/json/)

MANIFEST

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,18 @@ MANIFEST This list of files
134134
README.md
135135
t/00-load.t
136136
t/10-enum.t
137-
t/50-invalid-empty-component-1.6.t
138-
t/50-invalid-license-id-1.6.t
139-
t/50-invalid-license-missing-id-and-name-1.6.t
140-
t/50-invalid-metadata-license-1.6.t
141-
t/50-invalid-metadata-timestamp-1.6.t
142-
t/50-invalid-missing-component-type-1.6.t
143-
t/50-valid-component-swid-1.6.t
144-
t/50-valid-license-id-1.6.t
145-
t/50-valid-metadata-author-1.6.t
146-
t/50-valid-metadata-license-1.6.t
147-
t/50-valid-metadata-lifecycle-1.6.t
148-
t/50-valid-minimal-viable-1.2.t
149-
t/50-valid-minimal-viable-1.3.t
150-
t/50-valid-minimal-viable-1.4.t
151-
t/50-valid-minimal-viable-1.5.t
152-
t/50-valid-minimal-viable-1.6.t
153-
t/50-valid-minimal-viable-1.7.t
137+
t/50-invalid-empty-component.t
138+
t/50-invalid-license-id.t
139+
t/50-invalid-license-missing-id-and-name.t
140+
t/50-invalid-metadata-license.t
141+
t/50-invalid-missing-component-type.t
142+
t/50-valid-component-swid.t
143+
t/50-valid-dependency.t
144+
t/50-valid-license-id.t
145+
t/50-valid-metadata-author.t
146+
t/50-valid-metadata-license.t
147+
t/50-valid-metadata-lifecycle.t
148+
t/50-valid-minimal-viable.t
154149
t/60-json-schema.t
155150
t/61-json-schema-test-data.t
156151
t/lib/Test/CycloneDX.pm

lib/SBOM/CycloneDX.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use constant JSON_SCHEMA_1_5 => 'http://cyclonedx.org/schema/bom-1.5.schema.json
3030
use constant JSON_SCHEMA_1_6 => 'http://cyclonedx.org/schema/bom-1.6.schema.json';
3131
use constant JSON_SCHEMA_1_7 => 'http://cyclonedx.org/schema/bom-1.7.schema.json';
3232

33-
our $VERSION = 1.06_1;
33+
our $VERSION = 1.06_2;
3434

3535
our %JSON_SCHEMA = (
3636
'1.2' => JSON_SCHEMA_1_2,

t/50-invalid-empty-component-1.6.t

Lines changed: 0 additions & 41 deletions
This file was deleted.

t/50-invalid-empty-component.t

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!perl
2+
3+
use strict;
4+
use warnings;
5+
use v5.10;
6+
7+
use FindBin '$RealBin';
8+
use lib "$RealBin/lib";
9+
10+
use Test::More;
11+
use Test::CycloneDX qw(bom_spec bom_test_data is_bom isnt_valid_bom);
12+
13+
use SBOM::CycloneDX;
14+
use SBOM::CycloneDX::License;
15+
use SBOM::CycloneDX::Component;
16+
17+
for my $spec_version (qw[1.3 1.4 1.5 1.6 1.7]) {
18+
19+
subtest "CycloneDX $spec_version - Invalid Empty Component" => sub {
20+
21+
my $bom_test_data = bom_test_data('invalid-empty-component', $spec_version);
22+
23+
my $bom = bom_spec($spec_version);
24+
25+
eval { $bom->components->push(SBOM::CycloneDX::Component->new(type => 'library')) };
26+
27+
isnt $@, '';
28+
diag $@;
29+
30+
};
31+
32+
}
33+
34+
done_testing();

t/50-invalid-license-id-1.6.t

Lines changed: 0 additions & 59 deletions
This file was deleted.

t/50-invalid-license-id.t

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!perl
2+
3+
use strict;
4+
use warnings;
5+
use v5.10;
6+
7+
use FindBin '$RealBin';
8+
use lib "$RealBin/lib";
9+
10+
use Test::More;
11+
use Test::CycloneDX qw(bom_spec bom_test_data is_bom isnt_valid_bom);
12+
13+
use SBOM::CycloneDX;
14+
use SBOM::CycloneDX::License;
15+
use SBOM::CycloneDX::Component;
16+
17+
for my $spec_version (qw[1.2 1.3 1.4 1.5 1.6 1.7]) {
18+
19+
subtest "CycloneDX $spec_version - Invalid License ID" => sub {
20+
21+
my $bom_test_data = bom_test_data('invalid-license-id', $spec_version);
22+
23+
my $bom = bom_spec($spec_version);
24+
25+
$bom->components->push(SBOM::CycloneDX::Component->new(
26+
type => 'library',
27+
publisher => 'Acme Inc',
28+
group => 'com.acme',
29+
name => 'tomcat-catalina',
30+
version => '9.0.14',
31+
licenses => [SBOM::CycloneDX::License->new(id => 'Apache-2')]
32+
));
33+
34+
is_bom $bom;
35+
is $bom->spec_version, $spec_version;
36+
isnt_valid_bom $bom;
37+
38+
};
39+
40+
}
41+
done_testing();

t/50-invalid-license-missing-id-and-name-1.6.t

Lines changed: 0 additions & 55 deletions
This file was deleted.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!perl
2+
3+
use strict;
4+
use warnings;
5+
use v5.10;
6+
7+
use FindBin '$RealBin';
8+
use lib "$RealBin/lib";
9+
10+
use Test::More;
11+
use Test::CycloneDX qw(bom_spec bom_test_data is_bom isnt_valid_bom);
12+
13+
use SBOM::CycloneDX;
14+
use SBOM::CycloneDX::License;
15+
use SBOM::CycloneDX::Component;
16+
17+
for my $spec_version (qw[1.6 1.7]) {
18+
19+
subtest "CycloneDX $spec_version - Invalid License Missing ID and Name" => sub {
20+
21+
my $bom_test_data = bom_test_data('invalid-license-missing-id-and-name', $spec_version);
22+
23+
my $bom = bom_spec($spec_version);
24+
25+
$bom->components->push(SBOM::CycloneDX::Component->new(
26+
type => 'library',
27+
name => 'license-with-no-id-nor-name',
28+
version => '23',
29+
description => 'testcase for issue#288',
30+
licenses => [SBOM::CycloneDX::License->new]
31+
));
32+
33+
is_bom $bom;
34+
is $bom->spec_version, $spec_version;
35+
isnt_valid_bom $bom;
36+
37+
};
38+
39+
}
40+
41+
done_testing();

t/50-invalid-metadata-license-1.6.t

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)