Plugins: Skip angular check for CDN source (#113163)
This commit is contained in:
@@ -35,6 +35,11 @@ func NewPatternListInspector(detectorsProvider angulardetector.DetectorsProvider
|
||||
}
|
||||
|
||||
func (i *PatternsListInspector) Inspect(ctx context.Context, p *plugins.Plugin) (isAngular bool, err error) {
|
||||
// CDN plugins are ignored because they should not be using Angular
|
||||
if p.Class == plugins.ClassCDN {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
f, err := p.FS.Open("module.js")
|
||||
if err != nil {
|
||||
if errors.Is(err, plugins.ErrFileNotExist) {
|
||||
|
||||
@@ -27,17 +27,17 @@ func (d *fakeDetector) String() string {
|
||||
}
|
||||
|
||||
func TestPatternsListInspector(t *testing.T) {
|
||||
plugin := &plugins.Plugin{
|
||||
FS: plugins.NewInMemoryFS(map[string][]byte{"module.js": nil}),
|
||||
}
|
||||
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
plugin *plugins.Plugin
|
||||
fakeDetectors []*fakeDetector
|
||||
exp func(t *testing.T, r bool, err error, fakeDetectors []*fakeDetector)
|
||||
}{
|
||||
{
|
||||
name: "calls the detectors in sequence until true is returned",
|
||||
plugin: &plugins.Plugin{
|
||||
FS: plugins.NewInMemoryFS(map[string][]byte{"module.js": nil}),
|
||||
},
|
||||
fakeDetectors: []*fakeDetector{
|
||||
{returns: false},
|
||||
{returns: true},
|
||||
@@ -53,6 +53,9 @@ func TestPatternsListInspector(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "calls the detectors in sequence and returns false as default",
|
||||
plugin: &plugins.Plugin{
|
||||
FS: plugins.NewInMemoryFS(map[string][]byte{"module.js": nil}),
|
||||
},
|
||||
fakeDetectors: []*fakeDetector{
|
||||
{returns: false},
|
||||
{returns: false},
|
||||
@@ -65,13 +68,30 @@ func TestPatternsListInspector(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "empty detectors should return false",
|
||||
name: "empty detectors should return false",
|
||||
plugin: &plugins.Plugin{
|
||||
FS: plugins.NewInMemoryFS(map[string][]byte{"module.js": nil}),
|
||||
},
|
||||
fakeDetectors: nil,
|
||||
exp: func(t *testing.T, r bool, err error, fakeDetectors []*fakeDetector) {
|
||||
require.NoError(t, err)
|
||||
require.False(t, r, "inspector should return false")
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "CDN plugins return false without calling detectors",
|
||||
plugin: &plugins.Plugin{
|
||||
Class: plugins.ClassCDN,
|
||||
},
|
||||
fakeDetectors: []*fakeDetector{
|
||||
{returns: true},
|
||||
},
|
||||
exp: func(t *testing.T, r bool, err error, fakeDetectors []*fakeDetector) {
|
||||
require.NoError(t, err)
|
||||
require.False(t, r, "inspector should return false for CDN plugins")
|
||||
require.Equal(t, 0, fakeDetectors[0].calls, "detectors should not be called for CDN plugins")
|
||||
},
|
||||
},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
detectors := make([]angulardetector.AngularDetector, 0, len(tc.fakeDetectors))
|
||||
@@ -79,7 +99,7 @@ func TestPatternsListInspector(t *testing.T) {
|
||||
detectors = append(detectors, angulardetector.AngularDetector(d))
|
||||
}
|
||||
inspector := NewPatternListInspector(&angulardetector.StaticDetectorsProvider{Detectors: detectors})
|
||||
r, err := inspector.Inspect(context.Background(), plugin)
|
||||
r, err := inspector.Inspect(context.Background(), tc.plugin)
|
||||
tc.exp(t, r, err, tc.fakeDetectors)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user