+ Сценарий: Добавление функции с параметрами: int
Этот коммит содержится в:
родитель
6f2a5fef98
коммит
4a15650887
5 изменённых файлов: 50 добавлений и 17 удалений
|
@ -34,8 +34,8 @@ func NewASTer() (*ASTer, error) {
|
|||
return a, nil
|
||||
}
|
||||
|
||||
func (a *ASTer) ДобавитьТестовуюФункцию(func_name string) error {
|
||||
return a.добавитьвФайлФункцию(func_name)
|
||||
func (a *ASTer) ДобавитьТестовуюФункцию(func_name string, params map[string]string) error {
|
||||
return a.добавитьвФайлФункцию(func_name, params)
|
||||
}
|
||||
|
||||
func (a *ASTer) найтиТестовыйФайл() error {
|
||||
|
@ -47,21 +47,21 @@ func (a *ASTer) сгенеритьИмяФайла() {
|
|||
a.fname = a.pkg + "_test.go"
|
||||
}
|
||||
|
||||
func (a *ASTer) добавитьвФайлФункцию(func_name string) error {
|
||||
err := a.спарситьФайлиДобавитьФункцию(func_name)
|
||||
func (a *ASTer) добавитьвФайлФункцию(func_name string, params map[string]string) error {
|
||||
err := a.спарситьФайлиДобавитьФункцию(func_name, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return a.перезаписатьФайл()
|
||||
}
|
||||
func (a *ASTer) спарситьФайлиДобавитьФункцию(func_name string) error {
|
||||
func (a *ASTer) спарситьФайлиДобавитьФункцию(func_name string, params map[string]string) error {
|
||||
err := a.спарситьФайл()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fun := a.пустаяФункция(func_name)
|
||||
fun := a.создатьФункцию(func_name, params)
|
||||
a.node.Decls = append(a.node.Decls, fun)
|
||||
return nil
|
||||
}
|
||||
|
@ -72,15 +72,28 @@ func (a *ASTer) спарситьФайл() error {
|
|||
a.node = node
|
||||
return err
|
||||
}
|
||||
func (a *ASTer) пустаяФункция(func_name string) *ast.FuncDecl {
|
||||
return &ast.FuncDecl{
|
||||
|
||||
func (a *ASTer) создатьФункцию(func_name string, params map[string]string) *ast.FuncDecl {
|
||||
f := &ast.FuncDecl{
|
||||
Name: ast.NewIdent(func_name),
|
||||
Type: &ast.FuncType{
|
||||
Params: &ast.FieldList{},
|
||||
Results: &ast.FieldList{},
|
||||
},
|
||||
Body: &ast.BlockStmt{},
|
||||
}
|
||||
|
||||
a.добавитьПараметрыФункции(params, f)
|
||||
|
||||
return f
|
||||
}
|
||||
func (a *ASTer) добавитьПараметрыФункции(params map[string]string, f *ast.FuncDecl) {
|
||||
for k, v := range params {
|
||||
p := &ast.Field{
|
||||
Names: []*ast.Ident{ast.NewIdent(k)},
|
||||
Type: ast.NewIdent(v),
|
||||
}
|
||||
f.Type.Params.List = append(f.Type.Params.List, p)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *ASTer) перезаписатьФайл() error {
|
||||
|
|
|
@ -56,8 +56,15 @@ func файл(fname string, content *godog.DocString) {
|
|||
err := lib.WriteFile(fname, content.Content)
|
||||
Ok(err)
|
||||
}
|
||||
func добавленаТестоваяФункция(func_name string) {
|
||||
err := ДобавитьТестовуюФункцию(func_name)
|
||||
func добавленаФункция(func_name string) {
|
||||
err := ДобавитьТестовуюФункцию(func_name, nil)
|
||||
Ok(err)
|
||||
}
|
||||
func добавленаФункцияСПараметрами(func_name, arg1, type1 string) {
|
||||
params := map[string]string{
|
||||
arg1: type1,
|
||||
}
|
||||
err := ДобавитьТестовуюФункцию(func_name, params)
|
||||
Ok(err)
|
||||
}
|
||||
func файлДолженСодержать(fname string, content *godog.DocString) {
|
||||
|
|
|
@ -2,12 +2,13 @@
|
|||
Функционал: AST-редактир go-файлов
|
||||
Сгенерированные функции автоматически добавляются в тест-файл текущего пакета
|
||||
|
||||
Сценарий: Добавление сгенерированных функций в тест-файл
|
||||
Контекст:
|
||||
Дано Файл "mypkg_test.go":
|
||||
```
|
||||
package mypkg
|
||||
```
|
||||
Когда Добавлена тестовая функция "ПриветМир"
|
||||
Сценарий: Добавление функции
|
||||
Когда Добавлена функция "ПриветМир"
|
||||
То Файл "mypkg_test.go" должен содержать:
|
||||
```
|
||||
package mypkg
|
||||
|
@ -16,3 +17,14 @@
|
|||
}
|
||||
|
||||
```
|
||||
|
||||
Сценарий: Добавление функции с параметрами: int
|
||||
Когда Добавлена функция "ПриветМир" с параметрами: "arg1", "int"
|
||||
То Файл "mypkg_test.go" должен содержать:
|
||||
```
|
||||
package mypkg
|
||||
|
||||
func ПриветМир(arg1 int) {
|
||||
}
|
||||
|
||||
```
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package ast
|
||||
|
||||
func ДобавитьТестовуюФункцию(f string) error {
|
||||
func ДобавитьТестовуюФункцию(f string, params map[string]string) error {
|
||||
a, err := NewASTer()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return a.ДобавитьТестовуюФункцию(f)
|
||||
return a.ДобавитьТестовуюФункцию(f, params)
|
||||
}
|
||||
|
|
|
@ -12,7 +12,8 @@ import (
|
|||
|
||||
func InitializeScenario(ctx *godog.ScenarioContext) {
|
||||
ctx.Step(`^Файл "([^"]*)":$`, файл)
|
||||
ctx.Step(`^Добавлена тестовая функция "([^"]*)"$`, добавленаТестоваяФункция)
|
||||
ctx.Step(`^Добавлена функция "([^"]*)"$`, добавленаФункция)
|
||||
ctx.Step(`^Добавлена функция "([^"]*)" с параметрами: "([^"]*)", "([^"]*)"$`, добавленаФункцияСПараметрами)
|
||||
ctx.Step(`^Файл "([^"]*)" должен содержать:$`, файлДолженСодержать)
|
||||
|
||||
// -----------------------
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче