-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
all: add test that compare the generated Go code
For each test cases in "internal/tests" we save the current generated Go code with ".exp" extension and compare them with the new generated Go code. This is to check the consistency of generated Go code in the future changes.
- Loading branch information
Showing
27 changed files
with
5,061 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,21 @@ | ||
/cmd/go-bindata/cover.out | ||
/cmd/go-bindata/go-bindata | ||
/cover.html | ||
/cover.out | ||
/go-bindata | ||
cover.html | ||
cover.out | ||
lib.cover.out | ||
testdata/out/ | ||
/internal/tests/inputDir/bindata.go | ||
/internal/tests/inputDirRecursive/bindata.go | ||
/internal/tests/inputDuplicateDir/bindata.go | ||
/internal/tests/inputDuplicateFile/bindata.go | ||
/internal/tests/inputFile/bindata.go | ||
/internal/tests/inputSymlinkRecursive/bindata.go | ||
/internal/tests/inputSymlinkToDir/bindata.go | ||
/internal/tests/inputSymlinkToFile/bindata.go | ||
/internal/tests/withDebug/bindata.go | ||
/internal/tests/withNoCompress/bindata.go | ||
/internal/tests/withNoCompressNoMemCopy/bindata.go | ||
/internal/tests/withNoMemCopy/bindata.go | ||
/internal/tests/withSplit/bindata.go | ||
/internal/tests/withSplit/bindataInSplitTest1.go | ||
/internal/tests/withSplit/bindataInSplitTest2.go | ||
/internal/tests/withoutOutputFlag/bindata.go |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,309 @@ | ||
// Code generated by go-bindata. DO NOT EDIT. | ||
// sources: | ||
// ../../../testdata/in/file name | ||
// ../../../testdata/in/test.asset | ||
|
||
package bindata | ||
|
||
|
||
import ( | ||
"bytes" | ||
"compress/gzip" | ||
"fmt" | ||
"io" | ||
"io/ioutil" | ||
"os" | ||
"path/filepath" | ||
"strings" | ||
"time" | ||
) | ||
|
||
func bindataRead(data []byte, name string) ([]byte, error) { | ||
gz, err := gzip.NewReader(bytes.NewBuffer(data)) | ||
if err != nil { | ||
return nil, fmt.Errorf("Read %q: %v", name, err) | ||
} | ||
|
||
var buf bytes.Buffer | ||
_, err = io.Copy(&buf, gz) | ||
clErr := gz.Close() | ||
|
||
if err != nil { | ||
return nil, fmt.Errorf("Read %q: %v", name, err) | ||
} | ||
if clErr != nil { | ||
return nil, err | ||
} | ||
|
||
return buf.Bytes(), nil | ||
} | ||
|
||
|
||
type asset struct { | ||
bytes []byte | ||
info fileInfoEx | ||
} | ||
|
||
type fileInfoEx interface { | ||
os.FileInfo | ||
MD5Checksum() string | ||
} | ||
|
||
type bindataFileInfo struct { | ||
name string | ||
size int64 | ||
mode os.FileMode | ||
modTime time.Time | ||
md5checksum string | ||
} | ||
|
||
func (fi bindataFileInfo) Name() string { | ||
return fi.name | ||
} | ||
func (fi bindataFileInfo) Size() int64 { | ||
return fi.size | ||
} | ||
func (fi bindataFileInfo) Mode() os.FileMode { | ||
return fi.mode | ||
} | ||
func (fi bindataFileInfo) ModTime() time.Time { | ||
return fi.modTime | ||
} | ||
func (fi bindataFileInfo) MD5Checksum() string { | ||
return fi.md5checksum | ||
} | ||
func (fi bindataFileInfo) IsDir() bool { | ||
return false | ||
} | ||
func (fi bindataFileInfo) Sys() interface{} { | ||
return nil | ||
} | ||
|
||
var _bindataInFilename = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd2\xd7\x57\x70\xce\xcf\x2b\x49\xcd\x2b\x51\xc8\x4f\x53\x50\x2a\x49\x2d\x2e\x49\x49\x2c\x49\xd4\xcf\xcc\xd3\x4f\xcb\xcc\x49\x55\xc8\x4b\xcc\x4d\x55\xe2\x02\x04\x00\x00\xff\xff\x3d\xa5\x6b\x08\x26\x00\x00\x00") | ||
|
||
func bindataInFilenameBytes() ([]byte, error) { | ||
return bindataRead( | ||
_bindataInFilename, | ||
"in/file name", | ||
) | ||
} | ||
|
||
|
||
|
||
func bindataInFilename() (*asset, error) { | ||
bytes, err := bindataInFilenameBytes() | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
info := bindataFileInfo{ | ||
name: "in/file name", | ||
size: 38, | ||
md5checksum: "", | ||
mode: os.FileMode(420), | ||
modTime: time.Unix(1586263518, 0), | ||
} | ||
|
||
a := &asset{bytes: bytes, info: info} | ||
|
||
return a, nil | ||
} | ||
|
||
var _bindataInTestasset = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd2\xd7\x57\x28\x4e\xcc\x2d\xc8\x49\x55\x48\xcb\xcc\x49\xe5\x02\x04\x00\x00\xff\xff\x8a\x82\x8c\x85\x0f\x00\x00\x00") | ||
|
||
func bindataInTestassetBytes() ([]byte, error) { | ||
return bindataRead( | ||
_bindataInTestasset, | ||
"in/test.asset", | ||
) | ||
} | ||
|
||
|
||
|
||
func bindataInTestasset() (*asset, error) { | ||
bytes, err := bindataInTestassetBytes() | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
info := bindataFileInfo{ | ||
name: "in/test.asset", | ||
size: 15, | ||
md5checksum: "", | ||
mode: os.FileMode(420), | ||
modTime: time.Unix(1586263518, 0), | ||
} | ||
|
||
a := &asset{bytes: bytes, info: info} | ||
|
||
return a, nil | ||
} | ||
|
||
|
||
// | ||
// Asset loads and returns the asset for the given name. | ||
// It returns an error if the asset could not be found or | ||
// could not be loaded. | ||
// | ||
func Asset(name string) ([]byte, error) { | ||
cannonicalName := strings.Replace(name, "\\", "/", -1) | ||
if f, ok := _bindata[cannonicalName]; ok { | ||
a, err := f() | ||
if err != nil { | ||
return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) | ||
} | ||
return a.bytes, nil | ||
} | ||
return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} | ||
} | ||
|
||
// | ||
// MustAsset is like Asset but panics when Asset would return an error. | ||
// It simplifies safe initialization of global variables. | ||
// nolint: deadcode | ||
// | ||
func MustAsset(name string) []byte { | ||
a, err := Asset(name) | ||
if err != nil { | ||
panic("asset: Asset(" + name + "): " + err.Error()) | ||
} | ||
|
||
return a | ||
} | ||
|
||
// | ||
// AssetInfo loads and returns the asset info for the given name. | ||
// It returns an error if the asset could not be found or could not be loaded. | ||
// | ||
func AssetInfo(name string) (os.FileInfo, error) { | ||
cannonicalName := strings.Replace(name, "\\", "/", -1) | ||
if f, ok := _bindata[cannonicalName]; ok { | ||
a, err := f() | ||
if err != nil { | ||
return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) | ||
} | ||
return a.info, nil | ||
} | ||
return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} | ||
} | ||
|
||
// | ||
// AssetNames returns the names of the assets. | ||
// nolint: deadcode | ||
// | ||
func AssetNames() []string { | ||
names := make([]string, 0, len(_bindata)) | ||
for name := range _bindata { | ||
names = append(names, name) | ||
} | ||
return names | ||
} | ||
|
||
// | ||
// _bindata is a table, holding each asset generator, mapped to its name. | ||
// | ||
var _bindata = map[string]func() (*asset, error){ | ||
"in/file name": bindataInFilename, | ||
"in/test.asset": bindataInTestasset, | ||
} | ||
|
||
// | ||
// AssetDir returns the file names below a certain | ||
// directory embedded in the file by go-bindata. | ||
// For example if you run go-bindata on data/... and data contains the | ||
// following hierarchy: | ||
// data/ | ||
// foo.txt | ||
// img/ | ||
// a.png | ||
// b.png | ||
// then AssetDir("data") would return []string{"foo.txt", "img"} | ||
// AssetDir("data/img") would return []string{"a.png", "b.png"} | ||
// AssetDir("foo.txt") and AssetDir("notexist") would return an error | ||
// AssetDir("") will return []string{"data"}. | ||
// | ||
func AssetDir(name string) ([]string, error) { | ||
node := _bintree | ||
if len(name) != 0 { | ||
cannonicalName := strings.Replace(name, "\\", "/", -1) | ||
pathList := strings.Split(cannonicalName, "/") | ||
for _, p := range pathList { | ||
node = node.Children[p] | ||
if node == nil { | ||
return nil, &os.PathError{ | ||
Op: "open", | ||
Path: name, | ||
Err: os.ErrNotExist, | ||
} | ||
} | ||
} | ||
} | ||
if node.Func != nil { | ||
return nil, &os.PathError{ | ||
Op: "open", | ||
Path: name, | ||
Err: os.ErrNotExist, | ||
} | ||
} | ||
rv := make([]string, 0, len(node.Children)) | ||
for childName := range node.Children { | ||
rv = append(rv, childName) | ||
} | ||
return rv, nil | ||
} | ||
|
||
|
||
type bintree struct { | ||
Func func() (*asset, error) | ||
Children map[string]*bintree | ||
} | ||
|
||
var _bintree = &bintree{Func: nil, Children: map[string]*bintree{ | ||
"in": {Func: nil, Children: map[string]*bintree{ | ||
"file name": {Func: bindataInFilename, Children: map[string]*bintree{}}, | ||
"test.asset": {Func: bindataInTestasset, Children: map[string]*bintree{}}, | ||
}}, | ||
}} | ||
|
||
// RestoreAsset restores an asset under the given directory | ||
func RestoreAsset(dir, name string) error { | ||
data, err := Asset(name) | ||
if err != nil { | ||
return err | ||
} | ||
info, err := AssetInfo(name) | ||
if err != nil { | ||
return err | ||
} | ||
err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) | ||
if err != nil { | ||
return err | ||
} | ||
err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) | ||
if err != nil { | ||
return err | ||
} | ||
return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) | ||
} | ||
|
||
// RestoreAssets restores an asset under the given directory recursively | ||
func RestoreAssets(dir, name string) error { | ||
children, err := AssetDir(name) | ||
// File | ||
if err != nil { | ||
return RestoreAsset(dir, name) | ||
} | ||
// Dir | ||
for _, child := range children { | ||
err = RestoreAssets(dir, filepath.Join(name, child)) | ||
if err != nil { | ||
return err | ||
} | ||
} | ||
return nil | ||
} | ||
|
||
func _filePath(dir, name string) string { | ||
cannonicalName := strings.Replace(name, "\\", "/", -1) | ||
return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) | ||
} |
Oops, something went wrong.