github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/genny/actions/build_tests.go (about) 1 package actions 2 3 import ( 4 "fmt" 5 6 "github.com/gobuffalo/genny/v2" 7 ) 8 9 // buildTests is the top level action/test builder 10 // it determines whether to build a new actions/foo_test.go file 11 // or append to an existing one 12 func buildTests(pres *presenter) genny.RunFn { 13 return func(r *genny.Runner) error { 14 fn := fmt.Sprintf("actions/%s_test.go", pres.Name.File()) 15 xf, err := r.FindFile(fn) 16 if err != nil { 17 return buildNewTests(fn, pres)(r) 18 } 19 return appendTests(xf, pres)(r) 20 } 21 } 22 23 // buildNewTests builds a brand new actions/foo_test.go file 24 // and files it with tests 25 func buildNewTests(fn string, pres *presenter) genny.RunFn { 26 return func(r *genny.Runner) error { 27 h, err := box.FindString("tests_header.go.tmpl") 28 if err != nil { 29 return err 30 } 31 a, err := box.FindString("test.go.tmpl") 32 if err != nil { 33 return err 34 } 35 36 f := genny.NewFileS(fn+".tmpl", h+a) 37 38 f, err = transform(pres, f) 39 if err != nil { 40 return err 41 } 42 return r.File(f) 43 } 44 } 45 46 // appendTests appends *only* tests that don't exist in 47 // actions/foo_test.go. if the test already exists it is not touched. 48 func appendTests(f genny.File, pres *presenter) genny.RunFn { 49 return func(r *genny.Runner) error { 50 a, err := box.FindString("test.go.tmpl") 51 if err != nil { 52 return err 53 } 54 f := genny.NewFileS(f.Name()+".tmpl", f.String()+a) 55 f, err = transform(pres, f) 56 if err != nil { 57 return err 58 } 59 return r.File(f) 60 } 61 }