diff --git a/pkg/plugins/frontend_plugin.go b/pkg/plugins/frontend_plugin.go index 8db480f947d..90c18d90044 100644 --- a/pkg/plugins/frontend_plugin.go +++ b/pkg/plugins/frontend_plugin.go @@ -40,7 +40,7 @@ func getPluginLogoUrl(pluginType, path, baseUrl string) string { } func (fp *FrontendPluginBase) setPathsBasedOnApp(app *AppPlugin) { - appSubPath := strings.Replace(fp.PluginDir, app.PluginDir, "", 1) + appSubPath := strings.Replace(strings.Replace(fp.PluginDir, app.PluginDir, "", 1), "\\", "/", 1) fp.IncludedInAppId = app.Id fp.BaseUrl = app.BaseUrl diff --git a/pkg/plugins/frontend_plugin_test.go b/pkg/plugins/frontend_plugin_test.go new file mode 100644 index 00000000000..304cd38deae --- /dev/null +++ b/pkg/plugins/frontend_plugin_test.go @@ -0,0 +1,34 @@ +package plugins + +import ( + "testing" + + "github.com/grafana/grafana/pkg/setting" + . "github.com/smartystreets/goconvey/convey" +) + +func TestFrontendPlugin(t *testing.T) { + + Convey("When setting paths based on App on Windows", t, func() { + setting.StaticRootPath = "c:\\grafana\\public" + + fp := &FrontendPluginBase{ + PluginBase: PluginBase{ + PluginDir: "c:\\grafana\\public\\app\\plugins\\app\\testdata\\datasource", + BaseUrl: "fpbase", + }, + } + app := &AppPlugin{ + FrontendPluginBase: FrontendPluginBase{ + PluginBase: PluginBase{ + PluginDir: "c:\\grafana\\public\\app\\plugins\\app\\testdata", + Id: "testdata", + BaseUrl: "public/app/plugins/app/testdata", + }, + }, + } + fp.setPathsBasedOnApp(app) + + So(fp.Module, ShouldEqual, "app/plugins/app/testdata/datasource/module") + }) +}