Skip to content

Commit

Permalink
Fix: template embedding (#12)
Browse files Browse the repository at this point in the history
* feat: add hooks

* feat: add pre-commit hooks

* chore: moving main.go to root directory

* fix: support swagger files with no tags

* fix: add permission for hooks

* fix: add permission for hooks

* fix: templates embedding in gogenswagger

* test: add test for template.go

* test: failing in pipline
  • Loading branch information
Mussabaheen committed Oct 22, 2022
1 parent 91fad30 commit 6edf4f2
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 25 deletions.
6 changes: 6 additions & 0 deletions internals/template/embed.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package template

import "embed"

//go:embed templates/*.tmpl
var Templates embed.FS
File renamed without changes.
17 changes: 7 additions & 10 deletions pkg/template/template.go → internals/template/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"html/template"
"log"
"os"
"path/filepath"
"strings"

"github.com/Masterminds/sprig"
Expand All @@ -23,7 +22,7 @@ type Template struct {
}

// NewTemplate creates a new Template service
func NewTemplate(templatePath string, outputDestination string) *Template {
func NewTemplate(templatePath, outputDestination string) *Template {
return &Template{
templatePath: templatePath,
outputFolder: outputDestination,
Expand All @@ -32,10 +31,6 @@ func NewTemplate(templatePath string, outputDestination string) *Template {

// GenerateTestFiles generates the test files using the provided template
func (T *Template) GenerateTestFiles(swaggerJSON *swagger.JSON, testExtension string) {
tmpExtension := filepath.Ext(T.templatePath)
if tmpExtension != ".tmpl" {
log.Fatalf("invalid extension provided for template file, file must be *.tmpl")
}
apiTest := GeneratedTest{
GeneratedTests: make(map[string]Test),
}
Expand Down Expand Up @@ -142,12 +137,14 @@ func (T *Template) GenerateTestFiles(swaggerJSON *swagger.JSON, testExtension st
}
}
}

tmplBuffer, err := Templates.ReadFile(T.templatePath)
if err != nil {
log.Fatalf("unable to read tmpl from embedded files, %v\n", err)
}
for _, API := range apiTest.GeneratedTests {
fileName := filepath.Base(T.templatePath)
tmpl := template.Must(template.New("").Funcs(sprig.FuncMap()).ParseFiles(T.templatePath))
templates := template.Must(template.New("tmpl").Funcs(sprig.FuncMap()).Parse(string(tmplBuffer)))
var processed bytes.Buffer
err := tmpl.ExecuteTemplate(&processed, fileName, API)
err := templates.ExecuteTemplate(&processed, "tmpl", API)
if err != nil {
log.Fatalf("Unable to parse data into template: %v\n", err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
)

func TestTemplate_GetGenerateTestFiles(t *testing.T) {
template := NewTemplate("../../internals/templates/golang.tmpl", "../../generated")
template := NewTemplate("templates/golang.tmpl", "../../generated")
json := swagger.JSON{
Paths: map[string]swagger.Path{
"get": {
Expand All @@ -27,7 +27,6 @@ func TestTemplate_GetGenerateTestFiles(t *testing.T) {
},
},
}
_ = `// This file is generated by https://github.com/Mussabaheen/gogenswagger\n// Written by Malik Mussabeheen\npackage server\n\nimport \"testing\"\n\n// This is a comment\nfunc TestGetcreateserverinstanceReturns200(t *testing.T) {}\n`
template.GenerateTestFiles(&json, "go")
goFile, err := os.Open("../../generated/server/server_test.go")
assert.Nil(t, err, "unable to open generated file")
Expand All @@ -37,7 +36,7 @@ func TestTemplate_GetGenerateTestFiles(t *testing.T) {
assert.Nil(t, err, "unable to open file")
}
func TestTemplate_PostGenerateTestFiles(t *testing.T) {
template := NewTemplate("../../internals/templates/golang.tmpl", "../../generated")
template := NewTemplate("templates/golang.tmpl", "../../generated")
json := swagger.JSON{
Paths: map[string]swagger.Path{
"post": {
Expand All @@ -54,7 +53,6 @@ func TestTemplate_PostGenerateTestFiles(t *testing.T) {
},
},
}
_ = `// This file is generated by https://github.com/Mussabaheen/gogenswagger\n// Written by Malik Mussabeheen\npackage server\n\nimport \"testing\"\n\n// This is a comment\nfunc TestGetcreateserverinstanceReturns200(t *testing.T) {}\n`
template.GenerateTestFiles(&json, "go")
goFile, err := os.Open("../../generated/server/server_test.go")
assert.Nil(t, err, "unable to open generated file")
Expand All @@ -65,7 +63,7 @@ func TestTemplate_PostGenerateTestFiles(t *testing.T) {
}

func TestTemplate_UpdateGenerateTestFiles(t *testing.T) {
template := NewTemplate("../../internals/templates/golang.tmpl", "../../generated")
template := NewTemplate("templates/golang.tmpl", "../../generated")
json := swagger.JSON{
Paths: map[string]swagger.Path{
"update": {
Expand All @@ -82,7 +80,6 @@ func TestTemplate_UpdateGenerateTestFiles(t *testing.T) {
},
},
}
_ = `// This file is generated by https://github.com/Mussabaheen/gogenswagger\n// Written by Malik Mussabeheen\npackage server\n\nimport \"testing\"\n\n// This is a comment\nfunc TestGetcreateserverinstanceReturns200(t *testing.T) {}\n`
template.GenerateTestFiles(&json, "go")
goFile, err := os.Open("../../generated/server/server_test.go")
assert.Nil(t, err, "unable to open generated file")
Expand All @@ -92,7 +89,7 @@ func TestTemplate_UpdateGenerateTestFiles(t *testing.T) {
assert.Nil(t, err, "unable to open file")
}
func TestTemplate_DeleteGenerateTestFiles(t *testing.T) {
template := NewTemplate("../../internals/templates/golang.tmpl", "../../generated")
template := NewTemplate("templates/golang.tmpl", "../../generated")
json := swagger.JSON{
Paths: map[string]swagger.Path{
"Delete": {
Expand All @@ -109,7 +106,6 @@ func TestTemplate_DeleteGenerateTestFiles(t *testing.T) {
},
},
}
_ = `// This file is generated by https://github.com/Mussabaheen/gogenswagger\n// Written by Malik Mussabeheen\npackage server\n\nimport \"testing\"\n\n// This is a comment\nfunc TestGetcreateserverinstanceReturns200(t *testing.T) {}\n`
template.GenerateTestFiles(&json, "go")
goFile, err := os.Open("../../generated/server/server_test.go")
assert.Nil(t, err, "unable to open generated file")
Expand All @@ -119,7 +115,7 @@ func TestTemplate_DeleteGenerateTestFiles(t *testing.T) {
assert.Nil(t, err, "unable to open file")
}
func TestTemplate_PutGenerateTestFiles(t *testing.T) {
template := NewTemplate("../../internals/templates/golang.tmpl", "../../generated")
template := NewTemplate("templates/golang.tmpl", "../../generated")
json := swagger.JSON{
Paths: map[string]swagger.Path{
"put": {
Expand All @@ -136,7 +132,6 @@ func TestTemplate_PutGenerateTestFiles(t *testing.T) {
},
},
}
_ = `// This file is generated by https://github.com/Mussabaheen/gogenswagger\n// Written by Malik Mussabeheen\npackage server\n\nimport \"testing\"\n\n// This is a comment\nfunc TestGetcreateserverinstanceReturns200(t *testing.T) {}\n`
template.GenerateTestFiles(&json, "go")
goFile, err := os.Open("../../generated/server/server_test.go")
assert.Nil(t, err, "unable to open generated file")
Expand Down
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import (
"log"
"os"

"github.com/Mussabaheen/gogenswagger/internals/template"
"github.com/Mussabaheen/gogenswagger/pkg/language"
"github.com/Mussabaheen/gogenswagger/pkg/swagger"
"github.com/Mussabaheen/gogenswagger/pkg/template"
)

func main() {
Expand All @@ -28,11 +28,11 @@ func main() {
fmt.Scanln(&selectLanguage)

language := language.NewLangugae(selectLanguage)
templatePath, fileExtension := language.Select()
tmplPath, fileExtension := language.Select()

fetch := swagger.NewSwagger(jsonFile)
jsonSwagger := fetch.JSONParser()

testGenerator := template.NewTemplate(templatePath, "./generated")
testGenerator := template.NewTemplate(tmplPath, "./generated")
testGenerator.GenerateTestFiles(jsonSwagger, fileExtension)
}
4 changes: 2 additions & 2 deletions pkg/language/language.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ package language
import "log"

var (
nodejs = "internals/templates/nodejs.tmpl"
golang = "internals/templates/golang.tmpl"
nodejs = "templates/nodejs.tmpl"
golang = "templates/golang.tmpl"
)

// Language handles the selection for language
Expand Down

0 comments on commit 6edf4f2

Please sign in to comment.