* fix: skip dotfiles and directories in plugin loading (#811) Signed-off-by: eternal-flame-AD <yume@yumechi.jp> * fixup! fix: skip dotfiles and directories in plugin loading (#811) --------- Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
This commit is contained in:
parent
c1cb2e855a
commit
bfcd1cb037
|
|
@ -226,19 +226,28 @@ func (m *Manager) loadPlugins(directory string) error {
|
||||||
return fmt.Errorf("error while reading directory %s", err)
|
return fmt.Errorf("error while reading directory %s", err)
|
||||||
}
|
}
|
||||||
for _, f := range pluginFiles {
|
for _, f := range pluginFiles {
|
||||||
pluginPath := filepath.Join(directory, "./", f.Name())
|
if f.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
name := f.Name()
|
||||||
|
if strings.HasPrefix(name, ".") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
pluginPath := filepath.Join(directory, "./", name)
|
||||||
|
|
||||||
fmt.Println("Loading plugin", pluginPath)
|
fmt.Println("Loading plugin", pluginPath)
|
||||||
pRaw, err := plugin.Open(pluginPath)
|
pRaw, err := plugin.Open(pluginPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pluginFileLoadError{f.Name(), err}
|
return pluginFileLoadError{name, err}
|
||||||
}
|
}
|
||||||
compatPlugin, err := compat.Wrap(pRaw)
|
compatPlugin, err := compat.Wrap(pRaw)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pluginFileLoadError{f.Name(), err}
|
return pluginFileLoadError{name, err}
|
||||||
}
|
}
|
||||||
if err := m.LoadPlugin(compatPlugin); err != nil {
|
if err := m.LoadPlugin(compatPlugin); err != nil {
|
||||||
return pluginFileLoadError{f.Name(), err}
|
return pluginFileLoadError{name, err}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,24 @@ func (s *ManagerSuite) TestInitializePlugin_noOpIfEmpty() {
|
||||||
assert.Nil(s.T(), s.manager.loadPlugins(""))
|
assert.Nil(s.T(), s.manager.loadPlugins(""))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ManagerSuite) TestInitializePlugin_noOpIfDotFile() {
|
||||||
|
tmpDir := test.NewTmpDir("gotify_testinitializeplugin_dotfile")
|
||||||
|
defer tmpDir.Clean()
|
||||||
|
f, err := os.Create(tmpDir.Path(".test"))
|
||||||
|
assert.NoError(s.T(), err)
|
||||||
|
_, err = f.WriteString("dummy")
|
||||||
|
assert.NoError(s.T(), err)
|
||||||
|
assert.NoError(s.T(), f.Close())
|
||||||
|
assert.Nil(s.T(), s.manager.loadPlugins(tmpDir.Path()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ManagerSuite) TestInitializePlugin_noOpIfSubDir() {
|
||||||
|
tmpDir := test.NewTmpDir("gotify_testinitializeplugin_subdir")
|
||||||
|
defer tmpDir.Clean()
|
||||||
|
os.Mkdir(tmpDir.Path("subdir"), 0o755)
|
||||||
|
assert.Nil(s.T(), s.manager.loadPlugins(tmpDir.Path()))
|
||||||
|
}
|
||||||
|
|
||||||
func (s *ManagerSuite) TestInitializePlugin_directoryInvalid_expectError() {
|
func (s *ManagerSuite) TestInitializePlugin_directoryInvalid_expectError() {
|
||||||
assert.Error(s.T(), s.manager.loadPlugins("<<"))
|
assert.Error(s.T(), s.manager.loadPlugins("<<"))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue