From a1b5e554da2d18ddf47a9096d0caefa5b892ee09 Mon Sep 17 00:00:00 2001 From: xucong053 Date: Tue, 31 May 2022 20:11:27 +0800 Subject: [PATCH 1/2] fix: failed to regenerate .debugtalk_gen.py correctly --- hrp/build.go | 16 +++------------- hrp/plugin.go | 21 +++++++++++++-------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/hrp/build.go b/hrp/build.go index beeafd90..4c5cb940 100644 --- a/hrp/build.go +++ b/hrp/build.go @@ -155,7 +155,7 @@ func (t *TemplateContent) parsePyContent(path string) error { } func (t *TemplateContent) genDebugTalk(path string, templ string) error { - file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0o666) + file, err := os.Create(path) if err != nil { log.Error().Err(err).Msg("open file failed") return err @@ -262,7 +262,7 @@ func buildPy(path string, output string) error { return err } - // generate debugtalk.py + // generate .debugtalk_gen.py if output == "" { dir, _ := os.Getwd() output = filepath.Join(dir, PluginPySourceGenFile) @@ -270,17 +270,7 @@ func buildPy(path string, output string) error { output = filepath.Join(output, PluginPySourceGenFile) } err = templateContent.genDebugTalk(output, pyTemplate) - if err != nil { - return err - } - - // ensure funppy in .env - _, err = builtin.EnsurePython3Venv("funppy") - if err != nil { - return err - } - - return nil + return err } func BuildPlugin(path string, output string) (err error) { diff --git a/hrp/plugin.go b/hrp/plugin.go index facb09ef..5053b2e5 100644 --- a/hrp/plugin.go +++ b/hrp/plugin.go @@ -5,6 +5,7 @@ import ( "os" "os/signal" "path/filepath" + "strings" "syscall" "github.com/httprunner/funplugin" @@ -34,6 +35,17 @@ func initPlugin(path string, logOn bool) (plugin funplugin.IPlugin, err error) { return nil, nil } + if strings.HasSuffix(pluginPath, ".py") { + // register funppy plugin + genPyPluginPath := filepath.Join(filepath.Dir(pluginPath), PluginPySourceGenFile) + err = BuildPlugin(pluginPath, genPyPluginPath) + if err != nil { + log.Error().Err(err).Str("path", pluginPath).Msg("build plugin failed") + return nil, nil + } + pluginPath = genPyPluginPath + } + // found plugin file plugin, err = funplugin.Init(pluginPath, funplugin.WithLogOn(logOn)) if err != nil { @@ -73,14 +85,7 @@ func locatePlugin(path string) (pluginPath string, err error) { pluginPath, err = locateFile(path, PluginPySourceFile) if err == nil { - // register funppy plugin - genPyPluginPath := filepath.Join(filepath.Dir(pluginPath), PluginPySourceGenFile) - err = BuildPlugin(pluginPath, genPyPluginPath) - if err != nil { - log.Error().Err(err).Str("path", pluginPath).Msg("build plugin failed") - return - } - return genPyPluginPath, nil + return } pluginPath, err = locateFile(path, PluginGoBuiltFile) From aecbdb93672e23e5df96725f8be8166cbfb2bd3c Mon Sep 17 00:00:00 2001 From: xucong053 Date: Tue, 31 May 2022 20:47:59 +0800 Subject: [PATCH 2/2] update docs --- docs/CHANGELOG.md | 4 +- .../templates/plugin/.debugtalk_gen.py | 75 +++++++++++++++++++ .../templates/plugin/debugtalk_gen.go | 16 ++++ 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 hrp/internal/scaffold/templates/plugin/.debugtalk_gen.py create mode 100644 hrp/internal/scaffold/templates/plugin/debugtalk_gen.go diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index ae07bc3c..39922910 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,7 +2,9 @@ ## v4.1.1 (2022-05-31) - fix: failed to build debugtalk.go without go.mod -- fix: avoid to escape from html special characters like '&' +- fix: avoid to escape from html special characters like '&' in converted JSON testcase +- fix: display the full step name when referencing testcase in html report +- fix: failed to regenerate debugtalk_gen.go and .debugtalk_gen.py correctly ## v4.1.0 (2022-05-29) diff --git a/hrp/internal/scaffold/templates/plugin/.debugtalk_gen.py b/hrp/internal/scaffold/templates/plugin/.debugtalk_gen.py new file mode 100644 index 00000000..d3b72a66 --- /dev/null +++ b/hrp/internal/scaffold/templates/plugin/.debugtalk_gen.py @@ -0,0 +1,75 @@ +# NOTE: Generated By hrp v4.1.1, DO NOT EDIT! + +import logging +import time +import funppy + +from typing import List + + +def get_user_agent(): + return "hrp/funppy" + + +def sleep(n_secs): + time.sleep(n_secs) + + +def sum(*args): + result = 0 + for arg in args: + result += arg + return result + + +def sum_ints(*args: List[int]) -> int: + result = 0 + for arg in args: + result += arg + return result + + +def sum_two_int(a: int, b: int) -> int: + return a + b + + +def sum_two_string(a: str, b: str) -> str: + return a + b + + +def sum_strings(*args: List[str]) -> str: + result = "" + for arg in args: + result += arg + return result + + +def concatenate(*args: List[str]) -> str: + result = "" + for arg in args: + result += str(arg) + return result + + +def setup_hook_example(name): + logging.warning("setup_hook_example") + return f"setup_hook_example: {name}" + + +def teardown_hook_example(name): + logging.warning("teardown_hook_example") + return f"teardown_hook_example: {name}" + + +if __name__ == "__main__": + funppy.register("get_user_agent", get_user_agent) + funppy.register("sleep", sleep) + funppy.register("sum", sum) + funppy.register("sum_ints", sum_ints) + funppy.register("sum_two_int", sum_two_int) + funppy.register("sum_two_string", sum_two_string) + funppy.register("sum_strings", sum_strings) + funppy.register("concatenate", concatenate) + funppy.register("setup_hook_example", setup_hook_example) + funppy.register("teardown_hook_example", teardown_hook_example) + funppy.serve() diff --git a/hrp/internal/scaffold/templates/plugin/debugtalk_gen.go b/hrp/internal/scaffold/templates/plugin/debugtalk_gen.go new file mode 100644 index 00000000..a2339a42 --- /dev/null +++ b/hrp/internal/scaffold/templates/plugin/debugtalk_gen.go @@ -0,0 +1,16 @@ +// NOTE: Generated By hrp v4.1.1, DO NOT EDIT! +package main + +import ( + "github.com/httprunner/funplugin/fungo" +) + +func main() { + fungo.Register("SumTwoInt", SumTwoInt) + fungo.Register("SumInts", SumInts) + fungo.Register("Sum", Sum) + fungo.Register("SetupHookExample", SetupHookExample) + fungo.Register("TeardownHookExample", TeardownHookExample) + fungo.Register("GetUserAgent", GetUserAgent) + fungo.Serve() +}