Skip to content

Commit 2ae4aed

Browse files
committed
cmd/vulnreport: embed test files
Change-Id: I2828b15f925e6d4d66c799517c80150936b37838 Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/599175 Reviewed-by: Damien Neil <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent bca6ae2 commit 2ae4aed

File tree

6 files changed

+41
-40
lines changed

6 files changed

+41
-40
lines changed

cmd/vulnreport/find_aliases.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,8 @@ type memGC struct {
174174
ghsas map[string]ghsa.SecurityAdvisory
175175
}
176176

177-
func newMemGC(archive string) (*memGC, error) {
178-
ar, err := txtar.ParseFile(archive)
179-
if err != nil {
180-
return nil, err
181-
}
177+
func newMemGC(archive []byte) (*memGC, error) {
178+
ar := txtar.Parse(archive)
182179
m := &memGC{
183180
ghsas: make(map[string]ghsa.SecurityAdvisory),
184181
}

cmd/vulnreport/issue_client.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,8 @@ type memIC struct {
2929
is map[int]issues.Issue
3030
}
3131

32-
func newMemIC(archive string) (*memIC, error) {
33-
ar, err := txtar.ParseFile(archive)
34-
if err != nil {
35-
return nil, err
36-
}
32+
func newMemIC(archive []byte) (*memIC, error) {
33+
ar := txtar.Parse(archive)
3734
m := &memIC{
3835
is: make(map[int]issues.Issue),
3936
}

cmd/vulnreport/priority/load.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
_ "embed"
1111
"encoding/csv"
1212
"io"
13-
"os"
1413
"strconv"
1514
)
1615

@@ -26,10 +25,10 @@ func gzCSVToMap(b []byte) (map[string]int, error) {
2625
if err != nil {
2726
return nil, err
2827
}
29-
return csvToMap(gzr)
28+
return CSVToMap(gzr)
3029
}
3130

32-
func csvToMap(r io.Reader) (map[string]int, error) {
31+
func CSVToMap(r io.Reader) (map[string]int, error) {
3332
reader := csv.NewReader(r)
3433
records, err := reader.ReadAll()
3534
if err != nil {
@@ -50,12 +49,3 @@ func csvToMap(r io.Reader) (map[string]int, error) {
5049

5150
return m, nil
5251
}
53-
54-
func CSVToMap(fname string) (map[string]int, error) {
55-
r, err := os.Open(fname)
56-
if err != nil {
57-
return nil, err
58-
}
59-
defer r.Close()
60-
return csvToMap(r)
61-
}

cmd/vulnreport/run_test.go

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package main
77
import (
88
"bytes"
99
"context"
10+
_ "embed"
1011
"flag"
1112
"fmt"
1213
"io/fs"
@@ -48,52 +49,59 @@ func (m *memWFS) WriteFile(fname string, b []byte) error {
4849
m.written[fname] = b
4950
return nil
5051
}
51-
5252
func testFilename(t *testing.T) string {
5353
return filepath.Join("testdata", t.Name()+".txtar")
5454
}
5555

56-
// TODO(tatianabradley): embed these test files.
57-
const (
58-
testRepoFile = "testdata/repo.txtar"
59-
testIssueTracker = "testdata/issue_tracker.txtar"
60-
testLegacyGHSAs = "testdata/legacy_ghsas.txtar"
61-
testModuleMap = "testdata/modules.csv"
56+
var (
57+
//go:embed testdata/repo.txtar
58+
testRepo []byte
59+
//go:embed testdata/issue_tracker.txtar
60+
testIssueTracker []byte
61+
//go:embed testdata/legacy_ghsas.txtar
62+
testLegacyGHSAs []byte
63+
//go:embed testdata/modules.csv
64+
testModuleMap []byte
6265
)
6366

6467
// runTest runs the command on the test case in the default test environment.
6568
func runTest(t *testing.T, cmd command, tc *testCase) {
6669
runTestWithEnv(t, cmd, tc, func(t *testing.T) (*environment, error) {
67-
return newTestEnv(t, testRepoFile, testIssueTracker, testLegacyGHSAs, testModuleMap)
70+
return newDefaultTestEnv(t)
6871
})
6972
}
7073

7174
var testTime = time.Date(2022, 1, 1, 0, 0, 0, 0, time.UTC)
7275

73-
func newTestEnv(t *testing.T, reportRepoFile, issueTracker, legacyGHSAs, testModuleMap string) (*environment, error) {
76+
func newDefaultTestEnv(t *testing.T) (*environment, error) {
7477
t.Helper()
7578

76-
repo, err := gitrepo.ReadTxtarRepo(reportRepoFile, testTime)
79+
ar := txtar.Parse(testRepo)
80+
repo, err := gitrepo.FromTxtarArchive(ar, testTime)
7781
if err != nil {
7882
return nil, err
7983
}
80-
fsys, err := test.ReadTxtarFS(reportRepoFile)
84+
fsys, err := test.TxtarArchiveToFS(ar)
8185
if err != nil {
8286
return nil, err
8387
}
88+
8489
pc, err := proxy.NewTestClient(t, *realProxy)
8590
if err != nil {
8691
return nil, err
8792
}
88-
ic, err := newMemIC(issueTracker)
93+
94+
ic, err := newMemIC(testIssueTracker)
8995
if err != nil {
9096
return nil, err
9197
}
92-
gc, err := newMemGC(legacyGHSAs)
98+
99+
gc, err := newMemGC(testLegacyGHSAs)
93100
if err != nil {
94101
return nil, err
95102
}
96-
mm, err := priority.CSVToMap(testModuleMap)
103+
104+
mm, err := priority.CSVToMap(bytes.NewReader(testModuleMap))
97105
if err != nil {
98106
return nil, err
99107
}

internal/gitrepo/gitrepo.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,18 @@ func HeadCommit(repo *git.Repository) (*object.Commit, error) {
138138
// ReadTxtarRepo converts a txtar file to a single-commit
139139
// repo. It is intended for testing.
140140
func ReadTxtarRepo(filename string, now time.Time) (_ *git.Repository, err error) {
141-
defer derrors.Wrap(&err, "readTxtarRepo(%q)", filename)
141+
defer derrors.Wrap(&err, "ReadTxtarRepo(%q)", filename)
142142

143-
mfs := memfs.New()
144143
ar, err := txtar.ParseFile(filename)
145144
if err != nil {
146145
return nil, err
147146
}
147+
148+
return FromTxtarArchive(ar, now)
149+
}
150+
151+
func FromTxtarArchive(ar *txtar.Archive, now time.Time) (_ *git.Repository, err error) {
152+
mfs := memfs.New()
148153
for _, f := range ar.Files {
149154
file, err := mfs.Create(f.Name)
150155
if err != nil {

internal/test/txtar.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,16 @@ func FindFile(ar *txtar.Archive, filename string) (*txtar.File, error) {
102102
}
103103

104104
func ReadTxtarFS(filename string) (fs.FS, error) {
105-
a, err := txtar.ParseFile(filename)
105+
ar, err := txtar.ParseFile(filename)
106106
if err != nil {
107107
return nil, err
108108
}
109+
return TxtarArchiveToFS(ar)
110+
}
111+
112+
func TxtarArchiveToFS(ar *txtar.Archive) (fs.FS, error) {
109113
m := make(fstest.MapFS)
110-
for _, a := range a.Files {
114+
for _, a := range ar.Files {
111115
m[a.Name] = &fstest.MapFile{Data: a.Data}
112116
}
113117
return m, nil

0 commit comments

Comments
 (0)