+ Сценарий: Добавление функции к существующей + без дубликаций
Этот коммит содержится в:
родитель
9ad168ae70
коммит
af6027bad2
4 изменённых файлов: 143 добавлений и 4 удалений
|
@ -62,9 +62,26 @@ func (a *ASTer) спарситьФайлиДобавитьФункцию(func_na
|
|||
}
|
||||
|
||||
fun := a.создатьФункцию(func_name, ps)
|
||||
a.node.Decls = append(a.node.Decls, fun)
|
||||
a.добавитьФункциюЕслиНету(fun)
|
||||
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 {
|
||||
fset := token.NewFileSet()
|
||||
node, err := parser.ParseFile(fset, a.fname, nil, parser.ParseComments)
|
||||
|
|
|
@ -24,7 +24,7 @@ func resetTestData() {
|
|||
t = &testData{}
|
||||
}
|
||||
func beforeSuite() {
|
||||
CharactersAroundMismatchToInclude = 20
|
||||
CharactersAroundMismatchToInclude = 50
|
||||
}
|
||||
func afterSuite() {
|
||||
}
|
||||
|
|
|
@ -2,12 +2,11 @@
|
|||
Функционал: AST-редактир go-файлов
|
||||
Сгенерированные функции автоматически добавляются в тест-файл текущего пакета
|
||||
|
||||
Контекст:
|
||||
Сценарий: Добавление функции
|
||||
Дано Файл "mypkg_test.go":
|
||||
```
|
||||
package mypkg
|
||||
```
|
||||
Сценарий: Добавление функции
|
||||
Когда Добавляется функция "ПриветМир"
|
||||
То Файл "mypkg_test.go" должен содержать:
|
||||
```
|
||||
|
@ -19,6 +18,10 @@
|
|||
```
|
||||
|
||||
Сценарий: Добавление функции с параметрами: int
|
||||
Дано Файл "mypkg_test.go":
|
||||
```
|
||||
package mypkg
|
||||
```
|
||||
Дано Параметр: "arg1", "int"
|
||||
Когда Добавляется функция "ПриветМир"
|
||||
То Файл "mypkg_test.go" должен содержать:
|
||||
|
@ -31,6 +34,10 @@
|
|||
```
|
||||
|
||||
Сценарий: Добавление функции с параметрами: int, string
|
||||
Дано Файл "mypkg_test.go":
|
||||
```
|
||||
package mypkg
|
||||
```
|
||||
Дано Параметр: "arg1", "int"
|
||||
Дано Параметр: "arg2", "string"
|
||||
Когда Добавляется функция "ПриветМир"
|
||||
|
@ -44,6 +51,10 @@
|
|||
```
|
||||
|
||||
Сценарий: Добавление функции с параметрами: string, int
|
||||
Дано Файл "mypkg_test.go":
|
||||
```
|
||||
package mypkg
|
||||
```
|
||||
Дано Параметр: "arg1", "string"
|
||||
Дано Параметр: "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
|
||||
}
|
Загрузка…
Создание таблицы
Сослаться в новой задаче