Process generates formatted test code from the header and function signatures.
(head *models.Header, funcs []*models.Function)
| 38 | |
| 39 | // Process generates formatted test code from the header and function signatures. |
| 40 | func (o *Options) Process(head *models.Header, funcs []*models.Function) ([]byte, error) { |
| 41 | o.render = render.New() |
| 42 | |
| 43 | switch { |
| 44 | case o.providesTemplateDir(): |
| 45 | if err := o.render.LoadCustomTemplates(o.TemplateDir); err != nil { |
| 46 | return nil, fmt.Errorf("loading custom templates: %v", err) |
| 47 | } |
| 48 | case o.providesTemplate(): |
| 49 | if err := o.render.LoadCustomTemplatesName(o.Template); err != nil { |
| 50 | return nil, fmt.Errorf("loading custom templates of name: %v", err) |
| 51 | } |
| 52 | case o.providesTemplateData(): |
| 53 | o.render.LoadFromData(o.TemplateData) |
| 54 | } |
| 55 | |
| 56 | // |
| 57 | tf, err := ioutil.TempFile("", "gotests_") |
| 58 | if err != nil { |
| 59 | return nil, fmt.Errorf("ioutil.TempFile: %v", err) |
| 60 | } |
| 61 | defer tf.Close() |
| 62 | defer os.Remove(tf.Name()) |
| 63 | |
| 64 | // create physical copy of test |
| 65 | b := &bytes.Buffer{} |
| 66 | if err := o.writeTests(b, head, funcs); err != nil { |
| 67 | return nil, err |
| 68 | } |
| 69 | |
| 70 | // format file |
| 71 | out, err := imports.Process(tf.Name(), b.Bytes(), nil) |
| 72 | if err != nil { |
| 73 | return nil, fmt.Errorf("imports.Process: %v", err) |
| 74 | } |
| 75 | return out, nil |
| 76 | } |
| 77 | |
| 78 | func (o *Options) providesTemplateData() bool { |
| 79 | return o != nil && len(o.TemplateData) > 0 |