Skip to content

Commit 125a6ff

Browse files
authored
feat(converter): Added snapshot testing to converter.go (#4268)
This involved some refactoring of the way the files are being output (both metrics and OSV)
1 parent 564a470 commit 125a6ff

File tree

7 files changed

+661
-58
lines changed

7 files changed

+661
-58
lines changed

vulnfeeds/cmd/cve-bulk-converter/main.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,25 @@ func worker(wg *sync.WaitGroup, jobs <-chan string, outDir string, cnas []string
9191
continue
9292
}
9393

94-
if slices.Contains(cnas, cve.Metadata.AssignerShortName) && cve.Metadata.State == "PUBLISHED" {
95-
logger.Info("Processing "+string(cve.Metadata.CVEID), slog.String("cve", string(cve.Metadata.CVEID)))
94+
if !slices.Contains(cnas, cve.Metadata.AssignerShortName) || cve.Metadata.State != "PUBLISHED" {
95+
continue
96+
}
97+
cveID := cve.Metadata.CVEID
98+
logger.Info("Processing "+string(cveID), slog.String("cve", string(cveID)))
9699

97-
if err = cvelist2osv.ConvertAndExportCVEToOSV(cve, outDir); err != nil {
98-
logger.Warn("Failed to generate an OSV record for "+string(cve.Metadata.CVEID),
99-
slog.String("cve", string(cve.Metadata.CVEID)), slog.Any("err", err))
100-
}
100+
osvFile, errCVE := cvelist2osv.CreateOSVFile(cveID, outDir)
101+
metricsFile, errMetrics := cvelist2osv.CreateMetricsFile(cveID, outDir)
102+
if errCVE != nil || errMetrics != nil {
103+
logger.Fatal("File failed to be created for CVE", slog.String("cve", string(cveID)))
101104
}
105+
// Perform the conversion and export the results.
106+
if err = cvelist2osv.ConvertAndExportCVEToOSV(cve, osvFile, metricsFile); err != nil {
107+
logger.Warn("Failed to generate an OSV record", slog.String("cve", string(cveID)), slog.Any("err", err))
108+
} else {
109+
logger.Info("Generated OSV record for "+string(cveID), slog.String("cve", string(cveID)), slog.String("cna", cve.Metadata.AssignerShortName))
110+
}
111+
112+
metricsFile.Close()
113+
osvFile.Close()
102114
}
103115
}

vulnfeeds/cmd/cve-single-converter/main.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,30 @@ func main() {
3333
logger.Fatal("Failed to parse CVEList CVE JSON", slog.Any("err", err))
3434
}
3535

36+
outDir := *outDir
37+
if outDir == "" {
38+
outDir = cve.Metadata.AssignerShortName
39+
}
40+
cveID := cve.Metadata.CVEID
41+
err = os.MkdirAll(outDir, 0755)
42+
if err != nil {
43+
logger.Warn("Failed to create dir", slog.Any("err", err))
44+
}
45+
// create the files
46+
47+
osvFile, errCVE := cvelist2osv.CreateOSVFile(cveID, outDir)
48+
metricsFile, errMetrics := cvelist2osv.CreateMetricsFile(cveID, outDir)
49+
if errCVE != nil || errMetrics != nil {
50+
logger.Fatal("File failed to be created for CVE", slog.String("cve", string(cveID)))
51+
}
52+
3653
// Perform the conversion and export the results.
37-
if err = cvelist2osv.ConvertAndExportCVEToOSV(cve, *outDir); err != nil {
38-
logger.Warn("Failed to generate an OSV record", slog.String("cve", string(cve.Metadata.CVEID)), slog.Any("err", err))
54+
if err = cvelist2osv.ConvertAndExportCVEToOSV(cve, osvFile, metricsFile); err != nil {
55+
logger.Warn("Failed to generate an OSV record", slog.String("cve", string(cveID)), slog.Any("err", err))
56+
} else {
57+
logger.Info("Generated OSV record for "+string(cveID), slog.String("cve", string(cveID)), slog.String("cna", cve.Metadata.AssignerShortName))
3958
}
59+
60+
metricsFile.Close()
61+
osvFile.Close()
4062
}

0 commit comments

Comments
 (0)