Plugins: StaticFS should implement FSRemover (#110706) (#110944)

make staticfs implement fs removal interface
This commit is contained in:
Will Browne
2025-09-11 14:44:29 +01:00
committed by GitHub
parent 8b83e016ec
commit 4bd77ff7bb
6 changed files with 406 additions and 1 deletions
@@ -2,6 +2,7 @@ package sources
import (
"errors"
"os"
"path/filepath"
"testing"
@@ -110,3 +111,32 @@ func TestDirAsLocalSources(t *testing.T) {
})
}
}
func TestLocalSource(t *testing.T) {
t.Run("NewLocalSource should always return plugins with StaticFS", func(t *testing.T) {
tmpDir := t.TempDir()
pluginID := "test-plugin"
pluginDir := filepath.Join(tmpDir, pluginID)
err := os.MkdirAll(pluginDir, 0750)
require.NoError(t, err)
pluginJSON := `{
"id": "test-plugin",
"name": "Test Plugin",
"type": "datasource",
"info": {
"version": "1.0.0"
}
}`
err = os.WriteFile(filepath.Join(pluginDir, "plugin.json"), []byte(pluginJSON), 0644)
require.NoError(t, err)
bundles, err := NewLocalSource(plugins.ClassExternal, []string{pluginDir}).Discover(t.Context())
require.NoError(t, err)
require.Len(t, bundles, 1, "Should discover exactly one plugin")
require.Equal(t, pluginID, bundles[0].Primary.JSONData.ID)
_, canRemove := bundles[0].Primary.FS.(plugins.FSRemover)
require.True(t, canRemove)
})
}