github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/os/debian/debian_test.go (about) 1 package debian 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/devseccon/trivy/pkg/fanal/analyzer" 12 "github.com/devseccon/trivy/pkg/fanal/types" 13 ) 14 15 func Test_debianOSAnalyzer_Analyze(t *testing.T) { 16 tests := []struct { 17 name string 18 inputFile string 19 want *analyzer.AnalysisResult 20 wantErr string 21 }{ 22 { 23 name: "happy path with debian 9", 24 inputFile: "testdata/debian_9/etc/debian_version", 25 want: &analyzer.AnalysisResult{ 26 OS: types.OS{ 27 Family: types.Debian, 28 Name: "9.8", 29 }, 30 }, 31 }, 32 { 33 name: "happy path with debian sid", 34 inputFile: "testdata/debian_sid/etc/debian_version", 35 want: &analyzer.AnalysisResult{ 36 OS: types.OS{ 37 Family: types.Debian, 38 Name: "buster/sid", 39 }, 40 }, 41 }, 42 { 43 name: "sad path with empty file", 44 inputFile: "testdata/empty", 45 wantErr: "debian: unable to analyze OS information", 46 }, 47 } 48 for _, tt := range tests { 49 t.Run(tt.name, func(t *testing.T) { 50 a := debianOSAnalyzer{} 51 f, err := os.Open(tt.inputFile) 52 require.NoError(t, err) 53 defer f.Close() 54 55 ctx := context.Background() 56 57 got, err := a.Analyze(ctx, analyzer.AnalysisInput{ 58 FilePath: "etc/debian_version", 59 Content: f, 60 }) 61 if tt.wantErr != "" { 62 require.NotNil(t, err) 63 assert.Contains(t, err.Error(), tt.wantErr) 64 return 65 } else { 66 require.NoError(t, err) 67 } 68 assert.Equal(t, tt.want, got) 69 }) 70 } 71 }