+ Сценарий: Добавление функции к существующей + без дубликаций
Этот коммит содержится в:
родитель
9ad168ae70
коммит
af6027bad2
4 изменённых файлов: 143 добавлений и 4 удалений
|
@ -62,9 +62,26 @@ func (a *ASTer) спарситьФайлиДобавитьФункцию(func_na
|
||||||
}
|
}
|
||||||
|
|
||||||
fun := a.создатьФункцию(func_name, ps)
|
fun := a.создатьФункцию(func_name, ps)
|
||||||
a.node.Decls = append(a.node.Decls, fun)
|
a.добавитьФункциюЕслиНету(fun)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *ASTer) добавитьФункциюЕслиНету(fun *ast.FuncDecl) {
|
||||||
|
for _, d := range a.node.Decls {
|
||||||
|
f, ok := d.(*ast.FuncDecl)
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if f.Name == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if f.Name.Name == fun.Name.Name {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a.node.Decls = append(a.node.Decls, fun)
|
||||||
|
}
|
||||||
func (a *ASTer) спарситьФайл() error {
|
func (a *ASTer) спарситьФайл() error {
|
||||||
fset := token.NewFileSet()
|
fset := token.NewFileSet()
|
||||||
node, err := parser.ParseFile(fset, a.fname, nil, parser.ParseComments)
|
node, err := parser.ParseFile(fset, a.fname, nil, parser.ParseComments)
|
||||||
|
|
|
@ -24,7 +24,7 @@ func resetTestData() {
|
||||||
t = &testData{}
|
t = &testData{}
|
||||||
}
|
}
|
||||||
func beforeSuite() {
|
func beforeSuite() {
|
||||||
CharactersAroundMismatchToInclude = 20
|
CharactersAroundMismatchToInclude = 50
|
||||||
}
|
}
|
||||||
func afterSuite() {
|
func afterSuite() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,11 @@
|
||||||
Функционал: AST-редактир go-файлов
|
Функционал: AST-редактир go-файлов
|
||||||
Сгенерированные функции автоматически добавляются в тест-файл текущего пакета
|
Сгенерированные функции автоматически добавляются в тест-файл текущего пакета
|
||||||
|
|
||||||
Контекст:
|
Сценарий: Добавление функции
|
||||||
Дано Файл "mypkg_test.go":
|
Дано Файл "mypkg_test.go":
|
||||||
```
|
```
|
||||||
package mypkg
|
package mypkg
|
||||||
```
|
```
|
||||||
Сценарий: Добавление функции
|
|
||||||
Когда Добавляется функция "ПриветМир"
|
Когда Добавляется функция "ПриветМир"
|
||||||
То Файл "mypkg_test.go" должен содержать:
|
То Файл "mypkg_test.go" должен содержать:
|
||||||
```
|
```
|
||||||
|
@ -19,6 +18,10 @@
|
||||||
```
|
```
|
||||||
|
|
||||||
Сценарий: Добавление функции с параметрами: int
|
Сценарий: Добавление функции с параметрами: int
|
||||||
|
Дано Файл "mypkg_test.go":
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
```
|
||||||
Дано Параметр: "arg1", "int"
|
Дано Параметр: "arg1", "int"
|
||||||
Когда Добавляется функция "ПриветМир"
|
Когда Добавляется функция "ПриветМир"
|
||||||
То Файл "mypkg_test.go" должен содержать:
|
То Файл "mypkg_test.go" должен содержать:
|
||||||
|
@ -31,6 +34,10 @@
|
||||||
```
|
```
|
||||||
|
|
||||||
Сценарий: Добавление функции с параметрами: int, string
|
Сценарий: Добавление функции с параметрами: int, string
|
||||||
|
Дано Файл "mypkg_test.go":
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
```
|
||||||
Дано Параметр: "arg1", "int"
|
Дано Параметр: "arg1", "int"
|
||||||
Дано Параметр: "arg2", "string"
|
Дано Параметр: "arg2", "string"
|
||||||
Когда Добавляется функция "ПриветМир"
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
@ -44,6 +51,10 @@
|
||||||
```
|
```
|
||||||
|
|
||||||
Сценарий: Добавление функции с параметрами: string, int
|
Сценарий: Добавление функции с параметрами: string, int
|
||||||
|
Дано Файл "mypkg_test.go":
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
```
|
||||||
Дано Параметр: "arg1", "string"
|
Дано Параметр: "arg1", "string"
|
||||||
Дано Параметр: "arg2", "int"
|
Дано Параметр: "arg2", "int"
|
||||||
Когда Добавляется функция "ПриветМир"
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
@ -55,3 +66,68 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Сценарий: Добавление функции к существующей
|
||||||
|
Дано Файл "mypkg_test.go":
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
|
||||||
|
func СделатьЧтото(arg1 string, arg2 int) {
|
||||||
|
a := 1
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
Дано Параметр: "arg1", "int"
|
||||||
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
То Файл "mypkg_test.go" должен содержать:
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
|
||||||
|
func СделатьЧтото(arg1 string, arg2 int) {
|
||||||
|
a := 1
|
||||||
|
}
|
||||||
|
func ПриветМир(arg1 int) {
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Сценарий: Не добавляет если такая функция уже есть
|
||||||
|
Дано Файл "mypkg_test.go":
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
|
||||||
|
func ПриветМир(arg1 string, arg2 int) {
|
||||||
|
a := 1
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
Дано Параметр: "arg1", "int"
|
||||||
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
То Файл "mypkg_test.go" должен содержать:
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
|
||||||
|
func ПриветМир(arg1 string, arg2 int) {
|
||||||
|
a := 1
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Сценарий: Не добавляет второй раз
|
||||||
|
Дано Файл "mypkg_test.go":
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
|
||||||
|
```
|
||||||
|
Дано Параметр: "arg1", "int"
|
||||||
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
Когда Добавляется функция "ПриветМир"
|
||||||
|
То Файл "mypkg_test.go" должен содержать:
|
||||||
|
```
|
||||||
|
package mypkg
|
||||||
|
|
||||||
|
func ПриветМир(arg1 int) {
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
46
pkg/lib/lib.go
Обычный файл
46
pkg/lib/lib.go
Обычный файл
|
@ -0,0 +1,46 @@
|
||||||
|
package lib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ReadFile(path string) (string, error) {
|
||||||
|
ret, err := os.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return string(ret), nil
|
||||||
|
}
|
||||||
|
func WriteFile(path, data string) error {
|
||||||
|
return os.WriteFile(path, []byte(data), 0644)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CopyFile(src, dst string) (err error) {
|
||||||
|
in, err := os.Open(src)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
defer in.Close()
|
||||||
|
|
||||||
|
out, err := os.Create(dst)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
cerr := out.Close()
|
||||||
|
if err == nil {
|
||||||
|
err = cerr
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
if _, err = io.Copy(out, in); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = out.Sync()
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
Загрузка…
Создание таблицы
Сослаться в новой задаче