• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang plugin.PanelManager类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/evergreen-ci/evergreen/plugin.PanelManager的典型用法代码示例。如果您正苦于以下问题:Golang PanelManager类的具体用法?Golang PanelManager怎么用?Golang PanelManager使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了PanelManager类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: TestUIDataInjection

func TestUIDataInjection(t *testing.T) {
	var ppm plugin.PanelManager

	Convey("With a simple plugin panel manager", t, func() {
		ppm = &plugin.SimplePanelManager{}

		Convey("and a registered set of test plugins with injection needs", func() {
			funcPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "combine",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(ctx plugin.UIContext) (interface{}, error) {
									return ctx.Task.Id + ctx.Build.Id + ctx.Version.Id, nil
								},
							},
						},
					},
				},
				&MockUIPlugin{
					NickName: "userhttpapiserver",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(ctx plugin.UIContext) (interface{}, error) {
									return fmt.Sprintf("%v.%[email protected]%v", ctx.User.Email, ctx.Settings.ApiUrl), nil
								},
							},
						},
					},
				},
			}
			err := ppm.RegisterPlugins(funcPlugins)
			So(err, ShouldBeNil)
		})
	})
}
开发者ID:amidvidy,项目名称:evergreen,代码行数:42,代码来源:plugin_ui_test.go


示例2: getPluginDataAndHTML

// getPluginDataAndHTML returns all data needed to properly render plugins
// for a page. It logs errors but does not return them, as plugin errors
// cannot stop the rendering of the rest of the page
func getPluginDataAndHTML(pluginManager plugin.PanelManager, page plugin.PageScope, ctx plugin.UIContext) pluginData {
	includes, err := pluginManager.Includes(page)
	if err != nil {
		evergreen.Logger.Errorf(
			slogger.ERROR, "error getting include html from plugin manager on %v page: %v",
			page, err)
	}

	panels, err := pluginManager.Panels(page)
	if err != nil {
		evergreen.Logger.Errorf(
			slogger.ERROR, "error getting panel html from plugin manager on %v page: %v",
			page, err)
	}

	data, err := pluginManager.UIData(ctx, page)
	if err != nil {
		evergreen.Logger.Errorf(slogger.ERROR, "error getting plugin data on %v page: %v",
			page, err)
	}

	return pluginData{includes, panels, data}
}
开发者ID:markbenvenuto,项目名称:evergreen,代码行数:26,代码来源:models.go


示例3: TestPanelManagerRegistration

func TestPanelManagerRegistration(t *testing.T) {
	var ppm plugin.PanelManager
	Convey("With a simple plugin panel manager", t, func() {
		ppm = &plugin.SimplePanelManager{}

		Convey("and a registered set of test plugins without panels", func() {
			uselessPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "no_ui_config",
					Conf:     nil,
				},
				&MockUIPlugin{
					NickName: "config_with_no_panels",
					Conf: &plugin.PanelConfig{
						StaticRoot: "wooo",
					},
				},
			}
			err := ppm.RegisterPlugins(uselessPlugins)
			So(err, ShouldBeNil)

			Convey("no ui panel data should be returned for any scope", func() {
				data, err := ppm.UIData(plugin.UIContext{}, plugin.TaskPage)
				So(err, ShouldBeNil)
				So(data["no_ui_config"], ShouldBeNil)
				So(data["config_with_no_panels"], ShouldBeNil)
				data, err = ppm.UIData(plugin.UIContext{}, plugin.BuildPage)
				So(err, ShouldBeNil)
				So(data["no_ui_config"], ShouldBeNil)
				So(data["config_with_no_panels"], ShouldBeNil)
				data, err = ppm.UIData(plugin.UIContext{}, plugin.VersionPage)
				So(err, ShouldBeNil)
				So(data["no_ui_config"], ShouldBeNil)
				So(data["config_with_no_panels"], ShouldBeNil)
			})
		})

		Convey("registering a plugin panel with no page should fail", func() {
			badPanelPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "bad_panel",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{PanelHTML: "<marquee> PANEL </marquee>"},
						},
					},
				},
			}
			err := ppm.RegisterPlugins(badPanelPlugins)
			So(err, ShouldNotBeNil)
			So(err.Error(), ShouldContainSubstring, "Page")
		})

		Convey("registering the same plugin name twice should fail", func() {
			conflictingPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "a",
					Conf:     nil,
				},
				&MockUIPlugin{
					NickName: "a",
					Conf: &plugin.PanelConfig{
						StaticRoot: "root",
					},
				},
			}
			err := ppm.RegisterPlugins(conflictingPlugins)
			So(err, ShouldNotBeNil)
			So(err.Error(), ShouldContainSubstring, "already")
		})

		Convey("registering more than one data function to the same page "+
			"for the same plugin should fail", func() {
			dataPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "data_function_fan",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page: plugin.TaskPage,
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return 100, nil
								}},
							{
								Page: plugin.TaskPage,
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return nil, fmt.Errorf("this function just errors")
								}},
						},
					},
				},
			}
			err := ppm.RegisterPlugins(dataPlugins)
			So(err, ShouldNotBeNil)
			So(err.Error(), ShouldContainSubstring, "function is already registered")
		})
	})
}
开发者ID:amidvidy,项目名称:evergreen,代码行数:98,代码来源:plugin_ui_test.go


示例4: TestPluginUIDataFunctionErrorHandling

func TestPluginUIDataFunctionErrorHandling(t *testing.T) {
	var ppm plugin.PanelManager

	Convey("With a simple plugin panel manager", t, func() {
		ppm = &plugin.SimplePanelManager{}

		Convey("and a set of plugins, some with erroring data functions", func() {
			errorPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "error1",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return nil, fmt.Errorf("Error #1")
								},
							},
						},
					},
				},
				&MockUIPlugin{
					NickName: "error2",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return nil, fmt.Errorf("Error #2")
								},
							},
						},
					},
				},
				&MockUIPlugin{
					NickName: "error3 not found",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(_ plugin.UIContext) (interface{}, error) {
									return nil, fmt.Errorf("Error")
								},
							},
						},
					},
				},
				&MockUIPlugin{
					NickName: "good",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(_ plugin.UIContext) (interface{}, error) {
									return "fine", nil
								},
							},
						},
					},
				},
			}
			err := ppm.RegisterPlugins(errorPlugins)
			So(err, ShouldBeNil)
			data, err := ppm.UIData(plugin.UIContext{}, plugin.TaskPage)
			So(err, ShouldNotBeNil)

			Convey("non-broken functions should succeed", func() {
				So(data["good"], ShouldEqual, "fine")
			})

			Convey("and reasonable error messages should be produced for failures", func() {
				So(err.Error(), ShouldContainSubstring, "error1")
				So(err.Error(), ShouldContainSubstring, "Error #1")
				So(err.Error(), ShouldContainSubstring, "error2")
				So(err.Error(), ShouldContainSubstring, "Error #2")
				So(err.Error(), ShouldContainSubstring, "error3")
			})
		})
		Convey("and a plugin that panics", func() {
			errorPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "busted",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								DataFunc: func(_ plugin.UIContext) (interface{}, error) {
									panic("BOOM")
									return "like perfection I am unreachable", nil
								},
							},
						},
					},
				},
				&MockUIPlugin{
//.........这里部分代码省略.........
开发者ID:amidvidy,项目名称:evergreen,代码行数:101,代码来源:plugin_ui_test.go


示例5: TestPanelManagerRetrieval

func TestPanelManagerRetrieval(t *testing.T) {
	var ppm plugin.PanelManager

	Convey("With a simple plugin panel manager", t, func() {
		ppm = &plugin.SimplePanelManager{}

		Convey("and a registered set of test plugins with panels", func() {
			// These 3 plugins exist to check the sort output of the manager.
			// For consistency, plugin panels and includes are ordered by plugin name
			// and then by the order of their declaration in the Panels array.
			// This test asserts that the panels in A come before B which come
			// before C, even though they are not in the plugin array in that order.
			testPlugins := []plugin.Plugin{
				&MockUIPlugin{
					NickName: "A_the_first_letter",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								Includes: []template.HTML{
									"0",
									"1",
								},
								PanelHTML: "0",
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return 1000, nil
								},
							},
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								Includes: []template.HTML{
									"2",
									"3",
								},
								PanelHTML: "1",
							},
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageLeft,
								Includes: []template.HTML{
									"4",
								},
								PanelHTML: "X",
							},
						},
					},
				},
				&MockUIPlugin{
					NickName: "C_the_third_letter",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								Includes: []template.HTML{
									"7",
									"8",
								},
								PanelHTML: "3",
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return 2112, nil
								},
							},
						},
					},
				},
				&MockUIPlugin{
					NickName: "B_the_middle_letter",
					Conf: &plugin.PanelConfig{
						Panels: []plugin.UIPanel{
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageCenter,
								Includes: []template.HTML{
									"5",
								},
								PanelHTML: "2",
								DataFunc: func(context plugin.UIContext) (interface{}, error) {
									return 1776, nil
								},
							},
							{
								Page:     plugin.TaskPage,
								Position: plugin.PageLeft,
								Includes: []template.HTML{
									"6",
								},
								PanelHTML: "Z",
							},
						},
					},
				},
			}

			err := ppm.RegisterPlugins(testPlugins)
			So(err, ShouldBeNil)

			Convey("retrieved includes for the task page should be in correct "+
//.........这里部分代码省略.........
开发者ID:amidvidy,项目名称:evergreen,代码行数:101,代码来源:plugin_ui_test.go



注:本文中的github.com/evergreen-ci/evergreen/plugin.PanelManager类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang plugin.PluginCommunicator类代码示例发布时间:2022-05-23
下一篇:
Golang plugin.Logger类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap