Skip to content
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: clean unittests benchtests build endtoendtests cmpbenchtests
.PHONY: clean unittests benchtests build endtoendtests cmpbenchtests testgen setup lint

BIN_DIR=bin
BIN_NAME=validgen
Expand Down Expand Up @@ -29,10 +29,13 @@ build: clean
@echo "Building"
go build -o $(VALIDGEN_BIN) .

testgen:
@echo "Generating tests"
cd testgen/; rm -f generated_*.go; go run *.go; mv generated_endtoend_*tests.go ../tests/endtoend/; mv generated_validation_*_test.go ../internal/codegenerator/

endtoendtests: build
@echo "Running endtoend tests"
find tests/endtoend/ -name 'validator__.go' -exec rm \{} \;
cd tests/endtoend/generate_tests/; rm -f generated*tests.go; go run *.go; mv generated*tests.go ..
$(VALIDGEN_BIN) tests/endtoend
cd tests/endtoend; go run .

Expand Down
2 changes: 1 addition & 1 deletion internal/codegenerator/build_func_validator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ return errs

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gv := genValidations{
gv := GenValidations{
Struct: tt.fields.Struct,
}
got, err := gv.BuildFuncValidatorCode()
Expand Down
10 changes: 5 additions & 5 deletions internal/codegenerator/build_validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ type fieldTpl struct {
Validations []*analyzer.Validation
}

func (gv *genValidations) BuildFuncValidatorCode() (string, error) {
func (gv *GenValidations) BuildFuncValidatorCode() (string, error) {

stTpl := StructToTpl(gv.Struct)

funcMap := template.FuncMap{
"buildValidationCode": gv.buildValidationCode,
"buildValidationCode": gv.BuildValidationCode,
}

tmpl, err := template.New("FuncValidator").Funcs(funcMap).Parse(funcValidatorTpl)
Expand All @@ -48,7 +48,7 @@ func (gv *genValidations) BuildFuncValidatorCode() (string, error) {
return code.String(), nil
}

func (gv *genValidations) buildValidationCode(fieldName string, fieldType common.FieldType, fieldValidations []*analyzer.Validation) (string, error) {
func (gv *GenValidations) BuildValidationCode(fieldName string, fieldType common.FieldType, fieldValidations []*analyzer.Validation) (string, error) {

tests := ""
for _, fieldValidation := range fieldValidations {
Expand All @@ -73,7 +73,7 @@ func (gv *genValidations) buildValidationCode(fieldName string, fieldType common
return tests, nil
}

func (gv *genValidations) buildIfCode(fieldName string, fieldType common.FieldType, fieldValidation *analyzer.Validation) (string, error) {
func (gv *GenValidations) buildIfCode(fieldName string, fieldType common.FieldType, fieldValidation *analyzer.Validation) (string, error) {
testElements, err := DefineTestElements(fieldName, fieldType, fieldValidation)
if err != nil {
return "", fmt.Errorf("field %s: %w", fieldName, err)
Expand All @@ -95,7 +95,7 @@ errs = append(errs, types.NewValidationError("%s"))
`, booleanCondition, testElements.errorMessage), nil
}

func (gv *genValidations) buildIfNestedCode(fieldName string, fieldType common.FieldType) (string, error) {
func (gv *GenValidations) buildIfNestedCode(fieldName string, fieldType common.FieldType) (string, error) {
_, ok := gv.StructsWithValidation[fieldType.BaseType]
if !ok {
return "", fmt.Errorf("no validator found for struct type %s", fieldType)
Expand Down
26 changes: 13 additions & 13 deletions internal/codegenerator/build_validator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/opencodeco/validgen/internal/parser"
)

func TestBuildValidationCode(t *testing.T) {
func TestBuildValidationCodeOld(t *testing.T) {
type args struct {
fieldName string
fieldType common.FieldType
Expand Down Expand Up @@ -259,15 +259,15 @@ errs = append(errs, types.NewValidationError("mapField must have exactly 3 eleme

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gv := genValidations{}
gv := GenValidations{}
validation := AssertParserValidation(t, tt.args.fieldValidation)
got, err := gv.buildValidationCode(tt.args.fieldName, tt.args.fieldType, []*analyzer.Validation{validation})
got, err := gv.BuildValidationCode(tt.args.fieldName, tt.args.fieldType, []*analyzer.Validation{validation})
if err != nil {
t.Errorf("buildValidationCode() error = %v, wantErr %v", err, nil)
t.Errorf("BuildValidationCode() error = %v, wantErr %v", err, nil)
return
}
if got != tt.want {
t.Errorf("buildValidationCode() = %v, want %v", got, tt.want)
t.Errorf("BuildValidationCode() = %v, want %v", got, tt.want)
}
})
}
Expand Down Expand Up @@ -330,7 +330,7 @@ errs = append(errs, types.NewValidationError("Field must have at least 2 element

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gv := genValidations{
gv := GenValidations{
Struct: &analyzer.Struct{
Struct: parser.Struct{
PackageName: "main",
Expand All @@ -340,13 +340,13 @@ errs = append(errs, types.NewValidationError("Field must have at least 2 element
}
gv.StructsWithValidation[tt.args.fieldType.BaseType] = struct{}{}
validation := AssertParserValidation(t, tt.args.fieldValidation)
got, err := gv.buildValidationCode(tt.args.fieldName, tt.args.fieldType, []*analyzer.Validation{validation})
got, err := gv.BuildValidationCode(tt.args.fieldName, tt.args.fieldType, []*analyzer.Validation{validation})
if err != nil {
t.Errorf("buildValidationCode() error = %v, wantErr %v", err, nil)
t.Errorf("BuildValidationCode() error = %v, wantErr %v", err, nil)
return
}
if got != tt.want {
t.Errorf("buildValidationCode() = %v, want %v", got, tt.want)
t.Errorf("BuildValidationCode() = %v, want %v", got, tt.want)
}
})
}
Expand Down Expand Up @@ -506,15 +506,15 @@ errs = append(errs, types.NewValidationError("field must have exactly 3 elements
for _, tt := range tests {
testName := fmt.Sprintf("validation: %s with %s (%s)", tt.validation, tt.fieldType.ToGenericType(), tt.fieldType.ToNormalizedString())
t.Run(testName, func(t *testing.T) {
gv := genValidations{}
gv := GenValidations{}
validation := AssertParserValidation(t, tt.validation)
got, err := gv.buildValidationCode("field", tt.fieldType, []*analyzer.Validation{validation})
got, err := gv.BuildValidationCode("field", tt.fieldType, []*analyzer.Validation{validation})
if err != nil {
t.Errorf("buildValidationCode() error = %v, wantErr %v", err, nil)
t.Errorf("BuildValidationCode() error = %v, wantErr %v", err, nil)
return
}
if got != tt.want {
t.Errorf("buildValidationCode() = %v, want %v", got, tt.want)
t.Errorf("BuildValidationCode() = %v, want %v", got, tt.want)
}
})
}
Expand Down
4 changes: 2 additions & 2 deletions internal/codegenerator/codegen.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"github.com/opencodeco/validgen/internal/parser"
)

type genValidations struct {
type GenValidations struct {
StructsWithValidation map[string]struct{}
Struct *analyzer.Struct
}
Expand All @@ -26,7 +26,7 @@ func GenerateCode(structs []*analyzer.Struct) (map[string]*Pkg, error) {
continue
}

codeInfo := &genValidations{
codeInfo := &GenValidations{
StructsWithValidation: structsWithValidation,
Struct: st,
}
Expand Down
Loading