-
Notifications
You must be signed in to change notification settings - Fork 0
81 lines (65 loc) · 2.54 KB
/
test.yml
File metadata and controls
81 lines (65 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
name: Test
on:
pull_request:
branches: [main]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod
- name: Vet
run: go vet ./...
- name: Unit tests
run: go test ./... -count=1 -race
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod
- name: Build
run: go build -o crd-schema-extractor ./cmd/crd-schema-extractor/
- name: Validate test sources
run: ./crd-schema-extractor validate test/sources/
- name: Extract schemas
run: ./crd-schema-extractor extract test/sources/ -o e2e-schemas --debug
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Verify output structure
run: |
echo "--- Schema files ---"
find e2e-schemas -name '*.json' -not -name 'sbom.*' | sort
# Expect at least one schema file
count=$(find e2e-schemas -name '*.json' -not -name 'sbom.*' -not -name '*.provenance.*' | wc -l)
if [ "$count" -lt 1 ]; then
echo "FAIL: expected at least 1 schema file, got $count"
exit 1
fi
echo "OK: $count schema files extracted"
# Verify per-group SBOMs exist
sbom_count=$(find e2e-schemas -name 'sbom.cdx.json' | wc -l)
if [ "$sbom_count" -lt 1 ]; then
echo "FAIL: no per-group sbom.cdx.json files found"
exit 1
fi
echo "OK: $sbom_count per-group SBOM files found"
# Verify each SBOM has a serialNumber
for sbom in $(find e2e-schemas -name 'sbom.cdx.json'); do
sn=$(jq -r '.serialNumber // empty' "$sbom")
if [ -z "$sn" ]; then
echo "FAIL: $sbom missing serialNumber"
exit 1
fi
echo "OK: $sbom has serialNumber $sn"
done
# Verify extracted schemas are valid JSON Schemas
pip install --quiet check-jsonschema
schema_files=$(find e2e-schemas -name '*.json' -not -name 'sbom.*' -not -name '*.provenance.*')
check-jsonschema --check-metaschema $schema_files
echo "OK: all schemas pass metaschema validation"