You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What operating system and processor architecture are you using (go env)?
set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\Sebastian Pożoga/work
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\SEBAST~1\AppData\Local\Temp\go-build062317335=/tmp/go-build -gno-record-gcc-switches
set CXX=g++
set CGO_ENABLED=1
set PKG_CONFIG=pkg-config
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
func TestLoadManyFiles(t *testing.T) {
var (
funcs = template.FuncMap{"join": strings.Join}
guardians = []string{"Gamora", "Groot", "Nebula", "Rocket", "Star-Lord"}
)
fs, err := memfs.NewFilespace()
if err != nil {
t.Error(err)
}
// create test data
if err := fs.MkdirAll("layouts/", 0777); err != nil {
t.Error(err)
return
}
if err := fs.MkdirAll("views/", 0777); err != nil {
t.Error(err)
return
}
if err := fs.WriteFile("layouts/default/main.gohtml", []byte(overlayTemplate), 0777); err != nil {
t.Error(err)
return
}
if err := fs.WriteFile("views/myview/file1.gohtml", []byte(templateFile1), 0777); err != nil {
t.Error(err)
return
}
if err := fs.WriteFile("views/myview/file2.gohtml", []byte(templateFile2), 0777); err != nil {
t.Error(err)
return
}
if err := fs.WriteFile("views/myview/file3.gohtml", []byte(templateFile3), 0777); err != nil {
t.Error(err)
return
}
if err := fs.WriteFile("views/myview/file4.gohtml", []byte(templateFile4), 0777); err != nil {
t.Error(err)
return
}
// test loop
for ti := 0; ti < workers.AsyncTestReapeat; ti++ {
provider := NewProvider(fs, goathtml.LayoutPath, goathtml.ViewPath, funcs)
view, errs := provider.View(goathtml.DefaultLayout, "myview", nil)
if errs != nil {
t.Errorf("Errors: %v", errs)
return
}
buf := new(bytes.Buffer)
if err := view.Execute(buf, guardians); err != nil {
t.Error(err)
return
}
if strings.Contains(buf.String(), "Gamora,") {
t.Errorf("layout template should be overwrited")
return
}
}
}
If possible, provide a recipe for reproducing the error.
git clone https://github.com/goatcms/goatcore
git checkout -b issues-1-multithread-template-parse
go test github.com/goatcms/goatcore/goathtml/ghprovider
I have a problem with multi-threading template.Parse
Go template system (text/template/template & html/template/template) contains sync.Mutex to prevent
simultaneously access but Parse is still unsafe.
What version of Go are you using (
go version
)?1.8 (and olders)
https://github.com/goatcms/goat-core/tree/issues-1-multithread-template-parse/goathtml/ghprovider
What operating system and processor architecture are you using (
go env
)?set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\Sebastian Pożoga/work
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\SEBAST~1\AppData\Local\Temp\go-build062317335=/tmp/go-build -gno-record-gcc-switches
set CXX=g++
set CGO_ENABLED=1
set PKG_CONFIG=pkg-config
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
What did you do?
I prepare code to simultaneouslytemplate parse.
Source: https://github.com/goatcms/goatcore/tree/issue-1-multithread-template-parse
( issue-1-multithread-template-parse branch is important )
and I take error after run tests file by
go test github.com/goatcms/goatcore/goathtml/ghprovider
Test code:
If possible, provide a recipe for reproducing the error.
git clone https://github.com/goatcms/goatcore
git checkout -b issues-1-multithread-template-parse
go test github.com/goatcms/goatcore/goathtml/ghprovider
What did you expect to see?
correct processed template (without panic).
What did you see instead?
stacktrace:
The text was updated successfully, but these errors were encountered: