From d53c84d5366bba0e1570696c643cd8cf96e88cad Mon Sep 17 00:00:00 2001 From: tangenta Date: Sun, 13 Mar 2022 13:46:31 +0800 Subject: [PATCH 1/3] tools/check/ut: support pattern matching on test names --- tools/check/ut.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/check/ut.go b/tools/check/ut.go index 5e47cf13c1866..6511136af839b 100644 --- a/tools/check/ut.go +++ b/tools/check/ut.go @@ -24,6 +24,7 @@ import ( "os" "os/exec" "path" + "regexp" "runtime" "sort" "strings" @@ -252,7 +253,11 @@ func cmdRun(args ...string) bool { // filter the test case to run tmp := tasks[:0] for _, task := range tasks { - if strings.Contains(task.test, args[1]) { + r, err := regexp.Compile(args[1]) + if err != nil { + fmt.Println("regex error", err) + } + if r.MatchString(task.test) { tmp = append(tmp, task) } } From 0dae2048386d08433d07789ea1621487522d5806 Mon Sep 17 00:00:00 2001 From: tangenta Date: Sun, 13 Mar 2022 14:07:29 +0800 Subject: [PATCH 2/3] support list tests pattern match --- tools/check/ut.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/check/ut.go b/tools/check/ut.go index 6511136af839b..3872d1c53bb29 100644 --- a/tools/check/ut.go +++ b/tools/check/ut.go @@ -102,7 +102,7 @@ func cmdList(args ...string) bool { } // list test case of a single package - if len(args) == 1 { + if len(args) == 1 || len(args) == 2 { pkg := args[0] pkgs = filter(pkgs, func(s string) bool { return s == pkg }) if len(pkgs) != 1 { @@ -130,8 +130,22 @@ func cmdList(args ...string) bool { fmt.Println("list test cases for package error", err) return false } + if len(args) == 1 { + // List all the tests. + for _, x := range res { + fmt.Println(x.test) + } + return true + } + regEx, err := regexp.Compile(args[1]) + if err != nil { + fmt.Println("list test cases regex error", err) + return false + } for _, x := range res { - fmt.Println(x.test) + if regEx.MatchString(x.test) { + fmt.Println(x.test) + } } } return true From c33e70fb59c062d93ab5b7523bfa7fd658702df4 Mon Sep 17 00:00:00 2001 From: tangenta Date: Mon, 21 Mar 2022 10:38:43 +0800 Subject: [PATCH 3/3] ddl: use prefix 'r:' for pattern matching --- tools/check/ut.go | 65 ++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/tools/check/ut.go b/tools/check/ut.go index 3872d1c53bb29..4f8bab7d8cce3 100644 --- a/tools/check/ut.go +++ b/tools/check/ut.go @@ -49,6 +49,9 @@ ut list // list test cases of a single package ut list $package +// list test cases that match a pattern +ut list $package 'r:$regex' + // run all tests ut run @@ -58,6 +61,9 @@ ut run $package // run test cases of a single package ut run $package $test +// run test cases that match a pattern +ut run $package 'r:$regex' + // build all test package ut build @@ -130,22 +136,17 @@ func cmdList(args ...string) bool { fmt.Println("list test cases for package error", err) return false } - if len(args) == 1 { - // List all the tests. - for _, x := range res { - fmt.Println(x.test) + + if len(args) == 2 { + res, err = filterTestCases(res, args[1]) + if err != nil { + fmt.Println("filter test cases error", err) + return false } - return true - } - regEx, err := regexp.Compile(args[1]) - if err != nil { - fmt.Println("list test cases regex error", err) - return false } + for _, x := range res { - if regEx.MatchString(x.test) { - fmt.Println(x.test) - } + fmt.Println(x.test) } } return true @@ -264,18 +265,11 @@ func cmdRun(args ...string) bool { fmt.Println("list test cases error", err) return false } - // filter the test case to run - tmp := tasks[:0] - for _, task := range tasks { - r, err := regexp.Compile(args[1]) - if err != nil { - fmt.Println("regex error", err) - } - if r.MatchString(task.test) { - tmp = append(tmp, task) - } + tasks, err = filterTestCases(tasks, args[1]) + if err != nil { + fmt.Println("filter test cases error", err) + return false } - tasks = tmp } if except != "" { @@ -627,6 +621,29 @@ func listTestCases(pkg string, tasks []task) ([]task, error) { return tasks, nil } +func filterTestCases(tasks []task, arg1 string) ([]task, error) { + if strings.HasPrefix(arg1, "r:") { + r, err := regexp.Compile(arg1[2:]) + if err != nil { + return nil, err + } + tmp := tasks[:0] + for _, task := range tasks { + if r.MatchString(task.test) { + tmp = append(tmp, task) + } + } + return tmp, nil + } + tmp := tasks[:0] + for _, task := range tasks { + if strings.Contains(task.test, arg1) { + tmp = append(tmp, task) + } + } + return tmp, nil +} + func listPackages() ([]string, error) { cmd := exec.Command("go", "list", "./...") ss, err := cmdToLines(cmd)