forked from TrueCloudLab/neoneo-go
852e6a335b
It really deserves it, I think. Especially given that it doesn't have any direct usage of `vm` package now.
53 lines
970 B
Go
53 lines
970 B
Go
package compiler_test
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
|
|
"github.com/CityOfZion/neo-go/pkg/compiler"
|
|
)
|
|
|
|
const examplePath = "../../examples"
|
|
|
|
func TestExamplesFolder(t *testing.T) {
|
|
infos, err := ioutil.ReadDir(examplePath)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for _, info := range infos {
|
|
infos, err := ioutil.ReadDir(path.Join(examplePath, info.Name()))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(infos) == 0 {
|
|
t.Fatal("detected smart contract folder with no contract in it")
|
|
}
|
|
|
|
filename := filterFilename(infos)
|
|
targetPath := path.Join(examplePath, info.Name(), filename)
|
|
if err := compileFile(targetPath); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func filterFilename(infos []os.FileInfo) string {
|
|
for _, info := range infos {
|
|
if !info.IsDir() {
|
|
return info.Name()
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func compileFile(src string) error {
|
|
file, err := os.Open(src)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = compiler.Compile(file)
|
|
return err
|
|
}
|