Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
3dbe10c4
Commit
3dbe10c4
authored
Aug 01, 2011
by
Rob Pike
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
exp/template: return nil value from helpers on error, even methods.
R=rsc CC=golang-dev
https://golang.org/cl/4835046
parent
b0ef0294
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
49 additions
and
45 deletions
+49
-45
src/pkg/exp/template/helper.go
src/pkg/exp/template/helper.go
+26
-25
src/pkg/exp/template/set.go
src/pkg/exp/template/set.go
+1
-1
src/pkg/exp/template/set_test.go
src/pkg/exp/template/set_test.go
+22
-19
No files found.
src/pkg/exp/template/helper.go
View file @
3dbe10c4
...
@@ -44,10 +44,11 @@ func parseFileInSet(filename string, set *Set) (*Template, os.Error) {
...
@@ -44,10 +44,11 @@ func parseFileInSet(filename string, set *Set) (*Template, os.Error) {
// ParseFile reads the template definition from a file and parses it to
// ParseFile reads the template definition from a file and parses it to
// construct an internal representation of the template for execution.
// construct an internal representation of the template for execution.
// The returned template will be nil if an error occurs.
func
(
t
*
Template
)
ParseFile
(
filename
string
)
(
*
Template
,
os
.
Error
)
{
func
(
t
*
Template
)
ParseFile
(
filename
string
)
(
*
Template
,
os
.
Error
)
{
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
t
,
err
return
nil
,
err
}
}
return
t
.
Parse
(
string
(
b
))
return
t
.
Parse
(
string
(
b
))
}
}
...
@@ -55,10 +56,11 @@ func (t *Template) ParseFile(filename string) (*Template, os.Error) {
...
@@ -55,10 +56,11 @@ func (t *Template) ParseFile(filename string) (*Template, os.Error) {
// parseFileInSet is the same as ParseFile except that function bindings
// parseFileInSet is the same as ParseFile except that function bindings
// are checked against those in the set and the template is added
// are checked against those in the set and the template is added
// to the set.
// to the set.
// The returned template will be nil if an error occurs.
func
(
t
*
Template
)
parseFileInSet
(
filename
string
,
set
*
Set
)
(
*
Template
,
os
.
Error
)
{
func
(
t
*
Template
)
parseFileInSet
(
filename
string
,
set
*
Set
)
(
*
Template
,
os
.
Error
)
{
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
t
,
err
return
nil
,
err
}
}
return
t
.
ParseInSet
(
string
(
b
),
set
)
return
t
.
ParseInSet
(
string
(
b
),
set
)
}
}
...
@@ -77,17 +79,17 @@ func SetMust(s *Set, err os.Error) *Set {
...
@@ -77,17 +79,17 @@ func SetMust(s *Set, err os.Error) *Set {
}
}
// ParseFile parses the named files into a set of named templates.
// ParseFile parses the named files into a set of named templates.
// Each file must be parseable by itself.
Parsing stops if an error is
// Each file must be parseable by itself.
//
encountered
.
//
If an error occurs, parsing stops and the returned set is nil
.
func
(
s
*
Set
)
ParseFile
(
filenames
...
string
)
(
*
Set
,
os
.
Error
)
{
func
(
s
*
Set
)
ParseFile
(
filenames
...
string
)
(
*
Set
,
os
.
Error
)
{
for
_
,
filename
:=
range
filenames
{
for
_
,
filename
:=
range
filenames
{
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
_
,
err
=
s
.
Parse
(
string
(
b
))
_
,
err
=
s
.
Parse
(
string
(
b
))
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
}
}
return
s
,
nil
return
s
,
nil
...
@@ -97,15 +99,14 @@ func (s *Set) ParseFile(filenames ...string) (*Set, os.Error) {
...
@@ -97,15 +99,14 @@ func (s *Set) ParseFile(filenames ...string) (*Set, os.Error) {
// named files. Each file must be individually parseable.
// named files. Each file must be individually parseable.
func
ParseSetFile
(
filenames
...
string
)
(
*
Set
,
os
.
Error
)
{
func
ParseSetFile
(
filenames
...
string
)
(
*
Set
,
os
.
Error
)
{
s
:=
new
(
Set
)
s
:=
new
(
Set
)
s
.
init
()
for
_
,
filename
:=
range
filenames
{
for
_
,
filename
:=
range
filenames
{
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
b
,
err
:=
ioutil
.
ReadFile
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
_
,
err
=
s
.
Parse
(
string
(
b
))
_
,
err
=
s
.
Parse
(
string
(
b
))
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
}
}
return
s
,
nil
return
s
,
nil
...
@@ -114,13 +115,14 @@ func ParseSetFile(filenames ...string) (*Set, os.Error) {
...
@@ -114,13 +115,14 @@ func ParseSetFile(filenames ...string) (*Set, os.Error) {
// ParseFiles parses the set definition from the files identified by the
// ParseFiles parses the set definition from the files identified by the
// pattern. The pattern is processed by filepath.Glob and must match at
// pattern. The pattern is processed by filepath.Glob and must match at
// least one file.
// least one file.
// If an error occurs, parsing stops and the returned set is nil.
func
(
s
*
Set
)
ParseFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
func
(
s
*
Set
)
ParseFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
filenames
,
err
:=
filepath
.
Glob
(
pattern
)
filenames
,
err
:=
filepath
.
Glob
(
pattern
)
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
if
len
(
filenames
)
==
0
{
if
len
(
filenames
)
==
0
{
return
s
,
fmt
.
Errorf
(
"pattern matches no files: %#q"
,
pattern
)
return
nil
,
fmt
.
Errorf
(
"pattern matches no files: %#q"
,
pattern
)
}
}
return
s
.
ParseFile
(
filenames
...
)
return
s
.
ParseFile
(
filenames
...
)
}
}
...
@@ -131,7 +133,7 @@ func (s *Set) ParseFiles(pattern string) (*Set, os.Error) {
...
@@ -131,7 +133,7 @@ func (s *Set) ParseFiles(pattern string) (*Set, os.Error) {
func
ParseSetFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
func
ParseSetFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
set
,
err
:=
new
(
Set
)
.
ParseFiles
(
pattern
)
set
,
err
:=
new
(
Set
)
.
ParseFiles
(
pattern
)
if
err
!=
nil
{
if
err
!=
nil
{
return
set
,
err
return
nil
,
err
}
}
return
set
,
nil
return
set
,
nil
}
}
...
@@ -146,13 +148,13 @@ func ParseSetFiles(pattern string) (*Set, os.Error) {
...
@@ -146,13 +148,13 @@ func ParseSetFiles(pattern string) (*Set, os.Error) {
// file does not contain {{define}} clauses. ParseTemplateFile is
// file does not contain {{define}} clauses. ParseTemplateFile is
// therefore equivalent to calling the ParseFile function to create
// therefore equivalent to calling the ParseFile function to create
// individual templates, which are then added to the set.
// individual templates, which are then added to the set.
// Each file must be parseable by itself.
Parsing stops if an error is
// Each file must be parseable by itself.
//
encountered
.
//
If an error occurs, parsing stops and the returned set is nil
.
func
(
s
*
Set
)
ParseTemplateFile
(
filenames
...
string
)
(
*
Set
,
os
.
Error
)
{
func
(
s
*
Set
)
ParseTemplateFile
(
filenames
...
string
)
(
*
Set
,
os
.
Error
)
{
for
_
,
filename
:=
range
filenames
{
for
_
,
filename
:=
range
filenames
{
_
,
err
:=
parseFileInSet
(
filename
,
s
)
_
,
err
:=
parseFileInSet
(
filename
,
s
)
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
}
}
return
s
,
nil
return
s
,
nil
...
@@ -166,17 +168,17 @@ func (s *Set) ParseTemplateFile(filenames ...string) (*Set, os.Error) {
...
@@ -166,17 +168,17 @@ func (s *Set) ParseTemplateFile(filenames ...string) (*Set, os.Error) {
// file does not contain {{define}} clauses. ParseTemplateFiles is
// file does not contain {{define}} clauses. ParseTemplateFiles is
// therefore equivalent to calling the ParseFile function to create
// therefore equivalent to calling the ParseFile function to create
// individual templates, which are then added to the set.
// individual templates, which are then added to the set.
// Each file must be parseable by itself.
Parsing stops if an error is
// Each file must be parseable by itself.
//
encountered
.
//
If an error occurs, parsing stops and the returned set is nil
.
func
(
s
*
Set
)
ParseTemplateFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
func
(
s
*
Set
)
ParseTemplateFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
filenames
,
err
:=
filepath
.
Glob
(
pattern
)
filenames
,
err
:=
filepath
.
Glob
(
pattern
)
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
for
_
,
filename
:=
range
filenames
{
for
_
,
filename
:=
range
filenames
{
_
,
err
:=
parseFileInSet
(
filename
,
s
)
_
,
err
:=
parseFileInSet
(
filename
,
s
)
if
err
!=
nil
{
if
err
!=
nil
{
return
s
,
err
return
nil
,
err
}
}
}
}
return
s
,
nil
return
s
,
nil
...
@@ -198,10 +200,10 @@ func ParseTemplateFile(filenames ...string) (*Set, os.Error) {
...
@@ -198,10 +200,10 @@ func ParseTemplateFile(filenames ...string) (*Set, os.Error) {
for
_
,
filename
:=
range
filenames
{
for
_
,
filename
:=
range
filenames
{
t
,
err
:=
ParseFile
(
filename
)
t
,
err
:=
ParseFile
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
set
,
err
return
nil
,
err
}
}
if
err
:=
set
.
add
(
t
);
err
!=
nil
{
if
err
:=
set
.
add
(
t
);
err
!=
nil
{
return
set
,
err
return
nil
,
err
}
}
}
}
return
set
,
nil
return
set
,
nil
...
@@ -219,18 +221,17 @@ func ParseTemplateFile(filenames ...string) (*Set, os.Error) {
...
@@ -219,18 +221,17 @@ func ParseTemplateFile(filenames ...string) (*Set, os.Error) {
// encountered.
// encountered.
func
ParseTemplateFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
func
ParseTemplateFiles
(
pattern
string
)
(
*
Set
,
os
.
Error
)
{
set
:=
new
(
Set
)
set
:=
new
(
Set
)
set
.
init
()
filenames
,
err
:=
filepath
.
Glob
(
pattern
)
filenames
,
err
:=
filepath
.
Glob
(
pattern
)
if
err
!=
nil
{
if
err
!=
nil
{
return
set
,
err
return
nil
,
err
}
}
for
_
,
filename
:=
range
filenames
{
for
_
,
filename
:=
range
filenames
{
t
,
err
:=
ParseFile
(
filename
)
t
,
err
:=
ParseFile
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
set
,
err
return
nil
,
err
}
}
if
err
:=
set
.
add
(
t
);
err
!=
nil
{
if
err
:=
set
.
add
(
t
);
err
!=
nil
{
return
set
,
err
return
nil
,
err
}
}
}
}
return
set
,
nil
return
set
,
nil
...
...
src/pkg/exp/template/set.go
View file @
3dbe10c4
...
@@ -110,7 +110,7 @@ func (s *Set) Parse(text string) (set *Set, err os.Error) {
...
@@ -110,7 +110,7 @@ func (s *Set) Parse(text string) (set *Set, err os.Error) {
t
.
startParse
(
s
,
lex
)
t
.
startParse
(
s
,
lex
)
// Expect EOF or "{{ define name }}".
// Expect EOF or "{{ define name }}".
if
t
.
atEOF
()
{
if
t
.
atEOF
()
{
return
return
nil
,
err
}
}
t
.
expect
(
itemLeftDelim
,
context
)
t
.
expect
(
itemLeftDelim
,
context
)
t
.
expect
(
itemDefine
,
context
)
t
.
expect
(
itemDefine
,
context
)
...
...
src/pkg/exp/template/set_test.go
View file @
3dbe10c4
...
@@ -103,7 +103,8 @@ const setText2 = `
...
@@ -103,7 +103,8 @@ const setText2 = `
func
TestSetExecute
(
t
*
testing
.
T
)
{
func
TestSetExecute
(
t
*
testing
.
T
)
{
// Declare a set with a couple of templates first.
// Declare a set with a couple of templates first.
set
,
err
:=
new
(
Set
)
.
Parse
(
setText1
)
set
:=
new
(
Set
)
_
,
err
:=
set
.
Parse
(
setText1
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing set: %s"
,
err
)
t
.
Fatalf
(
"error parsing set: %s"
,
err
)
}
}
...
@@ -115,7 +116,8 @@ func TestSetExecute(t *testing.T) {
...
@@ -115,7 +116,8 @@ func TestSetExecute(t *testing.T) {
}
}
func
TestSetParseFile
(
t
*
testing
.
T
)
{
func
TestSetParseFile
(
t
*
testing
.
T
)
{
set
,
err
:=
new
(
Set
)
.
ParseFile
(
"DOES NOT EXIST"
)
set
:=
new
(
Set
)
_
,
err
:=
set
.
ParseFile
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
...
@@ -127,7 +129,8 @@ func TestSetParseFile(t *testing.T) {
...
@@ -127,7 +129,8 @@ func TestSetParseFile(t *testing.T) {
}
}
func
TestParseSetFile
(
t
*
testing
.
T
)
{
func
TestParseSetFile
(
t
*
testing
.
T
)
{
set
,
err
:=
ParseSetFile
(
"DOES NOT EXIST"
)
set
:=
new
(
Set
)
_
,
err
:=
ParseSetFile
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
...
@@ -139,15 +142,15 @@ func TestParseSetFile(t *testing.T) {
...
@@ -139,15 +142,15 @@ func TestParseSetFile(t *testing.T) {
}
}
func
TestSetParseFiles
(
t
*
testing
.
T
)
{
func
TestSetParseFiles
(
t
*
testing
.
T
)
{
set
,
err
:=
new
(
Set
)
.
ParseFiles
(
"DOES NOT EXIST"
)
_
,
err
:=
new
(
Set
)
.
ParseFiles
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
_
,
err
=
set
.
ParseFiles
(
"[x"
)
_
,
err
=
new
(
Set
)
.
ParseFiles
(
"[x"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for bad pattern; got none"
)
t
.
Error
(
"expected error for bad pattern; got none"
)
}
}
_
,
err
=
set
.
ParseFiles
(
"testdata/file*.tmpl"
)
set
,
err
:=
new
(
Set
)
.
ParseFiles
(
"testdata/file*.tmpl"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
}
}
...
@@ -155,15 +158,15 @@ func TestSetParseFiles(t *testing.T) {
...
@@ -155,15 +158,15 @@ func TestSetParseFiles(t *testing.T) {
}
}
func
TestParseSetFiles
(
t
*
testing
.
T
)
{
func
TestParseSetFiles
(
t
*
testing
.
T
)
{
set
,
err
:=
ParseSetFiles
(
"DOES NOT EXIST"
)
_
,
err
:=
ParseSetFiles
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
set
,
err
=
ParseSetFiles
(
"[x"
)
_
,
err
=
ParseSetFiles
(
"[x"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for bad pattern; got none"
)
t
.
Error
(
"expected error for bad pattern; got none"
)
}
}
set
,
err
=
ParseSetFiles
(
"testdata/file*.tmpl"
)
set
,
err
:
=
ParseSetFiles
(
"testdata/file*.tmpl"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
}
}
...
@@ -175,11 +178,11 @@ var templateFileExecTests = []execTest{
...
@@ -175,11 +178,11 @@ var templateFileExecTests = []execTest{
}
}
func
TestSetParseTemplateFile
(
t
*
testing
.
T
)
{
func
TestSetParseTemplateFile
(
t
*
testing
.
T
)
{
set
,
err
:=
ParseTemplateFile
(
"DOES NOT EXIST"
)
_
,
err
:=
ParseTemplateFile
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
_
,
err
=
set
.
ParseTemplateFile
(
"testdata/tmpl1.tmpl"
,
"testdata/tmpl2.tmpl"
)
set
,
err
:=
new
(
Set
)
.
ParseTemplateFile
(
"testdata/tmpl1.tmpl"
,
"testdata/tmpl2.tmpl"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
}
}
...
@@ -187,11 +190,11 @@ func TestSetParseTemplateFile(t *testing.T) {
...
@@ -187,11 +190,11 @@ func TestSetParseTemplateFile(t *testing.T) {
}
}
func
TestParseTemplateFile
(
t
*
testing
.
T
)
{
func
TestParseTemplateFile
(
t
*
testing
.
T
)
{
set
,
err
:=
ParseTemplateFile
(
"DOES NOT EXIST"
)
_
,
err
:=
ParseTemplateFile
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
set
,
err
=
ParseTemplateFile
(
"testdata/tmpl1.tmpl"
,
"testdata/tmpl2.tmpl"
)
set
,
err
:=
new
(
Set
)
.
ParseTemplateFile
(
"testdata/tmpl1.tmpl"
,
"testdata/tmpl2.tmpl"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
}
}
...
@@ -199,15 +202,15 @@ func TestParseTemplateFile(t *testing.T) {
...
@@ -199,15 +202,15 @@ func TestParseTemplateFile(t *testing.T) {
}
}
func
TestSetParseTemplateFiles
(
t
*
testing
.
T
)
{
func
TestSetParseTemplateFiles
(
t
*
testing
.
T
)
{
set
,
err
:=
ParseTemplateFiles
(
"DOES NOT EXIST"
)
_
,
err
:=
ParseTemplateFiles
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
_
,
err
=
set
.
ParseTemplateFiles
(
"[x"
)
_
,
err
=
new
(
Set
)
.
ParseTemplateFiles
(
"[x"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for bad pattern; got none"
)
t
.
Error
(
"expected error for bad pattern; got none"
)
}
}
_
,
err
=
set
.
ParseTemplateFiles
(
"testdata/tmpl*.tmpl"
)
set
,
err
:=
new
(
Set
)
.
ParseTemplateFiles
(
"testdata/tmpl*.tmpl"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
}
}
...
@@ -215,15 +218,15 @@ func TestSetParseTemplateFiles(t *testing.T) {
...
@@ -215,15 +218,15 @@ func TestSetParseTemplateFiles(t *testing.T) {
}
}
func
TestParseTemplateFiles
(
t
*
testing
.
T
)
{
func
TestParseTemplateFiles
(
t
*
testing
.
T
)
{
set
,
err
:=
ParseTemplateFiles
(
"DOES NOT EXIST"
)
_
,
err
:=
ParseTemplateFiles
(
"DOES NOT EXIST"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for non-existent file; got none"
)
t
.
Error
(
"expected error for non-existent file; got none"
)
}
}
set
,
err
=
ParseTemplateFiles
(
"[x"
)
_
,
err
=
ParseTemplateFiles
(
"[x"
)
if
err
==
nil
{
if
err
==
nil
{
t
.
Error
(
"expected error for bad pattern; got none"
)
t
.
Error
(
"expected error for bad pattern; got none"
)
}
}
set
,
err
=
ParseTemplateFiles
(
"testdata/tmpl*.tmpl"
)
set
,
err
:
=
ParseTemplateFiles
(
"testdata/tmpl*.tmpl"
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
t
.
Fatalf
(
"error parsing files: %v"
,
err
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment