Plugins: Optimize creation of Golang errors and slices (#69448)

* tidy up

* fix tests
This commit is contained in:
Will Browne
2023-06-07 17:22:43 +02:00
committed by GitHub
parent 8a8b5da1ee
commit 1fd4953833
13 changed files with 72 additions and 66 deletions
+5 -4
View File
@@ -44,8 +44,9 @@ func (l *Local) Find(ctx context.Context, src plugins.PluginSource) ([]*plugins.
return []*plugins.FoundBundle{}, nil
}
var pluginJSONPaths []string
for _, path := range src.PluginURIs(ctx) {
pluginURIs := src.PluginURIs(ctx)
pluginJSONPaths := make([]string, 0, len(pluginURIs))
for _, path := range pluginURIs {
exists, err := fs.Exists(path)
if err != nil {
l.log.Warn("Skipping finding plugins as an error occurred", "path", path, "err", err)
@@ -85,7 +86,7 @@ func (l *Local) Find(ctx context.Context, src plugins.PluginSource) ([]*plugins.
foundPlugins[filepath.Dir(pluginJSONAbsPath)] = plugin
}
var res = make(map[string]*plugins.FoundBundle)
res := make(map[string]*plugins.FoundBundle)
for pluginDir, data := range foundPlugins {
var pluginFs plugins.FS
pluginFs = plugins.NewLocalFS(pluginDir)
@@ -106,7 +107,7 @@ func (l *Local) Find(ctx context.Context, src plugins.PluginSource) ([]*plugins.
}
}
var result []*plugins.FoundBundle
result := make([]*plugins.FoundBundle, 0, len(foundPlugins))
for dir := range foundPlugins {
ancestors := strings.Split(dir, string(filepath.Separator))
ancestors = ancestors[0 : len(ancestors)-1]
@@ -3,7 +3,6 @@ package finder
import (
"context"
"errors"
"fmt"
"os"
"path/filepath"
"sort"
@@ -317,7 +316,7 @@ func TestFinder_getAbsPluginJSONPaths(t *testing.T) {
t.Run("When scanning a folder that returns a non-handled error should return that error", func(t *testing.T) {
origWalk := walk
walk = func(path string, followSymlinks, detectSymlinkInfiniteLoop bool, walkFn util.WalkFunc) error {
return walkFn(path, nil, fmt.Errorf("random error"))
return walkFn(path, nil, errors.New("random error"))
}
t.Cleanup(func() {
walk = origWalk
+4 -4
View File
@@ -81,7 +81,7 @@ func (l *Loader) Load(ctx context.Context, src plugins.PluginSource) ([]*plugins
// nolint:gocyclo
func (l *Loader) loadPlugins(ctx context.Context, src plugins.PluginSource, found []*plugins.FoundBundle) ([]*plugins.Plugin, error) {
var loadedPlugins []*plugins.Plugin
loadedPlugins := make([]*plugins.Plugin, 0, len(found))
for _, p := range found {
if _, exists := l.pluginRegistry.Plugin(ctx, p.Primary.JSONData.ID); exists {
@@ -129,7 +129,7 @@ func (l *Loader) loadPlugins(ctx context.Context, src plugins.PluginSource, foun
}
// validate signatures
verifiedPlugins := make([]*plugins.Plugin, 0)
verifiedPlugins := make([]*plugins.Plugin, 0, len(loadedPlugins))
for _, plugin := range loadedPlugins {
signingError := l.signatureValidator.Validate(plugin)
if signingError != nil {
@@ -180,7 +180,7 @@ func (l *Loader) loadPlugins(ctx context.Context, src plugins.PluginSource, foun
}
// initialize plugins
initializedPlugins := make([]*plugins.Plugin, 0)
initializedPlugins := make([]*plugins.Plugin, 0, len(verifiedPlugins))
for _, p := range verifiedPlugins {
// Detect angular for external plugins
if p.IsExternalPlugin() {
@@ -360,7 +360,7 @@ func defaultLogoPath(pluginType plugins.Type) string {
}
func (l *Loader) PluginErrors() []*plugins.Error {
errs := make([]*plugins.Error, 0)
errs := make([]*plugins.Error, 0, len(l.errs))
for _, err := range l.errs {
errs = append(errs, &plugins.Error{
PluginID: err.PluginID,
+2 -2
View File
@@ -2,7 +2,7 @@ package loader
import (
"context"
"fmt"
"errors"
"path/filepath"
"sort"
"testing"
@@ -1048,7 +1048,7 @@ func TestLoader_Load_SkipUninitializedPlugins(t *testing.T) {
procPrvdr.BackendFactoryFunc = func(ctx context.Context, p *plugins.Plugin) backendplugin.PluginFactoryFunc {
return func(pluginID string, _ log.Logger, _ []string) (backendplugin.Plugin, error) {
if pluginID == "test-datasource" {
return nil, fmt.Errorf("failed to initialize")
return nil, errors.New("failed to initialize")
}
return &fakes.FakePluginClient{}, nil
}